SEPA Direct Debit Pro

Payment method properties
| Markets (consumer) | BE DE EE FR NL PT |
| Processing currencies | EUR |
| Consumer currencies | EUR |
| Authentication methods | REDIRECT |
| Authentication timeout | 15 minutes |
| Minimum payment amount | 0.10 EUR |
| Maximum payment amount | Subject to consumer banks |
| Payment instrument | BANK_ACCOUNT |
| Recurring payments | Yes |
| Separate captures | No |
| Refund | Full - Partial - Multiple |
| Refund validity | 365 days |
| Disputes | Yes |
| Settlement risk | Yes |
Make a SEPA Direct Debit payment
To make a SEPA Direct Debit Pro payment, you'll need to provide the following data at minimum when calling our API /v1/payment-charges endpoint:
| Field | Description |
|---|---|
| paymentMethod | SEPA_DIRECT_DEBIT_PRO |
| 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 of residence of the consumer. |
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). |
| authenticationSettings: REDIRECT settings.returnUrl | Add the url where the consumer should be redirected to after they complete the payment. |
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_PRO",
"amount": {
"value": 100,
"currency": "EUR"
},
"consumer": {
"name": "John Smith",
"country": "FR"
},
"instrument": {
"type": "BANK_ACCOUNT",
"details": {
"iban": "FR1420041010050500013M02606",
"debitMandateId": "`YOURDIRECTDEBITMANDATEID12123`"
}
},
"authenticationSettings": [
{
"type": "REDIRECT",
"settings": {
"returnUrl": "`https://www.webshop.com/order-results-page`"
}
}
]
}Response:
You'll receive our standard payment charge response with the details for "Redirect" authentication method:
{
"id": "charge_Z3Sjo35rlj1LyOSZuGK0B",
"paymentMethod": "SEPA_DIRECT_DEBIT_PRO",
"paymentMedium": "ECOMMERCE",
"scheduleType": "UNSCHEDULED",
"instrumentId": "instr_uCPBUG3r7KXIScprhnUud",
"currency": "EUR",
"country": "FR",
"status": "AUTHENTICATION_PENDING",
"consumer": {
"name": "John Smith",
"email": "[email protected]",
"country": "FR"
},
"authenticationMethods": [
{
"details": {
"requestUrl": "https://redirection-target.com",
"requestMethod": "GET"
},
"type": "REDIRECT"
}
],
"authorizations": [
{
"id": "authz_4vA9xc8PMLAOWy987XScn",
"amount": 1000,
"status": "AUTHENTICATION_PENDING",
"createdAt": "2026-07-22T15:59:58.342Z",
"updatedAt": "2026-07-22T15:59:58.342Z"
}
],
"captures": [],
"refunds": [],
"discards": [],
"voids": [],
"createdAt": "2026-07-22T15:59:58.069Z",
"updatedAt": "2026-07-22T15:59:58.342Z",
"_links": {
"authorizations": {
"href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/authorizations"
},
"captures": {
"href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/captures"
},
"refunds": {
"href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/refunds"
},
"discards": {
"href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/discards"
},
"voids": {
"href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/voids"
}
}
}
Pick the desired authentication method
REDIRECT
Redirect your consumer to the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestUrl.
For example, with the value of https://redirection-target.ppro.com/ using the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestMethod HTTP method.
Handling the payment result
REDIRECT
- After the consumer completes the payment, they are redirected to the
returnUrlspecified in the payment charge creation request. - Upon redirect back to your site, retrieve the latest payment status by performing a GET /v1/payment-charges/{paymentChargeId}. Use the returned
statusfield to determine and display the final payment outcome to the consumer. - Additionally, webhooks are triggered to notify you of the payment result. This ensures you receive the outcome even if the consumer closes their browser or fails to return to your website.
Payment instrument
An instrument of type BANK_ACCOUNT will be created to support SEPA Pro 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
The payment method uses PPRO's mock authenticator in sandbox. Learn more.
Payment outcomes are simulated based on the amount.value and are in sub-units:
- EUR 1000 - 210000 → Success
- EUR 214182 → Mandate data is missing, incomplete, or incorrect
- EUR 214184 → Insufficient Funds
- EUR 214185 → Duplicate Transaction
Updated about 1 hour ago