Bacs Direct Debit for Payment Setup API
Last updated: August 12, 2026
Bacs Direct Debit is available in GBP for customers with a UK bank account.
To accept Bacs Direct Debit payments, you must:
- Create a payment setup.
- Update the payment setup with the payment details.
- Verify payment authorization.
- Confirm the payment.
Call the Create a payment setup endpoint.
Information
The Payment Setup API supports idempotency. You can safely retry API requests without the risk of duplicate requests.
Information
Your base URL's {prefix} value is unique to your account and environment. To learn how to retrieve your base URLs for the sandbox and production environments, see API endpoints.
post
https://{prefix}.api.checkout.com/payments/setups
1{2"processing_channel_id": "pc_wzjki6hw5puepb5fnvqlizj2e4",3"currency": "GBP",4"amount": 4599,5"reference": "ORDER_01234",6"description": "Bacs Direct Debit payment",7"payment_type": "regular",8"billing": {9"address": {10"country": "GB"11}12},13"settings": {14"success_url": "https://example.com/payments/success",15"failure_url": "https://example.com/payments/failure"16}17}
In the request body, provide the following:
processing_channel_id– The processing channel's unique identifieramount– The payment amount, with a minimum value of 1currency– The payment currency. Bacs Direct Debit only supportsGBPpayment_type– Set toRegularorRecurringbilling.address.country– Your customer's two-letter ISO 3166-1 alpha-2 billing country code
1{2"id": "set_rcmepwrchqab2wsergcafvijfy",3"processing_channel_id": "pc_wzjki6hw5puepb5fnvqlizj2e4",4"amount": 4599,5"currency": "GBP",6"payment_type": "regular",7"reference": "ORDER_01234",8"description": "Bacs Direct Debit payment",9"payment_methods": {10"bacs": {11"status": "pending",12"flags": []13}14},15"available_payment_methods": [16"bacs"17],18"settings": {19"success_url": "https://example.com/payments/success",20"failure_url": "https://example.com/payments/failure"21}22}
The response returns a payment_methods object, which contains the payment methods enabled on your account.
For Bacs Direct Debit, payment_methods contains the following fields:
status– The status of the payment method.flags– An array of error codes or indicators that highlight missing or invalid information.
When the customer selects Bacs Direct Debit as the payment method on the checkout page, collect their account holder and bank account details, and call the Update a payment setup endpoint to submit them.
Checkout.com uses these details to validate your customer's bank account and create the Direct Debit mandate. None of the following fields are required by the schema, but we recommend you provide them, because we cannot create the mandate without them.
Information
A Bacs mandate typically becomes active within five business days of creation. You cannot collect a payment against the mandate during this period.
Additionally, provide the following fields:
| Field | Description |
|---|---|
object | Details of your customer, the bank account holder. |
string | Supported values:
|
string | The account holder's first name, for individual account holders. |
string | The account holder's last name, for individual account holders. |
string | The account holder's legal registered company name, for corporate account holders. |
string | The account holder's email address. |
string | Your customer's UK bank account number. |
string | Your customer's UK bank sort code. |
string | The two-letter ISO 3166-1 alpha-2 country code of the bank account. This can differ from |
string | The three-letter ISO 4217 currency code of the account holder's bank account. This can differ from the payment |
boolean | Set to |
When you submit these details, we validate the account_holder name you provide against the bank account details in account_number and bank_code:
- Match – We create the mandate, and the payment method status changes to
ready. - Partial match – We add a warning flag to
payment_methods.bacs.flags. Setallow_partial_matchtotrueand resubmit the request to bypass the warning and create the mandate anyway. - No match – We add an error flag to
payment_methods.bacs.flags, and we cannot create the mandate for this bank account.
1{2"processing_channel_id": "pc_wzjki6hw5puepb5fnvqlizj2e4",3"currency": "GBP",4"amount": 4599,5"reference": "ORDER_01234",6"description": "Bacs Direct Debit payment",7"payment_type": "regular",8"billing": {9"address": {10"country": "GB"11}12},13"settings": {14"success_url": "https://example.com/payments/success",15"failure_url": "https://example.com/payments/failure"16},17"payment_methods": {18"bacs": {19"initialization": "enabled",20"account_holder": {21"type": "individual",22"first_name": "Toby",23"last_name": "Arden",24"email": "toby.arden@example.com"25},26"account_number": "31392621",27"bank_code": "609242",28"country": "GB",29"currency": "GBP",30"allow_partial_match": true31}32}33}
1{2"id": "set_rcmepwrchqab2wsergcafvijfy",3"processing_channel_id": "pc_wzjki6hw5puepb5fnvqlizj2e4",4"amount": 4599,5"currency": "GBP",6"payment_type": "regular",7"reference": "ORDER_01234",8"description": "Bacs Direct Debit payment",9"payment_methods": {10"bacs": {11"status": "pending",12"flags": [],13"instrument_id": "src_wkq7552u245upl5h75x24554xy"14}15},16"available_payment_methods": [17"bacs"18],19"settings": {20"success_url": "https://example.com/payments/success",21"failure_url": "https://example.com/payments/failure"22}23}
The response returns a pending status. After the payment details have been successfully validated, the payment method status updates to ready.
Subscribe to the Payment method ready webhook to get a notification when the payment is ready for confirmation.
The response also returns payment_methods.bacs.instrument_id, the ID of the Bacs instrument created for this payment.
If the update response does not immediately return a ready status, call the Get a payment setup endpoint, setting the id of the payment setup as the id path parameter, to check the status before confirming.
get
https://{prefix}.api.checkout.com/payments/setups/{id}
1{2"id": "set_rcmepwrchqab2wsergcafvijfy",3"processing_channel_id": "pc_wzjki6hw5puepb5fnvqlizj2e4",4"amount": 4599,5"currency": "GBP",6"payment_type": "regular",7"reference": "ORDER_01234",8"description": "Bacs Direct Debit payment",9"payment_methods": {10"bacs": {11"status": "ready",12"flags": [],13"instrument_id": "src_wkq7552u245upl5h75x24554xy"14}15},16"available_payment_methods": [17"bacs"18],19"settings": {20"success_url": "https://example.com/payments/success",21"failure_url": "https://example.com/payments/failure"22}23}
When the payment status changes to ready, confirm the payment by calling the Confirm a payment setup endpoint and provide:
- The payment setup
idas the{id}path parameter. bacsas the payment method name.
post
https://{prefix}.api.checkout.com/payments/setups/{id}/confirm/bacs
Unlike some other payment methods, confirming a Bacs Direct Debit payment does not mean it's immediately settled. Bacs Direct Debit runs on a three-day clearing cycle, so the payment starts with a Pending status and later changes to Captured or Returned. Configure your webhook server to receive the final result.
If the mandate fails or a payment is returned after capture, Checkout.com reports this through the payment_methods.bacs.flags mechanism and standard payment webhooks. For more information, see Payment returns and chargebacks.