# Overview

You put a lot of effort into making sure your customers are able to find what they need on your website. Your customers' decision to make a purchase often depends on whether they can use their preferred payment method. Straal offers a myriad of options to help you let them use the payment method of their choice.

In this section you will learn about:

  • creating and using objects representing credit and debit cards
  • working with bank accounts

# Cards

Credit and debit cards are one of the most popular e-payment methods. With Straal solutions, you can quickly and securely accept payments made with cards of all major schemes and in more than 150 currencies.

You can use credit and debit cards for a variety of payments, all supported by Straal:

  • one-shot payments
  • one-click payments
  • subscriptions, charged automatically
  • POS payment in your offline shop

We accept cards from the following card schemes:

Logos of the following card schemes: MasterCard, VISA, Maestro, JCB, UnionPay, Discover, AMEX, Cartes Bancaires, Dankort (DK) and Diners Club

Supported Currencies

Straal supports over 150 different payment currencies and over 10 settlement currencies:

Currency type SWIFT code
Settlement currencies EUR, USD, GBP, PLN, CAD, CHF, HUF, SEK, NZD, NOK, DKK, HKD, AUD, JPY, HRK, TRY, CZK, RON, ZAR, SGD
Payment currencies AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTN, BWP, BYR, BZD, CAD, CDF, CHF, CLP, CNY, COP, CRC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, INR, IQD, IRR, ISK, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XCD, XOF, XPF, YER, ZAR, ZMW, ZWD

The specific list will depend on your setup. To talk about details, consult our Sales Team

Use case – adding a card

If you want to use a card in a one-click or a recurring transaction, you need to create a card object in Straal. It also makes it easier to use cards in later transactions, because you can use the card's ID instead of its details.

If you wish to use the Straal API to add a card, you need to send a POST request to API endpoint /customers/:customer_id/cards, where :customer_id needs to be substituted with the customer's ID (see [APIref: Create a card (https://api-reference.straal.com/#resources-cards-create-a-card)). In case of new customers, you will have to create a customer object first (see APIref: Create a customer).

Sample request

{
  "name": "John Smith",
  "number": "4111111111111111",
  "cvv": "123",
  "expiry_month": 11,
  "expiry_year": 2018,
  "origin_ipaddr": "91.17.133.219"
}

To see a sample response, see APIref: Create a card. To learn more about working with cards, see APIref: Cards.

# SEPA Direct Debit Transfers

SEPA Direct Debit Transfers enjoy a particular popularity in the Eurozone, as they're used to transfer money easily between bank accounts denominated in Euro. The service is available in 34 SEPA Union countries.

Carrying out a payment is like using a credit card:

  • Transfers are performed entirely within the banking system.
  • Your customers simply enter the IBAN into the form and authorize the transaction.

Use case – adding a bank account

All the customer needs in order to initiate a SEPA Direct Debit payment is the account owner's name, their International Bank Account Number (IBAN) and Business Identifier Code (BIC, also known as a SWIFT code).

To create a SEPA payment, you first need to create a bank_account object in Straal. This way, you won't have to provide the account's full details, just its ID.

If you wish to use the Straal API, you'll need to send a POST request to API endpoint /customers/:customer_id/bank_accounts, where :customer_id needs to be substituted with your customer's ID (see APIref: Create a bank account). In case of new customers, you will have to create a customer object first (see APIref: Create a customer)

Sample request:

{
  "name": "John Smith",
  "iban": "DE89370400440532013000",
  "bic": "COBADEFFXXX",
  "origin_ipaddr": "91.17.133.219",
}

To see a sample response, see APIref: Create a bank account.

Learn how to perform a SEPA transfer: APIref: Create a transaction for a bank account.

Simple and secure, Pay-By-Link transfers are some of the most demanded payment methods in Poland. The transfers enable easy and nearly instant payments without the need to share one’s card or bank account details with third parties:

  • customers carry out payments by simply logging in through their e-banking platforms
  • transfer forms are filled out automatically
  • the transfer requires a simple authorization from the customer by SMS

Straal enables accepting Pay-By-Link transfers from customers with accounts in most of the Polish banks.

