worldline Direct
Sign up

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 recurring payments). 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.

Overview

Payment group:
Payment product id:
771
Key benefits
  • 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.

Countries & currencies

Supported countries

Supported currencies

  • Euro (EUR)

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 "Process flows" 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
     returnURL
     locale

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.


paymentProductFilters.restrictTo.products: The numeric identifier of the payment method on our platform. Find this id in the "Overview" chapter. It instructs our platform to send your customers directly to the SEPA-branded version of our Hosted Checkout Page. If left out, our platform sends your customers to the Hosted Checkout Page instead, allowing them to choose this or any other payment method in your account.

order.amountOfMoney
     amount
     currencyCode

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"
CurrencyCode: The ISO 4217 currency code for this amount.

sepaDirectDebitPaymentMethodSpecificInput.
paymentProduct771SpecificInput.mandate

     customerReference
     recurrenceType
     signatureType

customerReference: A unique reference for your customer.

recurrenceType: The mandate's validity. Possible values:

  • "UNIQUE": The mandate is valid for one payment.
  • "RECURRING": The mandate is valid for the currently processed transaction and for an indefinite amount of subsequent transactions.

signatureType: The mode for signing the mandate. Possible values:

  • "SMS": After the redirection to the redirectUrl, the customer enters her/his phone number to receive a 4-digit SMS code to be entered on the redirectUrl
  • "UNSIGNED": For requests for which you already have received a signed (paper-based) mandate at some point in the past.

Find detailed information about this object and its properties in our 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
     currencyCode

Amount: The gross amount you want to charge for this order.
CurrencyCode: The ISO 4217 currency code for this amount.

sepaDirectDebitPaymentMethodSpecificInput.
paymentProduct771SpecificInput.mandate

     returnURL
     customer
     customerReference
     language
     recurrenceType
     signatureType

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:

  • "UNIQUE": The mandate is valid for one payment.
  • "RECURRING": The mandate is valid for the currently processed transaction and for an indefinite amount of subsequent transactions.

signatureType: The mode for signing the mandate. Possible values:

  • "SMS": After the redirection to the redirectUrl, the customer enters her/his phone number to receive a 4-digit SMS code to be entered on the redirectUrl
  • "UNSIGNED": For requests for which you already have received a signed (paper-based) mandate at some point in the past.

paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Overview" chapter.

Find detailed information about this object and its properties in our 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
     currencyCode

Amount: The gross amount you want to charge for this order.
CurrencyCode: The ISO 4217 currency code for this amount.

sepaDirectDebitPaymentMethodSpecificInput.
paymentProduct771SpecificInput.existingUniqueMandateReference

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 "Overview" chapter.

Find detailed information about this object and its properties in our 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
     bankAccountIban.iban
     mandateAddress
     personalInformation

All required information for the mandate.

customerReference
language
recurrenceType
returnUrl
signatureType
uniqueMandateReference

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:

  • "SMS": After the redirection to the redirectUrl, the customer enters her/his phone number to receive a 4-digit SMS code to be entered on the redirectUrl
  • "UNSIGNED": For requests for which you already have received a signed (paper-based) mandate at some point in the past.

returnUrl: The URL we redirect your customers to after the payment has been finalised.

recurrenceType: The mandate's validity. Possible values:

  • "UNIQUE": The mandate is valid for one payment.
  • "RECURRING": The mandate is valid for the currently processed transaction and for an indefinite amount of subsequent transactions.

Find detailed information about this object and its properties in our CreateMandateAPI.

Process flows

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.

Mind that successful SEPA transactions reach statusOutput.statusCode=4 instead of 9 right after our platform has processed them. Once our platform receives a confirmation from the issuer for this transaction, we will update it automatically to statusOutput.statusCode=9. Read our dedicated guide to learn more about transaction statuses.

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
  1. Your customers finalise an order in your shop and select this payment method.
  2. You send a CreateHostedCheckout request to our platform to create a mandate and the payment.
  3. Our platform sends you a response containing a redirectUrl
  4. 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.
  5. Your customers enter their bank credentials, including the one-time password, on the redirectUrl to sign the mandate and to confirm the payment.
  6. We redirect your customer to your returnUrl
  7. We send the transaction for processing and receive the result from the issuer (within 1-2 days).
  8. As soon as the issuer has confirmed processing the transaction, our platform updates the transaction to statusOutput.statusCode=9
  9. You request the transaction result from our platform via GetHostedCheckout or receive the result via webhooks.
  10. If the transaction was successful(statusOutput.statusCode=9), you can deliver the goods / service.
  11. The issuer transfers the funds to us.
  12. We transfer the funds to you.
The image above shows an example of Process Flow

With mandate creation via CreatePayment

  1. Your customers finalise an order in your shop and select this payment method.
  2. 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).
  3. You redirect your customers to the merchantAction.redirectData.redirectURL. Your customers enter their phone number on this page.
  4. 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.
  5. Your customers enter the one-time password on the redirectUrl to sign the mandate.
  6. We redirect your customer to your returnUrl
  7. We process the transaction immediately after the mandate creation. We receive the result from the issuer within 1-2 days.
  8. As soon as the issuer has confirmed processing the transaction, our platform updates the transaction to statusOutput.statusCode=9
  9. You request the transaction result from our platform via GetPaymentDetails or receive the result via webhooks.
  10. If the transaction was successful(statusOutput.statusCode=9), you can deliver the goods / service.
  11. The issuer transfers the funds to us.
  12. We transfer the funds to you.
SDD-WithMandateCreationViaS2S.png

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.

  1. Your customers finalise an order in your shop and select this payment method.
  2. You send this CreatePayment request to our platform, including the existing mandate reference in property sepaDirectDebitPaymentMethodSpecificInput.paymentProduct771SpecificInput.existingUniqueMandateReference
  3. We process the transaction. We receive the result from the issuer within 1-2 days.
  4. As soon as the issuer has confirmed processing the transaction, our platform updates the transaction to statusOutput.statusCode=9
  5. You request the transaction result from our platform via GetPaymentDetails or receive the result via webhooks.
  6. If the transaction was successful(statusOutput.statusCode=9), you can deliver the goods / service.
  7. The issuer transfers the funds to us.
  8. We transfer the funds to you.
SDD-WithExistingMandateViaS2S.png

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):

  1. You send a CreateMandate request to our platform.
  2. Our platform sends you a response containing a redirectUrl
  3. You redirect your customers to the redirectUrl to fill in the SEPA mandate.
  4. 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.
  5. Your customers enter the one-time password on the redirectUrl to confirm the mandate creation.
  6. We redirect your customer to your returnUrl
SDD-CreateMandateOnly.png

Testing

Refer to our Test cases for test data and detailed instructions.

Make sure to use the right endpoint and switch back to the live URL as soon as you have finished your tests.

Was this page helpful?

Do you have any comments?

Thank you for your response.