SEPA Direct Debit
SEPA Direct Debit (aka SDD) is a way of paying for a product or service by means of collecting money directly from the consumer's bank account by using a particular description.
The consumer must agree to the Direct Debit via an optional E-mandate, or by using another successful payment as a mandate transaction. Look in the Payment Methods section to see for which payment methods SDD is supported.
Note
- SDD Core (also known as B2C: Business To Consumer) payments are not guaranteed!. They can be refused by the debtor's bank or reverted by the debtor.
- Please make sure you clearly specify Escrow CURO Payments (identification code
NL87ZZZ570002710000) as the originator for the payment, or consumers may issue a reversal or chargeback of the payment!- Consumers are allowed to revert a SDD Core (Consumer-to-Business or C2B) payment within 56 days without having to specify a reason. This is made even easier via the Mobile Banking applications used by consumers.
- Due to the setup of SDD, you will always receive a confirmation of the payment first (usually a code 7XX) which may be followed by a completion, or a chargeback/reversal later, which can be any time from a few minutes, 56 days or even 13 months.
UPDATE November 2020:Due to recent changes to the SEPA Rule Book (EU Regulation 2015/847 – FATF16 recommendations) is it now mandatory to submit
address,cityandcountry_idinformation of the consumer for the following non EEA countries:
CHSwitzerlandMCMonacoSMSan MarinoPMSaint-Pierre and MiquelonJEJerseyGGGuernseyIMIsle of ManGBGreat BritanUKUnited KingdomThese fields must be submitted in the
[consumer]container in the request of the master/mandate transaction.
Please check the Transactions for generic information applicable to all payment methods.
Direct Debit Payment
ImportantWhen a Direct Debit job is succesfully registered, the response will contain SEPA Creditor Information that will be used. It is mandatory that you communicate this information clearly to the consumer to prevent chargebacks!
Entry point: /rest/v1/curo/payment/directdebit/
REST request elements
See the Direct Debit request parameters in the API reference.
| Field name | Required | Description | |
|---|---|---|---|
[request] | container | required | General container for this resource. Includes the generic request items. |
[consumer] | container | required | Consumer information for this transaction (See the generic Consumer and Shipping elements for this transaction.) |
[cartitems] | container | required | The cart items of the webshop order. (See the generic CartItems elements.) |
name | required | Name of the account holder. | |
iban | required | IBAN number to debit the amount from. Only SEPA countries are supported. | |
bic | optional | SWIFT/BIC code. Optional since 2016 for SEPA. | |
emandate | optional | Optional flag to enable E-mandates for this payment. | |
b2b | optional | Optional flag to enable Direct Debit B2B (Business-to-Business). By default SEPA "CORE" will be used.
|
REST response elements
See the Direct Debit Payment response elements.
| Field name | Description | |
|---|---|---|
[payment] | container | General container for this resource. |
action | The default action that should be undertaken (redirect). | |
external | Indicates, if TRUE, that the url is to an external website. | |
url | Complete issuer URL to which the consumer must be redirected for authentication. The url will always contain a link to the default CURO Direct Debit page on the gateway, where a summary of the transaction is given. Consumers will also have to option to request an e-mail containing the payment instructions. You can use this URL or present the information to the consumer on your own system. | |
transaction_id | Newly created transaction ID. | |
[pmdata] | container | Container for payment method specific data. |
recipient_name | Creditor Name as it will appear on the debitors bank statement. default Escrow CURO Payments. | |
recipient_iban | Creditor IBAN number that will collect the money. default DE73202208000000021845. | |
recipient_bic | Creditor BIC number. default SXPYDEHH. | |
recipient_identifier | Creditor Identifier that will be visible on the bank statement. default NL87ZZZ570002710000. | |
amount | Amount to be collected in cents. | |
currency_id | Currency of the transaction. Always EUR. | |
mandate_id | Transaction Id of the mandate for this direct debit. This will be the initial transaction that was registered using the recurring option. | |
mandate_date | Date of the mandate transaction. | |
description | The description that will be on debtors the bank statement. | |
execute_date | Date when the Direct Debit will be executed by the bank. By default the minimum date will be used. The minimum execution date will date + 2 (business-)days if submitted before 23:00h (GMT+2). See SEPA Timeline from ING Bank as an example (this is the same for all banks working with SEPA). As per SEPA regulations, you must inform the debtor about the payment 14 days before the execution date, unless otherwise agreed. See SEPA Direct Debit Core Rulebook for detailed information. | |
sequence_type | SEPA transaction type for the Direct Debit:
| |
name | Debtors name as it is known in the CURO system. | |
iban | Debtors IBAN. | |
bic | Debtors BIC. |
Direct Debit Refund
See the generic Refund information and request elements.
Direct Debit Recurring
When the initial Bank Transfer transaction was registered with the option recurring enabled, subsequent recurring payments can be created using the account information available.
Recurring payments for this method will use SEPA Direct Debit transactions using the initial transaction id as mandate.
Note
- The recurring option must be requested and approved per website before it can be used, please contact your accountmanager for further details.
- Consumers must be informed about recurring payments when making the initial/authorizing payment in compliance with the rules of a SEPA Direct Debit transfer as agreed by all European banks!
Entry point: /rest/v1/curo/recurring/
REST request elements
| Field name | Type/Length | Description |
|---|---|---|
[recurring] | container | General container for this resource. |
See generic Recurring request elements.
REST response elements
| Field name | Description | |
|---|---|---|
[recurring] | container | General container for this resource. |
[pmdata] | container | Container for the payment data. |
recipient_name | Name of the recipient (Escrow CURO Payments). | |
recipient_iban | IBAN of the recipient. | |
recipient_bic | BIC/SWIFT of the recipient. | |
recipient_identifier | Identification number of the recipient. | |
amount | The amount payable in cents (with no decimal separator). | |
currency_id | Currency in which payment should be effected, expressed using the three-letter international currency code as per ISO-4217. (default: EUR) | |
mandate_id | Transaction ID of the authorizing Direct Debit payment. | |
mandate_date | Date when transaction will be debitted from the consumers account. | |
description | Transaction description which will be presented to the user on the bank statement. | |
execute_date | Date when transaction will be debited from the consumers account. You are required to notify the consumer of the Direct Debit by e-mail or in writing at least 3 business-days before the executing date! | |
sequence_type | The Type of sequence. (eg. FRST, RCUR) | |
name | The name of the consumer. | |
iban | The IBAN number of the consumer. | |
bic | The BIC code of the consumer. | |
transaction_id | Newly created transaction ID. |
JSON example request
POST /rest/v1/curo/recurring/ HTTP/1.1
Authorization: Basic dXNlcm5hbWU6YXBpa2V5
Host: secure.curopayments.net
Content-type: application/json
Accept: application/json
{
"transaction_id": "T26211231999",
"amount": 50,
"currency_id": "EUR",
"reference": "RECUR_1111",
"description": "recur_test_01"
}Response
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": true,
"recurring": {
"pmdata": {
"recipient_name": "Escrow CURO Payments",
"recipient_iban": "NL41INGB0687547407",
"recipient_bic": "INGBNL2A",
"recipient_identifier": "NL87ZZZ570002710000",
"amount": "50",
"currency_id": "EUR",
"mandate_id": "T26211231999",
"mandate_date": "2026-05-19",
"description": "recur_test_01",
"execute_date": "2026-05-20",
"sequence_type": "RCUR",
"name": "Hr E G H K\u00fcppers en/of MW M.J. K\u00fcppers",
"iban": "NL17RABO0213698412",
"bic": "RABONL2U",
"attempt": 1
},
"transaction": "T26511786216",
"action": "redirect",
"external": false,
"url": "https://testserver.net/v1/payment/directdebit.app?transaction=T26511786216",
"testmode": 1,
"transaction_id": "T26511786216"
}
}Direct Debit Callback
Besides the default generic callback items the url_callback will receive extra information about SEPA Direct Debit transactions in case there is a reversal/chargeback.
ImportantThe
status(orcuro_statusin the CardGate protocol) of the chargeback transaction will besuccess! This is because the state of the chargeback transaction itself is technically "successful".
| Name | Description | |
|---|---|---|
original_transaction_id | The mandate transaction ID this SDD is linked to. | |
return_reason_code | SEPA Direct Debit Reason Code. See table below for a full description. | |
return_reason | SEPA Direct Debit Reason. See table below for a full description. |
Also see the generic Callback elements.
Direct Debit Return Codes
| Code | Name | Description | Action / Comment |
|---|---|---|---|
AC01 | INCORRECT | The account number is incorrect or unknown. Check and correct the number and retry. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
AC04 | CLOSED | The account number is closed or terminated. Contact the debtor for an alternate payment solution. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
AC06 | BLOCKED | The account is blocked, or blocked for Direct Debit by the Debtor. Contact the debtor for another way of payment. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
AG01 | NOT_ALLOWED | Direct debit forbidden on this account for regulatory reasons. The account can not be used for Direct Debit payments. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
AG02 | INVALID | Incorrect operation / transaction / sequence type code. Please check the order of FRST and RCUR payment for this transaction. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
AM04 | NO_BALANCE | Insufficient funds during Direct Debit. Please contact the debtor. | A new recurring transation can be created. |
MD01 | NO_MANDATE | There is no mandate, the mandate was cancelled or has become invalid because there were no Direct Debits in 36 months. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
MD02 | MANDATE_INVALID | Belgium only This code indicates a wrong sequence of FRST and RCUR, or the mandate has not (yet) been registered at the bank. Please contact the Debtor for a solution. | Mandate transaction will be invalidated for future recurring. A new mandate transaction must be created. |
MD06 | CHARGEBACK | Return of funds requested by debtor within 56 days. | Contact consumer; A new recurring transaction can be created. |
MS02 | REFUSED | Refusal by the Debtor before execution date (Reason has not been specified). | Contact consumer; A new recurring transaction can be created. |
MS03 | REFUSED | Reason has not been specified. Usually there is not enough balance on the account. | Contact consumer; A new recurring transaction can be created. |
SL01 | UNABLE | Direct Debit is refused by the Debtor Bank. The account can be blocked by the Debtor for Direct Debits, or the given maximum amount has been exceeded. | Contact consumer; A new recurring transaction can be created. |
Updated about 2 months ago