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 typeBank transfer / Recurring
MarketSEPA Direct Debit participating markets
Customer currenciesEUR
Processing currenciesEUR
RefundsNo

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

  • eithercheck_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

(Optional) First name of the customer

lastname

max. 50 characters

(Optional) Last name of the customer

account_holder

max. 255 characters

The full name of the customer as it appears on their bank account. Mandatory if consent_type = check_to_sign

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&currency=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&account_holder=Johanna%20Smith
&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&notification_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 via notification_url or use the diagnose interface to get the final status of the transaction.

Step 2. Handle the response

Response example:

transactionid=215819134&transid=215819134&status=2000&errormessage=pending&errmsg=pending&amount=1.23&price=1.23&currency=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 parameter notification_url in the initial request to payment_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&timestamp=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&timestamp=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&currency=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&notification_url=https%3A%2F%2Fwww.your-notification-url.com

Step 2. Handle the redirect

Response example:

transactionid=215819137&transid=215819137&status=2000&errormessage=pending&errmsg=pending&amount=1.23&price=1.23&currency=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&timestamp=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&timestamp=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