SEPA Direct Debit
Introduction
Ce produit est en mode pilote. Contactez-nous pour devenir un pilote.
Le prélèvement SEPA (SDD) est le système de prélèvement pour les pays SEPA.
Le SDD vous permet de débiter directement un montant sur les comptes bancaires de vos clients. Un mandat SEPA signé par votre client vous autorise à débiter ce montant (ou des montants subséquents à l'avenir pour Card On File transactions).
Avantages clés
- Traitement des transactions économique en intégrant la création de mandat SEPA dans le flux de paiement.
- Paiements sécurisés avec une période de contestation limitée (8 semaines au lieu de 13 mois) pour les mandats valides. Utiliser notre solution CreditorID diminue encore plus le risque de rétrofacturation/fraude. Contactez-nous si vous souhaitez vous inscrire à ce service.
- Idéal pour les paiements récurrents (c'est-à-dire abonnements, services à la demande, services pay-as-you-use) ou comme alternative aux cartes de crédit en divisant des montants importants en versements individuels.
- Méthode de paiement populaire en Europe pour les transactions de prélèvement automatique.
Intégration
Nous proposons cette méthode de paiement pour les modes d'intégration suivants. Apprenez dans nos guides dédiés leurs différences individuelles :
Trouvez un aperçu général dans le chapitre "Cinématique".
Cette méthode de paiement vous permet de répondre à divers cas d'utilisation. En fonction du méthode d'intégration et du cas d'utilisation, des différences s'appliquent. Consultez cette matrice pour savoir exactement ce qui est le plus adapté à vos besoins :
| Je veux que mes clients remplissent le mandat.... |
|||
|---|---|---|---|
| Sur notre plateforme | Dans ma boutique en ligne | ||
| Je traiterai la première transaction.... | Juste après la création du mandat | CreateHostedCheckout avec création de mandat |
CreatePayment avec création de mandat |
| Plus tard | CreateHostedCheckout avec mandat création pour une transaction à 0 montant + Créer un paiement |
Créer un mandat + Créer un paiement | |
Si vous souhaitez traiter une transaction avec un mandat existant, appliquez le flux Server-to-server avec mandat existant.
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":"UNSIGNED"
}
}
}
}
| 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:
|
Retrouvez des informations détaillées sur cet objet et ses propriétés dans notre documentation 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": "UNSIGNED"
}
},
"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 "Aperçu" chapter. |
Trouvez des informations détaillées sur cet objet et ses propriétés dans notre CreatePaymentAPI.
Server-to-server avec mandat existant
Ajoutez les propriétés suivantes à une demande standard CreatePayment :
{
"order": {
"amountOfMoney": {
"amount": 200,
"currencyCode": "EUR"
}
},
"sepaDirectDebitPaymentMethodSpecificInput": {
"paymentProduct771SpecificInput": {
"existingUniqueMandateReference": "mandateRef_existingReference"
},
"paymentProductId": 771
}
}
| Propriétés | Remarques |
|---|---|
|
order.amountOfMoney |
amount: Le montant brut que vous souhaitez facturer pour cette commande. Si vous souhaitez d'abord créer le mandat puis traiter la transaction ultérieurement, définissez la valeur sur "0 ". |
|
sepaDirectDebitPaymentMethodSpecificInput. |
La référence du mandat que votre client a signé lors de la création de la première transaction. Vous pouvez également réutiliser un mandat existant pour Card On File transactions. |
|
paymentProductId |
L'identifiant numérique de la méthode de paiement sur notre plateforme. Trouvez cet id dans le chapitre "Aperçu". |
Trouvez des informations détaillées sur cet objet et ses propriétés dans notre 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":"UNSIGNED"
}
| 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. Fixed value "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:
|
Trouvez des informations détaillées sur cet objet et ses propriétés dans notre CreateMandateAPI.
Cinématique
Notez que les transactions SEPA réussies atteignent statusOutput.statusCode=4 au lieu de 9 immédiatement après leur traitement par notre plateforme. Une fois que notre plateforme reçoit une confirmation de l'émetteur pour cette transaction, nous la mettrons automatiquement à jour en statusOutput.statusCode=9. Lisez notre guide dédié pour en savoir plus sur les états de transaction.
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.
- You redirect your customers via the redirectUrl to the Hosted Checkout Page. They enter their bank credentials 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 redirect your customers to the merchantAction.redirectData.redirectUrl. They confirm the payment.
- 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.
Avec mandat existant via CreatePayment
Ce flux s'applique à :
- Transactions uniques
- Les transactions initiales ou ultérieures d'une série de paiements liés
pour lesquelles vous avez déjà un mandat.
- Vos clients finalisent une commande dans votre boutique et sélectionnent cette méthode de paiement.
- Vous envoyez cette demande CreatePayment à notre plateforme, en incluant la référence de mandat existante dans la propriété sepaDirectDebitPaymentMethodSpecificInput.paymentProduct771SpecificInput.existingUniqueMandateReference
- Nous traitons la transaction. Nous recevons le résultat de l'émetteur dans un délai de 1-2 jours.
- Dès que l'émetteur a confirmé le traitement de la transaction, notre plateforme met à jour la transaction en statusOutput.statusCode=9
- Vous demandez le résultat de la transaction à notre plateforme via GetPaymentDetails ou recevez le résultat via webhooks.
- Si la transaction a été réussie (statusOutput.statusCode=9), vous pouvez livrer les marchandises / services.
- L'émetteur nous transfère les fonds.
- Nous vous transférons les fonds.
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.
- You redirect your customers to the redirectUrl to fill in the SEPA mandate. They confirm the mandate creation.
- We redirect your customer to your returnUrl.
Test
Consultez nos Cas de test pour des données de test et des instructions détaillées.
- Assurez-vous d'utiliser le bon endpoint et de renseigner l'URL de production dès que vous avez terminé vos tests.
- Les données dans notre chapitre Cas de test fonctionnent UNIQUEMENT pour les demandes de paiement dans notre environnement de test. Utiliser ces données dans notre environnement de production entraînera des résultats de test indésirables.
Informations supplémentaires
Gestion des mandats
L’API vous permet de révoquer des mandats via un endpoint dédié.
Pour révoquer définitivement un mandat, envoyez une requête vers notre endpoint RevokeMandate :
{
"revocationReason”:”receivedFinal"
}
| Propriété | Description |
|---|---|
| {merchantId} | Votre compte sur notre plateforme via lequel les transactions pour ce mandat ont été traitées. Ajoutez-le comme paramètre de chemin à l’endpoint RevokeMandate. |
| {uniqueMandateReference} | La référence du mandat que vous souhaitez révoquer. Ajoutez-la comme paramètre de chemin à l’endpoint RevokeMandate. |
| revocationReason |
Le motif de la révocation définitive du mandat. Valeurs possibles :
|