Learn how to process SEPA Direct Debit payments with the BlueSnap APIs.
SEPA (Single Euro Payments Area) Direct Debit is a popular European banking payment method that simplifies cross-border shopping in the Euro. It is an online payment method where money is electronically withdrawn from the shopper’s bank account and then deposited into the merchant’s bank account.
Supported Currencies
Euro (EUR)
Supported Shopper Countries
- Andorra
- Austria
- Bulgaria
- Croatia
- Cyprus
- Czech Republic
- Denmark
- Estonia
- Finland
- France
- Germany
- Greece
- Guernsey
- Hungary
- Holy See (Vatican City State)
- Iceland
- Ireland
- Isle of Man
- Italy
- Jersey
- Latvia
- Liechtenstein
- Lithuania
- Luxembourg
- Malta
- Mayotte
- Monaco
- Netherlands
- Norway
- Poland
- Portugal
- Romania
- Saint Pierre and Miquelon
- San Marino
- Slovak Republic
- Slovenia
- Spain
- Sweden
- Switzerland
- United Kingdom
Transaction Processing
Implement SEPA Direct Debit
Before you begin:
Contact Merchant Support to have SEPA Direct Debit enabled for your account.
After SEPA is enabled, confirm that SEPA Direct Debit is set to Show in your Merchant Portal by going to Checkout Page > Payment Methods.
Implementing SEPA Direct Debit consists of the following steps:
Step 1: Collect Mandate Acceptance
A SEPA Direct Debit mandate is an agreement accepted by the shopper during checkout, authorizing you (through BlueSnap) to pull the funds from their bank account.
Below is an example of the standardized mandate that you must display, where you need to replace <your-business-name>
. To get the text in another language, you can download the text from the European Payments Council or use the Get Mandate Text API:
By signing this mandate form, you authorise (A) <your-business-name> to send instructions
to your bank to debit your account and (B) your bank to debit your account in accordance
with the instructions from <your-business-name>. As part of your rights, you are entitled
to a refund from your bank under the terms and conditions of your agreement with your bank.
A refund must be claimed within 8 weeks starting from the date on which your account was debited.
Step 2: Send the Transaction for Processing
After you have the shopper's authorization, it's time to send their information to BlueSnap via the Payment API or Extended Payment API.
Payment API
You can send a Create SEPA DD Transaction request to begin processing the transaction for a one-time charge, or you can send a create or update vaulted shopper request to attach the payment details a shopper. You can also process subscriptions with SEPA Direct Debit (see Subscriptions).
Below is a simple Create SEPA DD Transaction request with a new shopper:
curl -v -X POST https://sandbox.bluesnap.com/services/2/alt-transactions/ \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=' \
-d '
{
"sepaDirectDebitTransaction": {
"iban": "DE09100100101234567893"
},
"payerInfo": {
"firstName": "John",
"lastName": "Doe"
},
"amount": 9.65,
"currency": "EUR",
"authorizedByShopper": true
}'
If successful, the response HTTP status code is 200 OK and the response includes the following properties. The values are used in the next step when you display the confirmation message and send a pre-notification email informing the shopper of the upcoming debit.
mandateId
: Unique identifier for the shopper's mandate acceptancemandateDate
: Date of the shopper's mandate acceptancepreNotificationText
: Text (in English) for the pre-notification emailpreNotificationTranslationRef
: Endpoint to get the pre-notification text in another language*.
Specify language by its two-letter ISO 639-1 code using the
language
query string parameter. Omitting the parameter gets the text in all supported languages.
{
"transactionId": "1011183521",
"amount": 9.65,
"currency": "EUR",
"payerInfo": {
"firstName": "John",
"lastName": "Doe"
},
"vaultedShopperId": 21781957,
"sepaDirectDebitTransaction": {
"ibanFirstFour": "DE09",
"ibanLastFour": "7893",
"mandateId": "Ooo153451",
"mandateDate": "21-Jul-17",
"preNotificationText": "The amount of 9.65 EUR will be collected using SEPA Direct Debit with Mandate Ooo153451 from your bank account IBAN DE09XXXXXX7891 in the next few days. Please ensure sufficient funds in your account.",
"preNotificationTranslationRef": "https://sandbox.bluesnap.com/services/2/translations/sepa/prenotification?transactionid=1011183521"
},
"processingInfo": {
"processingStatus": "PENDING"
}
}
Step 3: Display Confirmation and Pre-Notification Email
After receiving a successful response from BlueSnap, display a confirmation message to your shopper that shows the mandate ID and mandate date.
In addition, the European Payments Council requires that you send your shopper a pre-notification email - an email informing them each time their account is going to be debited. Pre-notification emails must include the following information:
- Mandate ID
- Mandate date
- Pre-notification text
Below is an example of the standardized text that you must display in the email (the text is provided by the preNotificationText
property from the API response). To get the text in another language, you can use the Get Pre-Notification Text API (the preNotificationTranslationRef
property from the API response provides you with the endpoint):
The amount of <amount> EUR will be collected using SEPA Direct Debit
with Mandate Ape151899 from your bank account IBAN <iban> in the next
few days. Please ensure sufficient funds in your account.
Timeline for sending pre-notification email
For one-time and initial subscription charges: The pre-notification email should be sent after the shopper completes checkout and after you receive a successful response from BlueSnap.
For recurring subscription charges: The pre-notification email should be sent at least 5 days before the next charge date.
Step 4: Confirm Successful Transaction Send Receipt Email
Within 5 to 6 business days, the shopper's account is debited (invoice status updates to approved) and BlueSnap sends a Charge
webhook with sepaMandateId
and sepaMandateDate
parameters, notifying you of the successful transaction. At this time, you need to send the receipt email to the shopper that displays the mandate ID and mandate date.
Note: It is recommended to deliver the product only after the approval has been received.
Staying informed of status changes
Webhooks
TheCharge
webhook (for one-time and initial subscription charges) andRecurring
webhook (for recurring subscription charges) notify you when the shopper's account has been debited for the transaction. Make sure you have webhooks enabled in your account settings.Direct Debit report
Using the Reporting API, you can pull the Direct Debit report to view the invoice status.Payment API: Retrieve SEPA DD Transaction request
The Retrieve SEPA DD Transaction response includes aprocessingStatus
property. The value indicates the current transaction status.Extended Payment API: Retrieve Order
The Retrieve Order response includes astatus
property that indicates the current transaction status.
Sandbox Testing
You may use the following IBANs to test various scenarios.
IBAN | BIC | Transaction Status Result |
---|---|---|
DE09100100101234567893 | PBNKDEFFXXX | pending > success |
DE09100100101234567892 | PBNKDEFFXXX | pending > fail |
DE09100100101234567894 | PBNKDEFFXXX | pending > success > refunded |
Notes:
- After the initial transaction request, you will see the status change within a few minutes.
- BIC is optional in the API request.