Use case – creating a pay-by-link payment

To make a pay-by-link payment you have to do the following steps:

  1. Fetch Pay-By-Link payment methods that you should show to the end user
  2. Create a customer object for the end user
  3. Send a payment request
  4. Redirect the end user to the URL that you received in response to the payment request
  5. Handle the notification you receive after the payment success/failure
1. Fetching Pay-By-Link payment methods

To fetch Pay-By-Link payment methods you have to make a GET request to /payment_methods endpoint.

It is possible to filter payment methods using query string arguments.

For technical details, see APIref: Get the list of payment methods.

2. Creating a customer

Pay-by-link payments are created for an existing customer, so if you have already created a customer, you can skip this step.

For technical details, see APIref: Creating a customer.

3. Creating a pay-by-link payment

When the end user chooses a payment method, you should send the payment method identifier along with the fields describing the pay-by-link payment flow to /customers/{customer_id}/pay_by_link_payments.

For technical details, see APIref: Creating a pay-by-link-payment.

4. Redirecting the end user

You should redirect the end user to the redirect_url obtained from the pay_by_link_payment response.

5. Receiving notification

After payment, you will receive a pay_by_link_payment_succeeded or pay_by_link_payment_failed notification. The notification data contains a transaction object that has a pay_by_link_payment object in it. You can match notification with object created in step 3. using pay_by_link_payment id field. Information from notification should be used to update payment status in your system.

Read more about Straal notifications: Notifications.

For technical details, see APIref: pay_by_link_payment_succeeded notification and APIref: pay_by_link_payment_failed notification.

# Straal Direct Payments

# Introduction

This guide will help you integrate Straal Direct Payments into your application. With Straal Direct you can accept direct consumer-to-merchant bank transfers that ensure secure, free of intermediaries payments.

# About Straal Direct

Straal Direct is a payment method utilising direct (consumer to merchant) bank transfers based on Payment Initiation APIs provided by banks. It is asynchronous, meaning that the final status of the transaction is known, when funds arrive at the destination bank account, not instantly upon completion of the payment initiation.

# Important information

  • Successfully initiating the Straal Direct Payment does not guarantee a successful transfer of money between the customer and the merchant account in some markets. Please consult our sales representatives to understand if this affects your integration. This issue is caused by the fact that in some banks (especially in Germany) the customer can cancel the transfer before it is completed.

  • It is advised to have additional checks in place before fulfilling the order, such as:

    • Delaying order fulfillment until funds have been submitted to the transfer queue (i.e. SEPA, Faster Payments, etc.).
    • Connecting to your merchant bank API to check if the transfer was received.
    • Limiting the number of subsequent transactions a new customer can perform using Straal Direct based on your KYC.
    • Having a manual reconciliation practice in place.
  • As banks migrate their APIs to new versions this issue will become less prevalent and will be resolved after PSD2 grace period ends.

# Example Straal Direct Payment flow

This is a generic eCommerce example but can be easily adapted to fit different use cases (mobile apps, account top ups, etc.).

Step Customer perspective Integration with Straal
1 Customer visits your website and proceeds to make a purchase. Then chooses “Direct bank transfer” as a payment option. Create a customer in our API.
2 Customer clicks on the “Pay” button. Initialize a Straal Direct payment on the customer you have created in Step 1.
3 Straal API will respond with a redirect URL.
4 Customer is redirected to the Straal Direct checkout page. Redirect the customer to the provided URL.
5 Customer selects his bank, enters login details and confirms the payment initiation, completing the flow.
6 Customer is redirected back to the Straal confirmation page with the status of the payment. Straal sends you a notification about the success or failure of the payment initiation. Handle the notification and update order status accordingly.
7 Customer is redirected back to your website.
8 Once you confirm that funds arrived on your merchant account you can proceed to fulfill the order. (We are looking into a solution where Straal sends you the IBAN and name of the customer to make it easier to reconcile the payments. Please contact us for more details.)

What you can do next:


Remember you can consult our comprehensive API Reference at any moment.

For help with payments vocabulary, head to our glossary.

You can reach us by e-mail. IT Support: [email protected], Support Team: [email protected].