SEPA Direct Debit
Learn how to accept SEPA Direct Debit collections.
SEPA Direct Debit is a method of recurring collections from a consumer's bank account. It provides the ease of collection of funds for subscription and membership payments, enabling the consumer to pre-authorize a mandate for the recurring collections and automating the pull of funds from their bank account.
Payment type | Bank transfer / Recurring |
Market | SEPA Direct Debit participating markets |
Customer currencies | EUR |
Processing currencies | EUR |
Refunds | No |
General flow
POST Request -> to /payment_preauthorize
<- Callback (asynchronous) with errorcode=0&payment_state=not_credited_yet to notification_url
<- Callback (asynchronous) with errorcode=0&payment_state=credited to notification_url
For initial 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
Include in request:
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 Only EUR supported. |
payment_method | 139 | payabl. Payment methods IDs |
signature | 40 characters | Signature Calculation |
recurring_id | max. 40 characters | ID of the recurring transactions. --> For initial transaction: INIT --> For subsequent transaction: transactionid of the initial transaction |
iban | between 4-35 digits; alphanumerical | Customer IBAN; Required only if consent_type = check_to_sign |
consent_type | either check_to_sign or deposit | To use either the check-to-sign feature or prompt user to verify themselves via deposit (PIS or manual). |
order_item | max. 255 characters | The item/service for which the subscription is set up. |
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 | URL for customer redirection to success page |
url_failed | max. 255 characters starting with http or https | URL for customer redirection to failed page |
url_return | max. 255 characters starting with http or https | URL for general customer redirection |
notification_url | max. 255 characters starting with http or https | URL for posting notifications for promotion of transaction status |
You can see a full list of parameters in [Pre-Authorization]
Request example - initial transaction:
amount=1.23¤cy=EUR&language=en&merchantid=gateway_test&orderid=Payabl-Test&payment_method=139&recurring_id=INIT&iban=DE95500500005000002096&consent_type=check_to_sign&email=Payabl-Test%40gmail.com&order_item=orderitem&url_success=https%3A%2F%2Fwww.your-success-url.com&url_return=https%3A%2F%2Fwww.your-return-url.com&url_failed=https%3A%2F%2Fwww.your-failed-url.com¬ification_url=https%3A%2F%2Fwww.your-notification-url.com
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 response
To complete the payment, you need to redirect the customer to the correct URL in the response.
Response example:
transactionid=215819134&transid=215819134&status=2000&errormessage=pending&errmsg=pending&amount=1.23&price=1.23¤cy=EUR&orderid=Payabl-Test&user_id=2046112
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
.
Notification example - Accepted Capture:
orderid=Payabl-Test&account_number=BEXXXXXXXXXX9770&transactionid=106216675&payment_method=139&errorcode=0&errormessage=&account_holder=TEST+DDD+Creditor&type=capture&payment_state=credited&security=b1faeb7a1a7020288e3cb92660bb3f5fa37901b2b1f706fe3dedec43862bf9dd×tamp=1746704782
Notification example - Failed Capture:
transactionid=106216676&security=eb5329a5045eb93c56858ebe1d46f79df7b72dd513d5f666522d17b30b6e7402&payment_method=139&errormessage=Bank+rejected+payment&account_number=BEXXXXXXXXXX9770&account_holder=TEST+DDD+Creditor&payment_state=not_credited&orderid=Payabl-Test&errorcode=-5016×tamp=1746705313&type=capture
For recurring 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
Include in request:
You can see a full list of parameters in [Pre-Authorization]
Request example - recurring transaction:
amount=1.23¤cy=EUR&language=en&merchantid=gateway_test&payment_method=139&recurring_id=215819132&email=Payabl-Test%40gmail.com&url_success=https%3A%2F%2Fwww.your-success-url.com&url_return=https%3A%2F%2Fwww.your-return-url.com&url_failed=https%3A%2F%2Fwww.your-failed-url.com¬ification_url=https%3A%2F%2Fwww.your-notification-url.com
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=215819137&transid=215819137&status=2000&errormessage=pending&errmsg=pending&amount=1.23&price=1.23¤cy=EUR&orderid=Payabl-Test&user_id=2046112
Step 3. Receive the final status
Notification example - Accepted Capture:
orderid=Payabl-Test&account_number=BEXXXXXXXXXX9770&transactionid=106216675&payment_method=139&errorcode=0&errormessage=&account_holder=TEST+DDD+Creditor&type=capture&payment_state=credited&security=b1faeb7a1a7020288e3cb92660bb3f5fa37901b2b1f706fe3dedec43862bf9dd×tamp=1746704782
Notification example - Failed Capture:
transactionid=106216676&security=eb5329a5045eb93c56858ebe1d46f79df7b72dd513d5f666522d17b30b6e7402&payment_method=139&errormessage=Bank+rejected+payment&account_number=BEXXXXXXXXXX9770&account_holder=TEST+DDD+Creditor&payment_state=not_credited&orderid=Payabl-Test&errorcode=-5016×tamp=1746705313&type=capture
Our Technical Support team is there to help you:
Email: [email protected]
Available Monday – Friday between 09:00 and 17:00 CET/CEST
Updated 23 days ago