Initiate a SEPA Direct Debit transaction
Prerequisites
- Debtor's account status: any except
ClosingorClosed - Merchant profile status:
Enabled - Payment method status:
Enabled - Direct debit payment mandate status:
Enabled - [B2B only] Debtor's account type:
Company
Guide​
- Confirm you have a project access token or, if you're an account member, a user access token with
CanManageAccountMembershippermissions. - Call the
initiateSepaDirectDebitMerchantPaymentmutation. - Add an
idempotencyKeyto prevent duplicate payments (line 4). Refer to the idempotency guide for more information. - Choose
mandateIdand add the payment mandate ID (line 5) from the declare a payment mandate guide. - Include the amount
valueandcurrency(line 6). - Recommended: include your merchant's name in the
labelfield (line 7). Thelabelcan't exceed 140 characters. - Add validations and rejections that are helpful for you, as well as optional information such as a
referencefor your internal use.
Label character limit
The label field can't exceed 140 characters. If the value is too long, Swan rejects the payment. Make sure to validate the label length before calling the mutation.
Mutation​
Dates
Dates for this mutation use ISO 8601 convention: YYYY-MM-DDTHH:mm:ssZ.
If the date is left empty, the transaction will be executed as soon as possible. If the date indicated is a non-business day, the transaction will be executed on the next business day.
mutation InitiateSdd {
initiateSepaDirectDebitMerchantPayment(
input: {
idempotencyKey: "$YOUR_IDEMPOTENCY_KEY"
mandateId: "$YOUR_MANDATE_ID"
amount: { value: "75", currency: "EUR" }
label: "Your Merchant's Name"
requestedExecutionAt: "2024-04-12T16:28:22.867Z"
}
) {
... on ForbiddenRejection {
__typename
message
}
... on NotFoundRejection {
id
message
}
... on InternalErrorRejection {
__typename
message
}
... on ValidationRejection {
__typename
message
}
... on IdempotencyConflictRejection {
__typename
message
}
... on InitiateSepaDirectDebitMerchantPaymentSuccessPayload {
__typename
merchantPayment {
id
}
}
}
}
Payload​
Note the merchantPayment id (line 6) for your SEPA Direct Debit payment.
{
"data": {
"initiateSepaDirectDebitMerchantPayment": {
"__typename": "InitiateSepaDirectDebitMerchantPaymentSuccessPayload",
"merchantPayment": {
"id": "$YOUR_MERCHANT_PAYMENT_ID"
}
}
}
}
Next steps​
- An incoming SEPA Direct Debit (
SepaDirectDebitIn) is created in the merchant's account with the statusUpcoming. - On the settlement date, the transaction status changes automatically to
Bookedand rolling reserve begins. - After the indicated rolling reserve period, the merchant receives the payment.