Europe SEPA (EU_SEPA_DEBIT)
Before you begin
Settlement times

As indicated above, SEPA Core direct debit takes 6-7 business days to settle, depending on submission before/after the cut-off time. Therefore, we recommend leaving some buffer time ahead of the cut-off to avoid delays.
Customers who wish to accelerate the settlement time may apply for our Faster Direct Debit offering, which offers a shortened settlement time of 2-3 business days, and will settle before 12:00 PM CET. To enable this capability, please contact your Account Manager and confirm our terms, conditions, and fees.
Mandate requirements
To add funds via SEPA Core direct debit, your customers must first link their Europe (SEPA) external bank accounts, as outlined in Linked Accounts.
Before any SEPA direct debit is processed, the owner of the external bank account must authorize Airwallex to directly debit the account on your behalf, in compliance with the SEPA Core Rules. A copy of the authorization will be sent by Airwallex via email to the bank account owner, and is stored and made available to be shared with the customer at all times.
The following is a guide to building your native product experience for your customers to link their external bank account and sign the mandate/agreement.
1. Linking an external bank account
The title should clearly inform your customers that they are linking an external bank account to set up direct debit.
You must ask the external bank account owner for:
- Bank account name
- IBAN
- Bank account owner email address
2. Confirmation of account details and direct debit authorization
The customers should be given a prompt to confirm that their bank account details are correct before submitting the Linked Bank Account.
The following text must be displayed:
Direct Debit Mandate
By signing this mandate form, you authorize (A) Airwallex (Netherlands) B.V. to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from Airwallex (Netherlands) B.V.. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights are explained in a statement that you can obtain from your bank.
3. Confirmation of direct debit set up
It is recommended that you provide a confirmation page to your customers at the end of the process to inform them that direct debit has been successfully set up for the Linked Bank Account.
API instructions
1. Create Linked Account with direct debit mandate
Referring to Linked Account requirements for direct debit, both BUSINESS and INDIVIDUAL Linked Account types are supported for SEPA direct debit in the SEPA region.
Micro-deposit and Open Banking are both available for this scheme. Please follow the instructions in Create a Linked Account and submit the required mandate information under the mandate object.
Example request for Linked Account created using micro-deposit verification
Shell1curl --request POST \2--url 'https://api-demo.airwallex.com/api/v1/linked_accounts/create' \3--header 'Content-Type: application/json' \4--header 'Authorization: Bearer <your_bearer_token>' \5--data '{6 "type": "GB_BANK",7 "gb_bank": {8 "account_name": "Tester Smith",9 "account_number": "89098199202",10 "currency": "GBP",11 "entity_type": "BUSINESS",12 "sort_code": "608382"13 },14 "preferred_verification_type": "MICRO_DEPOSIT",15 "mandate": {16 "email": "[email protected]",17 "signatory": "Tester Smith",18 "type": "GB_BACS_DEBIT",19 "version": "1.0" ,20 "preferred_reference": "Airwallex"21 }22}'
If you are registered as a platform account, you can call this endpoint on behalf of your customers by specifying the open ID in the x-on-behalf-of header.
Example response
JSON1{2 "id": "1277aa91-b9d7-4a20-998a-87c1a4bad6bc",3 "status": "REQUIRES_ACTION",4 "supported_currencies": [5 "EUR"6 ],7 "type": "EU_BANK",8 "eu_bank": {9 "account_name": "Tester Smith",10 "currency": "EUR",11 "entity_type": "BUSINESS",12 "iban": "DE372022080000903344401"13 },14 "next_action": {15 "type": "verify_micro_deposits",16 "remaining_attempts": 3,17 "micro_deposit_count": 218 },19 "capabilities": {20 "balance_check": false,21 "direct_debit_deposit": true22 }23}
Example request for Linked Account created using Open Banking verification
Shell1curl --request POST \2--url 'https://api-demo.airwallex.com/api/v1/linked_accounts/create' \3--header 'Content-Type: application/json' \4--header 'Authorization: Bearer <your_bearer_token>' \5--data '{6 "type": "EU_BANK",7 "eu_bank": {8 "account_name": "Tester Smith",9 "currency": "EUR",10 "entity_type": "BUSINESS",11 "iban": "DE372022080000903344401"12 },13 "preferred_verification_type": "TRUELAYER",14 "truelayer": {15 "code": "B2D8A5F9896AAA08E34DF3099649A1C249D562996D1416BCE76F66C372E56797",16 "state": 678147215582823817 },18 "mandate": {19 "email": "[email protected]",20 "signatory": "Tester Smith",21 "type": "EU_SEPA_DEBIT",22 "version": "1.0"23 }24}'
If you are registered as a platform account, you can call this endpoint on behalf of your customers by specifying the open ID in the x-on-behalf-of header.
Example response
JSON1{2 "id": "1277aa91-b9d7-4a20-998a-87c1a4bad6bc",3 "status": "SUCCEEDED",4 "supported_currencies": [5 "EUR"6 ],7 "type": "EU_BANK",8 "eu_bank": {9 "account_name": "Tester Smith",10 "currency": "EUR",11 "entity_type": "BUSINESS",12 "iban": "DE372022080000903344401"13 },14 "capabilities": {15 "balance_check": true,16 "direct_debit_deposit": true17 }18}
If you already have a Linked Account created using micro-deposit verification, you may call Update a Direct Debit Mandate API to create the mandate.
Example request
Shell1curl --request POST \2--url 'https://api-demo.airwallex.com/api/v1/linked_accounts/<your_linked_account_ID>/mandate' \3--header 'Content-Type: application/json' \4--header 'Authorization: Bearer <your_bearer_token>' \5--data '{6 "email": "[email protected]",7 "signatory": "Tester Smith",8 "type": "EU_SEPA_DEBIT",9 "version": "1.0"10}'
If you are registered as a platform account, you can call this endpoint on behalf of your customers by specifying the open ID in the x-on-behalf-of header.
Example response
JSON1{2 "accepted_at": "1648387704",3 "email": "[email protected]",4 "signatory": "Tester Smith",5 "status": "ACTIVE",6 "type": "EU_SEPA_DEBIT",7 "version": "1.0"8}
2. Create direct debit deposit
Before creating a direct debit deposit, please ensure that you have a sufficient funding limit by checking your available funding limit.
If the Linked Account was created using Open Banking verification, you may use Check available balance API to ensure that the Linked Account has sufficient balance before initiating a direct debit deposit.
Next, follow the instructions outlined in Create a direct debit deposit. Please note that the direct debit deposit reference for SEPA direct debit should not exceed 140 characters.
Example request
Shell1curl --request POST \2--url 'https://api-demo.airwallex.com/api/v1/deposits/create' \3--header 'Content-Type: application/json' \4--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0b20iLCJyb2xlcyI6WyJ1c2VyIl0sImlhdCI6MTQ4ODQxNTI1NywiZXhwIjoxNDg4NDE1MjY3fQ.UHqau03y5kEk5lFbTp7J4a-U6LXsfxIVNEsux85hj-Q' \5--data '{6 "amount": 12794.27,7 "currency": "EUR",8 "deposit_type": "DIRECT_DEBIT",9 "funding_source_id": "67f687fe-dcf4-4462-92fa-20335321d9d8",10 "reference": "test ref",11 "request_id": "c559d7fe-d911-4f3d-a937-7c24ba4b732a"12}'
If you are registered as a platform account, you can call this endpoint on behalf of your customers by specifying the open ID in the x-on-behalf-of header.
Example response
JSON1{2 "amount": 12794.27,3 "created_at": "2017-03-20T14:00:01+1100",4 "currency": "EUR",5 "deposit_id": "67f687fe-dcf4-4462-92fa-20335301d9d8",6 "payer_name": "tester",7 "source": {8 "funding_source_id": "67f687fe-dcf4-4462-92fa-20335321d9d8",9 "type": "EU_SEPA_DEBIT"10 },11 "statement_ref": "5487287788",12 "status": "SETTLED",13 "type": "DIRECT_DEBIT"14}
Clearing system error codes
To help you handle exceptions systematically, this page provides a comprehensive list of all possible clearing system errors and detailed descriptions when the Linked Accounts or a direct debit deposit from Linked Accounts are in failure statuses.
We recommend using the Airwallex error code or the iso_code for systematic exception handling. The code from provider_failure_details can be used for troubleshooting against the clearing system rules, but it is not advised for systematic handling because the clearing system may update it from time to time.
Linked Account error codes
| code | iso code | provider failure details code | description |
|---|---|---|---|
not_allowed_currency | AM03 | NARR | Payment to the bank account under the specified currency is not allowed. Contact the payer’s bank for further instructions. |
other | NARR | NARR | Payment to the bank account is not allowed. Contact the payer’s bank for further instructions. |
Direct debit deposit error codes
| code | iso code | provider failure details code | description |
|---|---|---|---|
incorrect_account_number | AC01 | AC01 | The payer’s bank account number is invalid. Please confirm the account number with the payer. |
closed_account_number | AC04 | AC04 | The payer’s bank account is closed. Contact the payer to reopen the account, or create a new mandate to charge a different bank account. |
blocked_account | AC06 | AC06 | The bank account has been blocked for SEPA direct debits. Contact the payer to remove the block, or create a new mandate to charge a different bank account. |
transaction_forbidden | AG01 | AG01 | SEPA direct debits cannot be created under the payer’s bank account type. Contact the payer or payer’s bank for further information. |
not_allowed_amount | AM02 | AM02 | The payer sets a limit with its bank and the direct debit deposit amount is greater than the limit. |
insufficient_funds | AM04 | AM04 | The balance in the Linked Account is insufficient. Please ensure funds are added to the Linked Account and retry. |
duplication | AM05 | AM05 | A duplicate direct debit deposit has been created. Make sure you have not submitted duplicate deposits before contacting your account manager for further information. |
unknown_end_customer | BE06 | BE06 | Bank account specified is not known or does not exist. Contact the payer's bank for further information. |
debtor_bank_is_not_registered | DNOR | DNOR | The payer’s bank is not registered as a clearing system member (CSM) in the SEPA direct debit system. Contact the payer’s bank for further information. |
settlement_failed | ED05 | ED05 | The settlement of the transaction has failed. Contact the payer’s bank for the failure reason. |
no_mandate | MD01 | MD01 | The direct debit mandate is not present. Please confirm that the payer or payer's bank has not cancelled the mandate before contacting your account manager for further information. |
refund_request_by_end_customer | MD06 | MD06 | The payer has requested the return of funds. Contact the payer for further information. |
end_customer_deceased | MD07 | MD07 | You cannot create a direct debit against the payer’s bank account because the payer is deceased. Contact the payer’s bank for further instructions. |
not_specified_reason_customer_generated | MS02 | MS02 | The payer refuses the direct debit after receiving the pre-notification. Reason has not been specified. Contact the payer for further information. |
not_specified_reason_agent_generated | MS03 | MS03 | Rejection or return reason has not been specified by the payer’s bank, usually due to data protection concerns. Contact the payer’s bank for further information. |
bank_identifier_incorrect | RC01 | RC01 | The payer’s BIC code is invalid. Please confirm the BIC with the payer. |
missing_debtor_account_or_identification | RR01 | RR01 | Specification of the payer’s IBAN or unique identification needed for regulatory requirements is insufficient. Contact your account manager for further information. |
missing_debtor_name_or_address | RR02 | RR02 | Specification of the payer’s name, or address needed for regulatory requirements is insufficient. Contact your account manager for further information. |
regulatory_reason | RR04 | RR04 | The transaction is rejected or returned for regulatory reasons. Contact your account manager for further information. |
specific_service_offered_by_debtor_agent | SL01 | SL01 | The direct debit conflicts with specific account instructions placed by the payer's bank. E.g. Direct debit frequency limitation. Contact the payer's bank for further information. |
debtor_bank_not_permitted_to_receive_direct_debits | NARR | XT79 | The payer’s bank is not allowed to receive direct debits. Contact the payer’s bank for further information. |
invalid_use_of_bic | NARR | XT90 | Non-SEPACOM participants cannot send direct debit instructions to the payer's bank. Contact the payer's bank for further information. |
bank_not_part_of_closed_user_group | NARR | XT91 | Non-SEPACOM participants cannot send direct debit instructions to the payer's bank. Contact the payer's bank for further information. |