SEPA Direct Debit

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


Step1

1. Shopper selects SEPA DD and provides IBAN and account holder information.

Step2

2. Shopper accepts mandate authorizing their account to be debited and submits payment.

Step3

3. Merchant sends transaction details to BlueSnap (an invoice in pending status is created).

Step4

4. Shopper gets redirected to post-checkout page and gets notification of upcoming debit.

Step5


5. Within 6 days, shopper's account is debited (invoice status updates to approved).

Step6

6. Shopper gets notification of successful account debit.

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 acceptance
  • mandateDate: Date of the shopper's mandate acceptance
  • preNotificationText: Text (in English) for the pre-notification email
  • preNotificationTranslationRef: 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
The Charge webhook (for one-time and initial subscription charges) and Recurring 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 a processingStatus property. The value indicates the current transaction status.

Extended Payment API: Retrieve Order
The Retrieve Order response includes a status property that indicates the current transaction status.

Sandbox Testing

You may use the following IBANs to test various scenarios.

IBANBICTransaction Status Result
DE09100100101234567893PBNKDEFFXXXpending > success
DE09100100101234567892PBNKDEFFXXXpending > fail
DE09100100101234567894PBNKDEFFXXXpending > 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.