# SEPA Direct Debits (SDD)
SEPA Direct Debit (SDD) allows the recipient of the transfer to collect Euro-denominated payments from SEPA countries accounts. This type of transfer is initiated by the creditor, hence requiring an IBAN and a debtor-approved Mandate.
At Treezor, SDD can be used in two directions:
SDDR
are Received into a Wallet and mapped to Payout objectsSDDE
are Emitted from a Wallet and mapped to Payin objects
# Received Direct Debits (SDDR)
Treezor allows for the Wallets to be debited using SEPA Direct Debit (SDDR).
They can be received by Treezor between 24h and 14 days before the desired SDD effective date.
Tip – Virtual IBAN SDD reception is also supported
You may provide a Virtual IBAN to receive a SEPA Direct Debit into a Wallet. Virtual IBANs have many benefits over your main IBAN (direction and validity period restrictions, easier funds movements categorization, etc.).
Information – SDDR Policies
- SDDR Core are accepted by default and can be blocked using a Blacklist of UMR on the Beneficiary.
- SDDR B2B are denied by default and can be allowed by using a Whitelist of UMR on the Beneficiary.
When an SDD is received, Treezor:
- Sends a
sepa_sddr.reception
webhook, so you can inform the end user about the Direct Debit and its amount. - Creates a Beneficiary object for the creditor (if needed) and sends a
beneficiary.create
webhook. - Controls the validity of the operation (ensures that the wallet is not closed, that Beneficiary is not blacklisted, etc.)
- If controls succeed – The Balance and Authorized Balance remain unaffected until the effective date of the SDD.
- If controls fail – You receive a
sepa.reject_sddr_core
or asepa.reject_sddr_b2b
webhook.
Best practice – Inform your end users of the SDD reception
They need to provision their Wallet to cover the corresponding amount.
On the effective date of the SDD, Treezor re-runs previous controls and also checks if the Wallet is sufficently provisioned:
- If control succeed – A Payout object is created, along with a
payout.create
webhook (VALIDATED
status). - If controls fail – No Payout object is created, you receive a
sepa.return_sddr
or asepa.refund_sddr
webhook.
Reading – SDDR Rejection
Learn more about received SEPA Direct Debit rejection in the SDDR Rejection section.
# Structure of an SDDR Payout
Alert – SEPA Direct Debit limitations
While Treezor can receive SDDR
B2B and SDDR
Core, Treezor can only emit SDDE
Core (no B2B).
You can check the list of SDDR Errors Codes.
# Rejection of an SDDR
# Rejection upon reception by Treezor
If the SDD is not valid, you receive a sepa.reject_sddr_core
or a sepa.reject_sddr_b2b
webhook. The Wallet Balance is not affected.
# Rejection on the effective date
If the SDD operation can't take place on (or after) the effective date, Treezor sends you:
- A
sepa.return_sddr
webhook (e.g., unsufficient funds) or - A
sepa.refund_sddr
webhook (unexpected delays in the controls or transmission of the SDD).
# Refund management
To oppose an SDDR, the User first contacts you. You then open a ticket (opens new window) with Treezor Support.
Treezor sends you a payoutrefund.create
webhook with its status set to PENDING
. Then, the refind can be either accepted or declined by the debiting bank:
- Accepted – You receive a
payoutrefund.update
webhook (VALIDATED
status) which concludes the refund. - Declined – You receive a
payoutrefund.update
webhook (CANCELED
status) and the refund doesn't take place.
Declines may occur if the SDDR is more than 8-week old or if the refund reason was improperly set for instance.
# Emitted Direct Debits (SDDE)
Treezor allows Users to debit funds from somebody elses account using SEPA Direct Debit (SDDE).
Prerequisites – Prior to making an SDDE, you must have
- A SEPA Creditor Identifier (SCI) – To obtain and enable a SCI, contact your Treezor Account Manager.
- A Mandate signed by the debtor – With the correct
sddType
, explicitely allowing you to initiate a transfer.
Also, the debit date (payinDate
) must be on a SEPA Open Banking Day.
# Parameters
Below are the main parameters of a SEPA Direct Debit Payin.
Attribute | Type | Description |
---|---|---|
paymentMethodId | integer | Must be 21 for SDDE. |
walletId | integer | The unique identifier of the credited Wallet. |
mandateId | integer | The unique identifier of the the associated Mandate |
amount | float | The amount of the Payin. |
currency | string | The currency of the Payin. Must be EUR . |
payinDate | string | The desired date of the Payin, which must be a SEPA Open Banking Day (set at least 3 days after the creation). Defaults to the third SEPA Open Banking Day following the payin creation if left empty. |
Here is an example of {payload}
.
Returns the Payin object, with its status set to PENDING
. You will receive the corresponding webhook on the desired Payin date (payinDate
).
Caution – UserId
initial value in Production
In Production environment, all SCTR are initially received with userId
attribute valued to 3
. It is strictly forbidden to use this value, this is a technical user for Treezor use only.
# Rejection of an SDDE
# Rejection before effective date
If the debtor bank rejects the SDDE, Treezor sends you a payin.cancel
webhook with its status set to CANCELED
.
# Rejection after effective date
- If the funds are not available on the SDDE effective date, you receive a
payinrefund.create
webhook (VALIDATED
status). - If the debtor asks for a refund, your receive a
transaction.create
webhook.