SEPA Direct Debit
Intro
SEPA Direct Debit (SDD) is the direct debit scheme for SEPA countries.
SDD allows you to debit an amount directly from your customers’ bank accounts. A SEPA mandate signed by your customer authorises you to debit this amount (or subsequent ones in the future for Card On File). To enable transaction processing, your customers sign a mandate using a one-time password received via SMS during the actual payment flow.
This payment method is only available via Full Service mode. Contact us to sign up for it.
Wichtigste Vorteile
- Cost-effective transaction processing by integrating the SEPA mandate creation in the payment flow.
- Secure payments with limited contestation period (8 weeks instead of 13 months) for valid mandates. Using our CreditorID solution decreases the risk of chargeback/fraud even more. Contact us if you want to sign up for this service.
- Ideal for recurring payments (i.e. subscriptions, on-demand services, pay-as-you-use services) or as an alternative to credit cards by splitting large amounts in individual instalments.
- Popular European payment method for direct debit transactions.
Integration
We offer this payment methods for the following integration modes. Learn in our dedicated guides about their individual differences:
Find a high level overview in the "Zahlungsablauf" chapter.
This payment method allows you to address various business cases. Depending on the integration mode and the business case, differences apply. Have a look at this matrix to know exactly what is most suitable for you:
I want my customers to fill in the mandate.... |
|||
---|---|---|---|
On our platform | In my webshop | ||
I will process the first transaction.... | Right after the mandate creation | CreateHostedCheckout with mandate creation |
CreatePayment with mandate creation |
Later | CreateHostedCheckout with mandate creation for a 0-amount transaction + Create payment |
Create mandate + Create payment |
If you want to process a transaction with an existing mandate, apply the flow Server-to-server with existing mandate.
Hosted Checkout Page with mandate creation
Add the following properties to a standard CreateHostedCheckout request:
{
"hostedCheckoutSpecificInput":{
"returnUrl":"https://yourReturnUrl.com",
"locale":"en_GB",
"paymentProductFilters":{
"restrictTo":{
"products":[
771
]
}
}
},
"order":{
"amountOfMoney":{
"amount":1000,
"currencyCode":"EUR"
}
},
"sepaDirectDebitPaymentMethodSpecificInput":{
"paymentProduct771SpecificInput":{
"mandate":{
"customerReference":"CustomerRef_{{TIMESTAMP}}",
"recurrenceType":"RECURRING",
"signatureType":"SMS"
}
}
}
}
Properties | Remarks |
---|---|
hostedCheckoutSpecificInput paymentProductFilters.restrictTo.products |
returnURL: The URL we redirect your customers to after the payment has been finalised. locale: The language version of our Hosted Checkout Page, including the SEPA mandate form.
|
order.amountOfMoney |
Amount: The gross amount you want to charge for this order. If you want to create the mandate first and process the transaction later, set the value to "0" |
sepaDirectDebitPaymentMethodSpecificInput. |
customerReference: A unique reference for your customer. recurrenceType: The mandate's validity. Possible values:
signatureType: The mode for signing the mandate. Possible values:
|
Ausführliche Informationen über dieses Objekt und seine Eigenschaften finden Sie in unserer CreateHostedCheckoutAPI
Server-to-server with mandate creation
Add the following properties to a standard CreatePayment request:
{
"order": {
"amountOfMoney": {
"amount": 123,
"currencyCode": "EUR"
}
},
"sepaDirectDebitPaymentMethodSpecificInput": {
"paymentProduct771SpecificInput": {
"mandate": {
"returnUrl": "https://yourReturnUrl.com",
"customer": {
"bankAccountIban": {
"iban": "BE45000253450589"
},
"companyName": "yourCompanyName",
"contactDetails": {
"emailAddress": "customer@domain.com"
},
"mandateAddress": {
"city": "Paris",
"countryCode": "FR",
"street": "27 rue des fleurs",
"zip": "75008"
},
"personalInformation": {
"name": {
"firstName": "john",
"surname": "doe"
},
}
},
"customerReference": "0efaa98944324234b9ad27f9355a1093",
"language": "en",
"recurrenceType": "RECURRING",
"signatureType": "SMS"
}
},
"paymentProductId": 771
}
}
Properties | Remarks |
---|---|
order.amountOfMoney |
Amount: The gross amount you want to charge for this order. |
sepaDirectDebitPaymentMethodSpecificInput. |
returnURL: The URL we redirect your customers to after the payment has been finalised. customer: All required information for creating the mandate. customerReference: A unique reference for your customer. language: The language version of the SEPA mandate form. recurrenceType: The mandate's validity. Possible values:
signatureType: The mode for signing the mandate. Possible values:
paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Überblick" chapter. |
Ausführliche Informationen über dieses Objekt und seine Eigenschaften finden Sie in unserer CreatePaymentAPI
Server-to-server with existing mandate
Add the following properties to a standard CreatePayment request:
{
"order": {
"amountOfMoney": {
"amount": 200,
"currencyCode": "EUR"
}
},
"sepaDirectDebitPaymentMethodSpecificInput": {
"paymentProduct771SpecificInput": {
"existingUniqueMandateReference": "mandateRef_existingReference"
},
"paymentProductId": 771
}
}
Properties | Remarks |
---|---|
order.amountOfMoney |
Amount: The gross amount you want to charge for this order. |
sepaDirectDebitPaymentMethodSpecificInput. |
The reference of the mandate your customer signed during the creation of the first transaction. |
paymentProductId |
The numeric identifier of the payment method on our platform. Find this id in the "Überblick" chapter. |
Ausführliche Informationen über dieses Objekt und seine Eigenschaften finden Sie in unserer CreatePaymentAPI
Create mandate
Our CreateMandateAPI allows you to create a mandate for later use, thus separating it from the transaction request linked to this mandate. Consequentially, you can use this mandate in subsequent Server-to-server with existing mandate requests.
Add the following properties to a standard CreateMandate request:
{
"customer":{
"bankAccountIban":{
"iban":"BE45000253450589"
},
"mandateAddress":{
"city":"Monument Valley",
"countryCode":"US",
"houseNumber":"13",
"street":"Desertroad",
"zip":"84536"
},
"personalInformation":{
"name":{
"firstName":"Jane",
"surname":"Doe"
},
}
},
"customerReference":"uniqueCustomerReference123456789012",
"language":"en",
"recurrenceType":"UNIQUE",
"returnUrl":"https://yourReturnUrl.com",
"signatureType":"SMS"
}
Properties | Remarks |
---|---|
customer |
All required information for the mandate. |
customerReference |
customerReference: A unique reference for your customer. language: The language version of the SEPA mandate form. signatureType: The mode for signing the mandate. Possible values:
returnUrl: The URL we redirect your customers to after the payment has been finalised. recurrenceType: The mandate's validity. Possible values:
|
Find detailed information about this object and its properties in our CreateMandateAPI.
Zahlungsablauf
As there are some differences in the flow depending on the integration mode/mandate management, we describe them separately. Read our dedicated paragraphs in the "Integration" chapter to get a JSON example for each flow.
With mandate creation via CreateHostedCheckout
This flow applies to the creation of a transaction and a mandate in one go.
It covers the following use cases:
- One-off transactions
- The first transaction of a series linked to a mandate
- Your customers finalise an order in your shop and select this payment method.
- You send a CreateHostedCheckout request to our platform to create a mandate and the payment.
- Our platform sends you a response containing a redirectUrl
- If you have sent the signatureType as SMS, our platform sends a SMS with an one -time password to your customers for verification (step 5). If you have sent signatureType as UNSIGNED, the flow continues at step 6.
- Your customers enter their bank credentials, including the one-time password, on the redirectUrl to sign the mandate and to confirm the payment.
- We redirect your customer to your returnUrl
- We send the transaction for processing and receive the result from the issuer (within 1-2 days).
- As soon as the issuer has confirmed processing the transaction, our platform updates the transaction to statusOutput.statusCode=9
- You request the transaction result from our platform via GetHostedCheckout or receive the result via webhooks.
- If the transaction was successful(statusOutput.statusCode=9), you can deliver the goods / service.
- The issuer transfers the funds to us.
- We transfer the funds to you.
With mandate creation via CreatePayment
- Your customers finalise an order in your shop and select this payment method.
- You send a CreatePayment request to our platform to create a mandate. Our platform sends you a response containing a merchantAction.redirectData.redirectURL (you will need for step 4) and sepaDirectDebitPaymentMethodSpecificOutput.paymentProduct771SpecificOutput.mandateReference (you will need for step 8).
- You redirect your customers to the merchantAction.redirectData.redirectURL. Your customers enter their phone number on this page.
- If you have sent the signatureType as SMS, our platform sends a SMS with an one -time password to your customers for verification (step 5). If you have sent signatureType as UNSIGNED, the flow continues at step 6.
- Your customers enter the one-time password on the redirectUrl to sign the mandate.
- We redirect your customer to your returnUrl
- We process the transaction immediately after the mandate creation. We receive the result from the issuer within 1-2 days.
- As soon as the issuer has confirmed processing the transaction, our platform updates the transaction to statusOutput.statusCode=9
- You request the transaction result from our platform via GetPaymentDetails or receive the result via webhooks.
- If the transaction was successful(statusOutput.statusCode=9), you can deliver the goods / service.
- The issuer transfers the funds to us.
- We transfer the funds to you.
With existing mandate via CreatePayment
This flow applies to:
- One-off transactions
- The first or follow-up transactions of a series of related payments
for which you already have a mandate.
- Your customers finalise an order in your shop and select this payment method.
- You send this CreatePayment request to our platform, including the existing mandate reference in property sepaDirectDebitPaymentMethodSpecificInput.paymentProduct771SpecificInput.existingUniqueMandateReference
- We process the transaction. We receive the result from the issuer within 1-2 days.
- As soon as the issuer has confirmed processing the transaction, our platform updates the transaction to statusOutput.statusCode=9
- You request the transaction result from our platform via GetPaymentDetails or receive the result via webhooks.
- If the transaction was successful(statusOutput.statusCode=9), you can deliver the goods / service.
- The issuer transfers the funds to us.
- We transfer the funds to you.
Mandate creation for later use via CreateMandate
This flow applies if you want to create a mandate and charge your customer at a later stage (i.e. when your customers create an account with you and you charge them at a fixed date at a later stage):
- You send a CreateMandate request to our platform.
- Our platform sends you a response containing a redirectUrl
- You redirect your customers to the redirectUrl to fill in the SEPA mandate.
- If you have sent the signatureType as SMS, our platform sends a SMS with an one-time password to your customers for verification (step 4). If you have sent signatureType as UNSIGNED, the flow continues at step 5.
- Your customers enter the one-time password on the redirectUrl to confirm the mandate creation.
- We redirect your customer to your returnUrl
Testdaten
In unseren Testszenarios finden Sie Testdaten und detaillierte Instruktionen.
Stellen Sie sicher, den korrekten Endpunkt anzusteuern und zurück zum Live-Endpunkt zu wechseln, sobald Sie Ihre Tests abgeschlossen haben