SEPA Direct Debit
SEPA Direct Debit (SDD) is a popular and widely-used payment method within the Single Euro Payments Area (SEPA), which encompasses 36 European countries. SDD allows businesses to collect payments in euros from customers with bank accounts in any SEPA country. This method is particularly useful for recurring payments, such as subscriptions, utilities, and memberships, as it offers a convenient and automated way to manage payments.
SEPA Direct Debit at a glance
Payment type | Bank Transfer (SEPA) |
---|---|
Consumer markets | Europe |
The consumer is debited in | EUR |
Processing currency | EUR |
Single payments | YES
|
Merchant-initiated payments | Yes |
Processing Time | 3 business days |
Refunds | Not Supported |
Reporting | You can review your transactions in the Paysafe Business Portal |
Guarantee | YES |
Languages supported | EN |
Key features of SEPA Direct Debit
SEPA has enabled customers to make cashless euro payments via direct debit to anywhere in the European Union (EU), as well as a number of non-EU countries, in a fast, safe and efficient way, just like national payments. Following are some key features:
- SEPA Direct Debit is pull-based. Once given a mandate by their customer, it is the merchant who initiates payments.
- SEPA Direct Debit payments are bank-to-bank. There are no card networks involved in the SEPA Direct Debit scheme. All communications happen directly between the banks.
Implementation Flow
- Set Up the Mandate: Obtain your customer’s consent for SEPA payments by establishing a mandate using the Mandate API. If you already have a mandate ID, you can skip this step and continue with the next one.
- Send a Pre-Notification: Notify your consumer in advance about the planned debit from their account. This step ensures compliance and keeps your customer informed.
To process a SEPA Direct Debit (SDD) Core payment with Paysafe, follow these steps:
- Create a customer - Create a customer profile with the required information.
- Create a paymentHandle - Based on the payment type, select a payment handle with the billing details.
- Link customer mandate to created paymentHandle - Link the mandate to the payment handle via a unique reference number.
- Request payment with the paymentToken - Initiate the payment processing request with the required transaction information.
Webhooks
Payment handle webhooks
Webhook | Description |
---|---|
PAYMENT_HANDLE_PAYABLE | The payment handle for processing payments is created. |
Following is the sample payload that will be received when the payment handle is created.
{
"attemptNumber": "1",
"type": "PAYMENT_HANDLE",
"payload": {
"id": "a5575d5c-07c1-4338-b906-bf9c7322d820",
"usage": "MULTI_USE",
"executionMode": "SYNCHRONOUS",
"status": "PAYABLE",
"paymentType": "SEPA",
"paymentHandleToken": "DUCilKHkodg3ZjT",
"billingDetails": {
"id": "8627ccf6-492b-4270-ba73-61bdcd5cb8d5",
"nickName": "Home",
"street2": "Unit 201",
"city": "Toronto",
"country": "CA",
"zip": "M5H 2N2",
"street": "100 Queen"
},
"action": "NONE"
},
"resourceId": "a5575d5c-07c1-4338-b906-bf9c7322d820",
"eventName": "PAYMENT_HANDLE_PAYABLE"
}
Payment Webhooks
Webhook | Description |
---|---|
PAYMENT_COMPLETED | The transaction was completed successfully, and request is sent to the bank. |
SETTLEMENT_CANCELLED | The settlement while in pending state (before request is sent to the bank) is cancelled by the merchant |
SETTLEMENT_PROCESSING | The settlement is being processed, request successfully sent to the bank and waiting for acknowledgement. |
SETTLEMENT_COMPLETED | The settlement is completed, successfully sent to bank and received positive acknowledgement from bank |
SETTLEMENT_CLEARED | The settlement is cleared, no return/rejection is received from the bank. |
PAYMENT_RETURNED_COMPLETED | Failed payment reported by the bank |
PAYMENT_FAILED | The payment failed during the validation process i.e., risk rule failure |
Following is the sample payload that will be received when the payment is completed.
{
"payload": {
"accountId": "1004858530",
"id": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"merchantRefNum": "255354621431850940",
"amount": 500,
"currencyCode": "EUR",
"gatewayReconciliationId": "144668760",
"status": "COMPLETED",
"paymentType": "SEPA",
"txnTime": "2024-08-16T13:19:04Z",
"statusTime": "2024-08-16T13:19:04Z",
"processorCode": "JPMCS",
"mandateId": "85f2ab71-566a-4cbd-bf70-2b5a187fedd5",
"dueDate": "2024-08-16T13:19:04Z",
"billingDetails": {
"street1": "100 Queen",
"street2": "Unit 201",
"city": "Toronto",
"country": "CA",
"zip": "M5H 2N2"
},
"profile": {
"id": "e817633e-225a-4d5b-b9b4-15268ddfb35c"
},
"customerId": "e817633e-225a-4d5b-b9b4-15268ddfb35c",
"description": "Magazine subscription",
"settleWithAuth": true,
"sepa": {
"lastDigits": "8408",
"accountHolderName": "John Doe",
"bic": "ZLDEVCC1",
"mandateReference": "PEKBV6833",
"bankReference": "PEKBV6833"
},
"settlementId": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"settlementAmount": 500,
"settlementStatus": "PENDING"
},
"attemptNumber": "1",
"type": "PAYMENT",
"eventDate": "2024-08-16T13:19:04Z",
"eventName": "PAYMENT_COMPLETED"
}
Following is the sample payload that will be received when the settlement is cancelled.
{
"payload": {
"accountId": "1004858530",
"id": "a1b4ec4f-9aa5-43a7-99d9-b1e3df95da32",
"merchantRefNum": "477903334702291260",
"amount": 500,
"currencyCode": "EUR",
"gatewayReconciliationId": "144668780",
"status": "CANCELLED",
"statusTime": "2024-08-16T14:05:34Z",
"paymentType": "SEPA",
"txnTime": "2024-08-16T14:04:25Z",
"processorCode": "JPMCS"
},
"attemptNumber": "1",
"type": "SETTLEMENT",
"eventDate": "2024-08-16T14:04:25Z",
"eventName": "SETTLEMENT_CANCELLED"
}
Following is the sample payload that will be received when the settlement is being processed.
{
"payload": {
"accountId": "1004858530",
"id": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"merchantRefNum": "255354621431850940",
"amount": 500,
"currencyCode": "EUR",
"gatewayReconciliationId": "144668760",
"status": "PROCESSING",
"statusTime": "2024-08-16T13:30:57Z",
"paymentType": "SEPA",
"txnTime": "2024-08-16T13:19:04Z",
"processorCode": "JPMCS"
},
"attemptNumber": "1",
"type": "SETTLEMENT",
"eventDate": "2024-08-16T13:19:04Z",
"eventName": "SETTLEMENT_PROCESSING"
}
Following is the sample payload that will be received when the settlement is completed.
{
"payload": {
"accountId": "1004858530",
"id": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"merchantRefNum": "255354621431850940",
"amount": 500,
"currencyCode": "EUR",
"gatewayReconciliationId": "144668760",
"status": "COMPLETED",
"statusTime": "2024-08-16T13:34:41Z",
"paymentType": "SEPA",
"txnTime": "2024-08-16T13:19:04Z",
"processorCode": "JPMCS"
},
"attemptNumber": "1",
"type": "SETTLEMENT",
"eventDate": "2024-08-16T13:19:04Z",
"eventName": "SETTLEMENT_COMPLETED"
Following is the sample payload that will be received when the settlement is cleared.
{
"payload": {
"accountId": "1004858530",
"id": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"merchantRefNum": "255354621431850940",
"amount": 500,
"currencyCode": "EUR",
"gatewayReconciliationId": "144668760",
"status": "COMPLETED",
"statusTime": "2024-08-16T13:34:41Z",
"paymentType": "SEPA",
"txnTime": "2024-08-16T13:19:04Z",
"processorCode": "JPMCS"
},
"attemptNumber": "1",
"type": "SETTLEMENT",
"eventDate": "2024-08-16T13:19:04Z",
"eventName": "SETTLEMENT_CLEARED"
}
Following is the sample payload that will be received when the payment return is completed.
{
"payload": {
"accountId": "1004858530",
"id": "da9279ac-fe62-4c5c-bbc9-a210fd07e433",
"merchantRefNum": "255354621431850940",
"amount": 500,
"currencyCode": "EUR",
"gatewayReconciliationId": "144668760",
"status": "COMPLETED",
"paymentType": "SEPA",
"txnTime": "2024-08-16T13:40:50Z",
"statusTime": "2024-08-16T13:40:50Z",
"processorCode": "JPMCS",
"paymentId": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"settlementId": "621f366f-f125-4c5b-a1fe-7e8b508d70c8",
"bankResponse": {
"name": "JP Morgan Chase (SEPA)",
"scheme": "SEPA",
"message": "Invalid Debtor Account Number",
"reasonCode": "AC02"
},
"reason": "Invalid Account"
},
"attemptNumber": "1",
"type": "PAYMENT_RETURN",
"eventDate": "2024-08-16T13:40:50Z",
"eventName": "PAYMENT_RETURN_COMPLETED"
}
Testing Credentials
You can test your integration's ability to manage different responses, ensuring it effectively handles failure scenarios. In these cases, you will receive a result code along with a refusal reason, providing details on why the payment request was unsuccessful.
SEPA IBAN | BIC | Country/Region |
---|---|---|
NL77ABNA0492122466 | ABNANL2A | EU |
NL76ABNA0472095185 | ABNANL2A | EU |