SEPA Direct Debit
Last updated: February 1, 2023
You can accept SEPA Direct Debit (SDD) payments from customers in countries within the Single Euro Payments Area.
The Single Euro Payments Area initiative aims to facilitate seamless, quick, and cost-effective direct debits across 36 (as of March 2019") SEPA European countries. Banks participating in SEPA are not permitted to charge higher fees for cross-border SEPA Direct Debits than they would for direct debits within their home country.
Information
To accept payments by SEPA Direct Debit, please contact your Account Manager.
Model | Collecting |
---|---|
Payment flow | Direct Debit |
Payment method type | Online banking |
One-step payment | |
Authorization | |
Capture | |
Refund | |
Partial refund | |
Chargeback | |
Recurring payment |
First, you need to collect your customers' euro-denominated bank account details, including their IBAN. The bank account holder is then required to accept a mandate to authorize you to debit their account. Once the mandate is approved, submit the mandate details to Checkout.com and we'll provide you with a source object with which you can request a payment.
Before any payment can occur, your customer must authorize the payment by accepting the terms of the mandate. By accepting, they are authorizing you to collect the specified amount from their bank account using SEPA Direct Debit.
There are two types of mandates:
- One-off: allows a single payment to be made against the mandate. It can only be used once.
- Recurring: allows multiple payments to be made against the mandate. It can be reused.
The mandate is accepted using ‘click’ acceptance. This method requires that the mandate’s terms are set out on the same page as where the customer enters their bank account details. The mandate should make it clear that if the customer submits their bank account details to the merchant, they are implicitly agreeing to the mandate.
Once the mandate is approved, you can submit the customer’s information to us, and we'll return the mandate reference to you. You should then present the mandate reference to your customer as confirmation that the mandate has been created.
Information
For details about the mandate and more, please read the SEPA Direct Debit core rulebook.
Before debiting a customer's account with SEPA Direct Debits, it is mandatory that the customer is informed of the debit by the merchant in an agreed timeframe before the payment. We recommend you include details of this timeframe in your terms and conditions.
Notifications are sent to enable the customer to make sure they have the necessary funds available in their bank account and also to make them aware of the payment so they recognize it in their statement.
Funds will be removed from the customer’s account one or two days after the transaction is submitted. It is a SEPA requirement that you make sure your customers are aware of this.
Information
For additional information about pre-notifications, please read the SEPA Direct Debit core rulebook.
Create a new SEPA payment source that can be used to make one or more payments. Creating a source will automatically create a new mandate as well. You'll receive the mandate reference
in the response, and you can use this if you ever need to cancel a mandate.
Information
Payment sources are linked to a specific customer and cannot be shared between customers.
You can find the full list, as well as complete request and response examples, in our API reference.
post
https://api.checkout.com/sources
You can use the following characters in your billing_descriptor
field:
- Uppercase:
A-Z
- Lowercase:
a-z
- Numbers:
0-9
- Special characters:
+ ? / - : ( ) . , ' & * $ %
The minimum character limit is 1 character. The maximum character limit is 121 characters.
Note
Do not use #
in your descriptor as this will cause a validation error.
1{2"type": "sepa",3"reference": "X-080957-N34",4"source_data": {5"first_name": "Sophie",6"last_name": "Bonneville",7"account_iban": "DE25100100101234567893",8"billing_descriptor": "Thanks for shopping",9"mandate_type": "recurring"10},11"billing_address": {12"address_line1": "101 Avenue de Gaulle",13"city": "Paris",14"zip": "75013",15"country": "FR"16},17"phone": {18"country_code": "+33",19"number": "6 78 91 01 11"20},21"customer": {22"email": "[email protected]"23}24}
Information
The soft descriptor value will be prepended to the mandate reference when it appears on a customer's bank statement. For example, Company ABC - Mandate: 1017424
.
1{2"id": "src_a3wfgafsyedefaobbqadqw34vy",3"type": "Sepa",4"response_code": "10000",5"response_data": {6"mandate_reference": "2476225"7},8"customer": {9"id": "cus_uhpsey6culvuln3zfzfme7w5ea"10},11"_links": {12"self": {13"href": "https://api.checkout.com/sources/src_a3wfgafsyedefaobbqadqw34vy"14},15"sepa:mandate-cancel": {16"href": "https://api.checkout.com/sepa-external/mandates/src_a3wfgafsyedefaobbqadqw34vy/cancel"17},18"sepa:mandate-get": {19"href": "https://api.checkout.com/sepa-external/mandates/src_a3wfgafsyedefaobbqadqw34vy"20}21}22}
You can find the full list, as well as complete request and response examples, in our API reference.
post
https://api.checkout.com/payments
1{2"source": {3"type": "id",4"id": "src_a3wfgafsyedefaobbqadqw34vy"5},6"amount": 5600,7"currency": "EUR",8"reference": "X-080957-N34"9}
Information
Use the provided source ID in the payments endpoint to create a payment for a particular customer. For recurring payments, the source ID can be used multiple times.
1{2"id": "pay_6thh5vhggyjudgzfznx2fkuede",3"status": "Pending",4"reference": "X-080957-N34",5"customer": {6"id": "cus_uhpsey6culvuln3zfzfme7w5ea",7"email": "[email protected]"8},9"_links": {10"self": {11"href": "https://api.checkout.com/payments/pay_6thh5vhggyjudgzfznx2fkuede"12}13}14}
If your customer requests to cancel a SDD mandate, you can do so by using our cancel mandate endpoint. Once canceled, you will no longer be able to create payments using the mandate or its source object.
Note
This action is only available for recurring SDD payments; you cannot cancel one-off payments.
You can find the full list, as well as complete request and response examples, in our API reference.
post
https://api.checkout.com/apms/ppro/sepa/mandates/{source_id}/cancel
Information
Mandates automatically expire after 36 months of inactivity.
A captured SEPA charge can be refunded by passing the original payment ID (of the SEPA payment) through our refund endpoint. Refunds must be claimed within eight weeks, starting from the date on which the account was debited.
You can find the full list, as well as complete request and response examples, in our API reference.
post
https://api.checkout.com/payments/{payment_id}/refunds
1{2"amount": 6540,3"reference": "ORD-5023-4E89"4}
If your refund request is successful, you will receive a payment_refund_pending
webhook notification. Once the refund has been processed, you will receive a payment_refunded
webhook and the payment status will change to refunded
.
Information
Refunds can take up to four days to be processed.
1{2"action_id": "act_y3oqhf46pyzuxjbcn2giaqnb44",3"reference": "ORD-5023-4E89",4"_links": {5"payment": {6"href": "https://api.checkout.com/payments/pay_y3oqhf46pyzuxjbcn2giaqnb44"7}8}9}
Use this request to get more information on an SDD payment source, based on its id
.
You can find the full list, as well as complete request and response examples, in our API reference.
get
https://api.checkout.com/sources/{id}
1{2"id": "src_y3oqhf46pyzuxjbcn2giaqnb44",3"type": "sepa",4"_links": {5"self": {6"href": "https://api.checkout.com/sources/src_y3oqhf46pyzuxjbcn2giaqnb44"7},8"sepa:mandate": {9"href": "https://api.checkout.com/sepa/mandates/src_y3oqhf46pyzuxjbcn2giaqnb44"10}11}12}
Information
If the source cannot be found, you will get a 404 - Payment source not found
error.
A customer can dispute an SDD payment with their bank when they believe that they did not authorize the payment. However, owing to the asynchronous nature of SDDs, the reasons for a chargeback go beyond the traditional customer-initiated chargebacks. SDD chargebacks may be caused by the IBAN being incorrect, the customer having insufficient funds, or the customer's bank account being closed. If a chargeback occurs, we will let you know through a payment_chargeback
webhook notification.
If you and your customer did not agree upon the mandate, then the chargeback cannot be represented. You must handle representing an SDD chargeback directly with the customer.
Information
Chargebacks can be initiated by the customer up to 13 months after a payment was first processed.
Note
To start testing, you'll need to:
- create a test account, and
- contact your Account Manager or Integrations engineer to activate SEPA payments in the sandbox environment.
If you want to test the different use cases for SDD payment results, please use the following test IBANs. These IBANs have a valid checksum and should be supplied when creating a new mandate.
IBAN | Description |
---|---|
| The customer's mandate and payment can't be set up because their bank details are invalid. Payment not accepted. |
| The customer's payment is accepted, but not collected yet. The mandate is marked as activated. The payment will remain on Status 1 (accepted). |
| The customer's payment is accepted, but then canceled before collection. The mandate is marked as activated. The payment is marked as Status 1 (accepted), then Status 2 (canceled). |
| The customer's payment is collected successfully and paid out to you. The mandate is marked as activated. The payment is marked as Status 1 (accepted), then Status 3 (paid). |
| The customer’s payment is provided to the bank successfully, but is then charged back due to a request by a merchant. The mandate is marked as activated. The payment is marked as Status 1 (accepted), then Status 3 (paid). Finally, the payment is marked as Status 4 (charge-back) with Token (RFND). |
| The customer's payment is collected successfully, but is then charged back by the customer disputing it with their bank (actively initiated by the customer). The mandate is marked as activated. The payment is marked as status 1 (accepted), then status 3 (paid). Finally, the payment is marked as status 4 (chargeback) with token (ACT). |
| The customer's payment is provided to the bank successfully, but is then charged back by their bank due to no sufficient funds. The mandate is marked as activated. The payment is marked as Status 1 (accepted), then Status 3 (paid). Finally, the payment is marked as Status 4 (chargeback) with Token (NSF). |
| The customer's payment is provided to the bank successfully, but is then charged back by the bank due to other reasons (no bank account, saving account). The mandate is marked as activated. The payment is marked as Status 1 (accepted), then Status 3 (paid). Finally, the payment is marked as Status 4 (chargeback) with Token (OTHR). |
| The customer's payment is provided to the bank successfully, but is then charged back by the bank due to format errors. The mandate is marked as activated. The payment is marked as Status 1 (accepted), then Status 3 (paid). Finally, the payment is marked as Status 4 (chargeback) with Token (FRM). |