Sepa Direct Debit (SDD IN) V2.0
A SDD IN is an SDD that debits the Xpollens account to credit an external account.The mandate is owned by the external bank.
SDD IN notification

Mandate details are available through the api:
🔗GET /api/v2.0/account/accountId/mandates/mandateId
Authorise mandat (B2B only)
In the case of B2B SDD, the mandate is created with the status Created.
To allow the debit, you have:
- to notify your enduser, as soon as you receive the webhook MandateCreatedOrUpdated
- to ensure the enduser authorises the mandat before the payment date of the first debit
Otherwise, this SDD IN will be rejected.

SDD IN accepted
If the end user agrees to be debited via SDD IN, no action is needed except to ensure that their account balance will be sufficient on the payment date..

SDD IN refused by the enduser before executionDate
If the enduser refuses to be debited, the mandate has to be blocked.
As soon as the mandate is blocked, all SDD IN are refused.
The mandate can be re-authorized at any time.

State diagram for a external mandate (created in case of SDD IN)
SDD Core
stateDiagram
[*] --> Authorized
Authorized --> Blocked : when blocked
Blocked --> Authorized: when re-authorized
SDD B2B
stateDiagram
[*] --> Created
Created --> Authorized: by API, before 1st SDD IN
Authorized --> Blocked : when blocked
Blocked --> Authorized: when re-authorized
SDD IN refund
In the SDD Core scheme, a refund is possible up to eight weeks after the settlement date without supplying any justification.
The prerequesite:
- Operation must be an SDD IN CORE in Completed status.
- Operation settlement date must not be more than 8 weeks old.
sequenceDiagram
Title: Create an SDD IN refund
autoNumber
Actor User
Participant Partner
Participant XPO
Participant Interbank_market
Note over Partner, XPO : Refund creation
Partner ->> XPO : POST /sepa-direct-debits/{sepaDirectDebitId}/refund
XPO -->> Partner: https 20X
XPO -->> Partner: Callback SepaDirectDebitCreatedOrUpdated <br/> {status: "Completed", isRTransaction: "true"}
Partner -->> User: notification
🔗POST /sepa-direct-debits/sepaDirectDebitId/refund:
400 - Bad Request
| Case | errorMessage |
|---|---|
| Operation <> SDD IN CORE | SDD Refunds can only be made on an SDD IN CORE transaction |
| OperationStatus <> SucceededSettled (Completed) | Refunds are only possible on transactions with Completed status |
| 8-weeks period exceeded | Authorized refund period exceeded (56 days) |
| Authorisation KO (closed account) | Refunds are not authorised on a closed account |
| SDD IN not related to the accountId. | SDD IN not related to the accountId |
| Operation does not exist. | Cannot find Original REC_SDD_IN Operation with SepaDirectDebitId dc6853be-639c-57d7-9342-da65f7d34e1e |
"Payload": {
"mandateId": "4ffaff9a-xxxx-xxxx-xxxx-bd8880b9ddbb",
"initialSepaDirectDebitId": "abf328ac-xxxx-1111-xxxx-f4db2713fb29",
"relatedSepaDirectDebitId": "abf328ac-xxxx-1111-xxxx-f4db2713fb29",
"sepaDirectDebitCreationDate": "2025-09-04T13:47:04.850Z",
"sepaDirectDebitId": "REFUND-abf328ac-xxxx-1111-xxxx-f4db2713fb29",
"sepaDirectDebitType": "CORE",
"sepaDirectDebitSequence": "RCUR",
"accountId": "abcd",
"userId": "abcd",
"isRTransaction": true,
"debtor": {
"beneficiaryId": "823c441a-1111-2222-3333-bfe0eb8c837c",
"iban": "FR7610207XXXXXXXXXX01257510",
"bic": "CCBPFRPPMTG"
},
"creditor": {
"beneficiaryId": null,
"iban": "FR7616528XXXXXXXXXXXX681016",
"bic": "SMOEFRP1"
},
"amount": {
"value": "30.00",
"currency": "EUR"
},
"description": "",
"endToEndId": "0ada5123456789ee8b8679",
"sepaRejectCode": "MD06",
"sepaRejectReason": "RefundRequestByEndCustomer - Disputed authorised transaction",
"expectedExecutionDate": "2025-09-04T13:47:04.850Z",
"executedDate": "2025-09-04T15:00:06.225Z",
"direction": "Credit",
"status": "Completed",
"type": "SepaDirectDebitCreatedOrUpdated"
}FAQ
FAQ 1 : How to simulate an SDD IN?
Ask your Customer Integration Manager to create one.
Updated 8 months ago