SEPA Direct Debit
Integrate SEPA Direct Debit and allow merchants to collect euro-denominated payments from bank accounts in 30+ SEPA countries and associated territories. Learn more about SEPA Direct Debit.
Markets | EU/EEA countries: AT BE BG CY CZ DE DK EE ES FI FR GR HR HU IE IS IT LI LT LU LV MT NL NO PL PT RO SE SI SK Non-EEA Countries with bilateral agreements: AD CH GB MC SM VA Non-EEA Territories: GG IM JE PM |
Processing currencies | EUR |
Consumer currencies | EUR |
Settlement currencies | EUR |
Authentication methods | N/A |
Minimum payment amount | 0.10 EUR |
Maximum payment amount | 1,000.00 EUR (configurable) |
Payment instrument | BANK_ACCOUNT |
Recurring payments | Yes |
Separate captures | Yes |
Refund | Full - Partial - Multiple |
Refund validity | 365 days |
Disputes | Yes |
Disputes validity | Up to 13 months |
Sandbox availability | PPRO provided |
Make a SEPA Direct Debit payment
SEPA Direct Debit is most commonly used for recurring payments but can also be used for one-time payments. SEPA Direct Debit does not require an additional consumer authentication step. However, we recommend including all relevant settings for any authentication methods you support.
To make a SEPA Direct Debit payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges API:
Data Field | Description |
---|---|
paymentMethod | SEPA_DIRECT_DEBIT |
amount.value | The amount to be paid in the smallest units of the currency used. |
amount.currency | EUR |
consumer.name | Full name of the consumer. |
consumer.country | The country where the consumer is shopping. |
instrument: BANK_ACCOUNT details.iban | The IBAN of the consumer's bank account. |
instrument: BANK_ACCOUNT details.debitMandateId | Generate a mandate ID (maximum 35 alphanumeric characters). |
Request:
POST /v1/payment-charges
{
"paymentMethod": "SEPA_DIRECT_DEBIT",
"amount": {
"value": 1000,
"currency": "EUR"
},
"consumer": {
"name": "John Smith",
"country": "FR"
},
"instrument": {
"type": "BANK_ACCOUNT",
"details": {
"iban": "FR1420041010050500013M02606",
"debitMandateId": "YOURDIRECTDEBITMANDATEID12123"
}
}
}
Response:
Since SEPA Direct Debit has no additional consumer authentication step, you'll receive our standard payment charge response (see potential responses in the API Reference) with the available authentication methods.
{
"id": "charge_s9KGjildrixhGpcSOVyCF",
"paymentMethod": "SEPA_DIRECT_DEBIT",
"paymentMedium": "ECOMMERCE",
"scheduleType": "UNSCHEDULED",
"instrumentId": "instr_w8yFLFrhvqnzNaJU1g1GL",
"currency": "EUR",
"country": "FR",
"status": "AUTHORIZATION_ASYNC",
"consumer": {
"name": "John Smith",
"country": "FR"
},
"authenticationMethods": [],
"authorizations": [
{
"id": "authz_jBssECRurIpwaBShQpADm",
"amount": 1000,
"status": "PROVIDER_CONFIRMATION_PENDING",
"createdAt": "2025-04-14T14:02:57.939Z",
"updatedAt": "2025-04-14T14:02:57.939Z"
}
],
"captures": [],
"refunds": [],
"voids": [],
"createdAt": "2025-04-14T14:02:57.624Z",
"updatedAt": "2025-04-14T14:02:57.939Z",
"_links": {
"authorizations": {
"href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/authorizations"
},
"captures": {
"href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/captures"
},
"refunds": {
"href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/refunds"
},
"voids": {
"href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/voids"
}
}
}
Handling the payment result
The payment charge status will initially be set to AUTHORIZATION_ASYNC
for 5 days. If there are no reversals or refusals from the consumers bank during this period, the payment charge will update to CAPTURE_PENDING
and you'll be notified through a webhook. However, if a reversal or refusal occurs, the status will change to FAILED
with one of the reason codes below.
Response codes
Code | ISO definition |
---|---|
AC01 | Incorrect Account Number |
AC04 | Consumer Bank Reversal |
AC06 | Blocked Account |
AC13 | Invalid Debtor Account Type |
AG01 | Transaction Forbidden |
AG02 | Invalid Bank Operation Code |
AM04 | Insufficient Funds |
AM05 | Duplication |
BE05 | Unrecognised Initiating Party |
CNOR | Creditor Bank Is Not Registered |
DNOR | Debtor Bank Is Not Registered |
ED05 | Settlement Failed |
FF01 | Invalid File Format |
MD01 | No Mandate |
MD02 | Missing Mandatory Mandate Information in Mandate |
MD06 | Refund Request By End Customer |
MD07 | End Customer Deceased |
MS02 | Not Specified Reason Customer Generated |
MS03 | Not Specified Reason Agent Generated |
RC01 | Bank Identifier Incorrect |
RR01 | Missing Debtor Account Or Identification |
RR02 | Missing Debtor Name Or Address |
RR03 | Missing Creditor Name Or Address |
RR04 | Regulatory Reason |
SL01 | Specific Service Offered By Debtor Agent |
Payment instrument
An instrument of type BANK_ACCOUNT
will be created to support SEPA Direct Debit payments. It securely stores the consumer's bank account details and mandate ID, and can be used to initiate recurring payments.
GET /v1/payment-instruments/{instrument-id}
Response
{
"id": "instr_w8yFLFrhvqnzNaJU1g1GL",
"details": {
"holderName": "John Smith",
"iban": "FR1420041010050500013M02606",
"debitMandateId": "YOURDIRECTDEBITMANDATEID12123"
},
"type": "BANK_ACCOUNT"
}
Updated about 13 hours ago