Instant Bank Transfer
Learn how to accept open banking payments
Open banking is also known as "open bank data." Open banking is a banking practice that provides third-party financial service providers open access to consumer banking, transaction, and other financial data from banks and non-bank financial institutions through the use of application programming interfaces (APIs).
You can now accept SEPA bank transfers from European banks from your customer using our new OpenBanking PIS API.
Specifics
-
Lower transaction fees
-
Accessible to customers who do not have a credit card/debit card
-
No Chargebacks as payment is initiated by customer and complies with PSD2 SCA
-
No instant final confirmation of funds, sometimes final confirmation can take 3-4 days
-
Payment guarantee only after final confirmation notification
Payment type | Bank transfer |
Market | Austria, Belgium, Germany, Estonia, Spain, France, Hungary, Italy, Latvia, Lithuania, Luxembourg, Netherlands, Poland, Portugal |
Customer currencies | EUR, GBP |
Processing currencies | EUR, GBP |
Refunds | No |
Your customer based on the country you send in the request is presented with a list of the supported banks. Once the bank is selected, the customer is redirected to log in to their Online Banking system.
The customer then complying with PSD2 SCA authorizes a SEPA bank transfer to our bank account.
General flow
POST Request -> to /payment_preauthorize
<- Response (direct, synchronous) with status=2000&errormessage=pending and redirect_url
Customer is redirected to redirect_url (Open banking URL)
<- Callback (asynchronous) with errorcode=0&payment_state=not_credited_yet to notification_url
<- Callback (asynchronous) with errorcode=0&payment_state=credited to notification_url
Customer flow
The customer needs to select the country and the bank he plans to use.
After the user will see payment information that he needs to confirm
The widget will display the status of the transaction.
Step 1. Make a transaction request
From your server, make a POST /payment_preauthorize request.
POST https://sandbox.payabl.com/pay/backoffice/payment_preauthorize
The process flow of this payment system is the same as the 3DSecure transaction procedure. Please note the following exceptions:
- For open banking transactions, we don’t need
param_3d
parameter. - The redirect URL is provided in redirect_url, instead of
url_3ds
(used in step 2 and step 3) - Only Pre-Authorization interface should be used for sending transactions.
- Merchant would be notified on the notification URL about the accepted, success and the failed transaction, capture may remain in the accepted state until
credited
ornot_credited
notification has been received from the - Please pay special attention to the following pre-authorization interface parameters:
Parameter | Format | Description |
---|---|---|
merchantid | 40 characters | Merchant identification number assigned during account creation |
orderid | max. 40 characters | The field orderid is optional and exclusively for the merchants' convenience |
amount | digits only, either no decimals or two decimal places (e.g. 8 or 8.50) | Transaction’s total amount that will be deducted from the customer |
currency | 3 characters. ISO 4217 | The currency field contains the alpha-3 currency code for the transaction. Links to ISO |
payment_method | 123 | payabl. Payment methods IDs |
signature | 40 characters | Signature Calculation |
email | max. 50 characters | Customer email. An RFC 822 compliant email address |
firstname | max. 50 characters | First name of the customer |
lastname | max. 50 characters | Last name of the customer |
url_success | max. 255 characters starting with http or https | Success transaction URL |
url_failed | max. 255 characters starting with http or https | Failed transaction URL |
url_return | max. 255 characters starting with http or https | URL for customer redirection |
You can see a full list of parameters in Pre-Authorization.
Request example:
merchantid=gateway_test&orderid=Payabl-Test&amount=19.99¤cy=EUR&payment_method=123&language=en&customerip=2.22.75.244&[email protected]&
firstname=John&lastname=Doe&zip=60314&street=Hanauer Landstrasse&house=182c&city=Frankfurt am Main&country=DEU&url_return=https://yourshop.example/thank_you&
notification_url=https://yourshop.example/notification&url_success=https://yourshop.example/payment_successful&url_failed=https://yourshop.example/
payment_failed&signature=54f70ca0382d3cb61d9902caa5d6c2dc487a9c3d
Public Sandbox information
Do not use your personal email address, Order ID with sensitive information, real customer details and credit card data in the public Sandbox. For email field you may use [email protected].
Redirection to
url_return
does not confirm that the transaction is successful. Always check the transaction vianotification_url
or use the diagnose interface to get the final status of the transaction.
Step 2. Handle the redirect
To complete the payment, you need to redirect the customer to the correct URL in the response.
Response example:
transactionid=104576829&transid=104576829&status=2000&errormessage=pending&errmsg=pending&amount=19.99&price=19.99¤cy=EUR&orderid=Payabl-Test&
payment_method=123&redirect_url=https%3A%2F%2Fweb-app.sandbox.token.io%2Fapp%2Frequest-token%2Frq%3Atv4j5aD35f3kpvEyn6WRBaUgMyu%3A5zKtXEAq&user_id=505102
Response fields reference:
Parameter | Description |
---|---|
transactionid | payabl. internal transaction id. Please use this transaction id when referring to the transaction in communications with the payabl. team |
transid | The same as transactionid |
status | Transaction error code |
errormessage | Brief explanation of transaction decline reason (empty on success) |
errmsg | The same as errormessage |
amount | Transaction amount |
price | The same as amount |
currency | Transaction currency |
payment_method | Payment method ID |
orderid | Optional transaction identifier given by the merchant |
redirect_url | URL for customer redirection to finalize the payment (URL encoded) |
user_id | Payment system user identifier |
Step 3. Receive the final status
When the customer finished or canceled the payment, he will be redirected back to url_return
, provided by you in the initial request to payment_preauthorize
. After that, you will receive a notification, posted to notification_url
, with the final transaction status, which you are supposed to use to update your system.
Notification URL can be configured by our tech support team in your account on our side,
or you can send it as a parameternotification_url
in the initial request topayment_preauthorize
.
payabl. contains an additional notification parameter which is payment_state
, which could contain the following values:
not_credited_yet
: Capture - Accepted.credited
: Capture - Successful.not_credited
: Capture - Failed.
Each state change would trigger a notification to the notification URL. The notification URL is the URL that was provided when the merchant account was created.
You will receive a notification from payabl. regarding the status update of the transaction. If payabl. received funds from the issuer for the transaction you will get the appropriate notification.
Notification example - Accepted Capture:
payment_method=123&bank_number=&orderid=Payabl-Test&payment_state=not_credited_yet&type=capture&errorcode=0×tamp=1660057537&
errormessage=&security=081969470be36b8248858d40616fdf8c906c7f1ae248871ab74a365ea34e81ff&transactionid=104576829
Notification example - Successful Capture
payment_method=123&bank_number=&orderid=Payabl-Test&payment_state=credited&type=capture&errorcode=0×tamp=1660059656&
errormessage=&security=a441b15fe9a3cf56661190a0b93b9dec7d04127288cc87250967cf3b52894d11&transactionid=104576829
Notification fields reference:
Parameter | Description |
---|---|
transactionid | payabl. internal transaction id. Please use this transaction id when referring to the transaction in communications with the payabl. team |
payment_method | Payment method ID |
type | Transaction type |
errorcode | Transaction error code (0 for success) |
errormessage | Brief explanation of transaction decline reason (empty on success) |
amount | Transaction amount |
orderid | Optional transaction identifier given by the merchant |
security | Signature to verify the authenticity of the notification. You can find more information here |
timestamp | Notification timestamp |
payment_state | Transaction acceptance state as described above |
In case 15 days pass and payabl. didn't receive any funds from an issuer, the transaction will be failed automatically. You will receive a notification update.
Our Technical Support team is there to help you:
Email: [email protected]
Available Monday – Friday between 09:00 and 17:00 CET/CEST
Updated about 1 year ago