SEPA Direct Debit
Payment method properties
| Markets (consumer) | EU/EEA countries: Non-EEA Countries with bilateral agreements: Non-EEA Territories: |
| Processing currencies | EUR |
| Consumer currencies | EUR |
| Authentication methods | N/A |
| Authentication timeout | N/A |
| Minimum payment amount | 0.10 EUR |
| Maximum payment amount | 1,000.00 EUR |
| Payment instrument | BANK_ACCOUNT |
| Recurring payments | Yes |
| Separate captures | Yes |
| Refund | Full - Partial - Multiple |
| Refund validity | 365 days |
| Disputes | Yes |
| Settlement risk | Yes |
Make a SEPA Direct Debit payment
Before debiting an account via SEPA Direct Debit, you must collect the consumer's name and bank account number in IBAN format. During the payment flow, the consumer must accept a mandate authorising the debit — this mandate is hosted within your own checkout experience, not on a PPRO-hosted payments page.
In this variant, the mandate is generated on your side with a unique ID, presented to the consumer for acceptance, and stored by you as the merchant. To initiate a SEPA Direct Debit payment, ensure the following minimum consumer details are collected and provided when calling our API /v1/payment-charges endpoint:
| Field | Description |
|---|---|
| paymentMethod | SEPA_DIRECT_DEBIT |
| amount.value | The amount to be paid in the smallest units of the currency used. |
| amount.currency | EUR or alternative. |
| consumer.name | Full name of the consumer. |
| consumer.country | The country of residence of the consumer. |
instrument: BANK_ACCOUNTdetails.iban | The IBAN of the consumer's bank account. |
instrument: BANK_ACCOUNTdetails.debitMandateId | Generate a mandate ID (maximum 35 alphanumeric characters). |
The following standard authorization text should be shown so the customer can implicitly sign the mandate during the payment flow. Replace Name of Merchant with your creditor name.
By providing your payment details and confirming this payment, you authorize (A) PPRO Financial Ltd on behalf of <Name of Merchant> to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with those instructions. You have the right to request a refund from your bank according to the conditions specified in your agreement with it. A refund must be requested within 8 weeks starting from the date on which your account was debited. Your rights regarding this mandate are explained in a statement that you can obtain from your bank.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:
{
"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": [],
"discards": [],
"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"
},
"discards": {
"href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/discards"
},
"voids": {
"href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/voids"
}
}
}Handling the payment result
The payment charge status will initially be set to AUTHORIZATION_ASYNC. If a positive response is received and no reversals or refusals are returned by the consumer's bank, the charge will update to CAPTURED and you will be notified via webhook. Should a reversal or refusal occur, the status will change to FAILED with one of the reason codes outlined 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"
}Sandbox testing
Updated 3 days ago