Skip to content

Bank Debits Fresh

Bank debits pull funds directly from a customer's bank account for one-time and recurring purchases.

Good fit for:

  • Businesses collecting recurring payments from other businesses
  • Retail and services businesses wanting a low-cost alternative to cards for large payments (rent, tuition)

Not a good fit if:

  • You deliver goods immediately — confirmation takes several business days
  • Your business is sensitive to disputes — some bank debit methods favor the customer

How it works

Customer selects bank debit at checkout → provides banking details and authorizes a mandate → payment completes (confirmation takes 1-5 business days).

To reduce fraud, verify the bank account before payment via microdeposit confirmation or bank login. Bank login verification lets customers pay by logging into their bank rather than entering account details manually.

Supported bank debit methods

Payment methodAPI enumPaymentIntentsSetupIntentsRequires redirect
ACH Direct Debitus_bank_accountYesYesNo
Bacs Direct Debitbacs_debitYesNoNo
AU BECS Direct Debitau_becs_debitYesYesNo
NZ BECS Direct Debitnz_bank_accountYesYesNo
Pre-authorized debit (Canada)acss_debitYesYesNo
SEPA Direct Debitsepa_debitYesYesNo

All bank debit methods do not support manual capture.

Product support

Payment methodConnectCheckoutPayment LinksSubscriptionsInvoicing
ACH / Instant Bank PaymentsYesYesYesYesYes
Bacs Direct DebitYesYesYesYesYes
AU BECS Direct DebitYesYesYesYesYes
NZ BECS Direct DebitYesYesYesYesYes
Pre-authorized debit (Canada)YesYesNoYesYes
SEPA Direct DebitYesYesYesYesYes

Notes:

  • Bacs Direct Debit: Cannot use Payment Element to create SetupIntents — use Checkout in setup mode instead
  • Pre-authorized debit (Canada): Not supported in Checkout subscription mode or with deferred intent creation

Enable via dynamic payment methods

Enable bank debits in Dashboard → Settings → Payment Methods. With Checkout, Payment Element, and Payment Links, bank debits appear automatically — no integration code required.

javascript
// Bank debits appear automatically via dynamic payment methods
const session = await stripe.checkout.sessions.create({
  line_items: [{ price: 'price_1234', quantity: 1 }],
  mode: 'payment',
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
});

Accept ACH Direct Debit explicitly

javascript
const paymentIntent = await stripe.paymentIntents.create({
  amount: 10000,
  currency: 'usd',
  payment_method_types: ['us_bank_account'],
});

Mandate requirement

All bank debits require a mandate — the customer's authorization to debit their account. Stripe handles mandate collection when using Checkout, Payment Element, or Payment Links. For manual integrations, collect the mandate yourself before initiating the debit.

Setup future usage

Most bank debit methods support saving for future use:

javascript
const paymentIntent = await stripe.paymentIntents.create({
  amount: 10000,
  currency: 'usd',
  payment_method_types: ['us_bank_account'],
  setup_future_usage: 'off_session',
});

SEPA, AU BECS, and ACSS debit support both on_session and off_session. ACH supports only off_session.

Payment timing

Bank debits are delayed notification payment methods — you don't know immediately if the payment succeeded.

MethodConfirmation timing
ACH Direct Debit1-5 business days
SEPA Direct Debit3-7 business days
Bacs Direct Debit3-5 business days
AU BECS1-3 business days

Always use webhooks to confirm payment success. Do not rely on redirect URLs for fulfillment.

Disputes

Some bank debit methods allow customers to dispute payments for extended periods. ACH disputes can occur up to 60 days after the debit. SEPA disputes can occur up to 8 weeks (or 13 months for unauthorized transactions).

Migrating from Sources, Tokens, or Charges APIs

If your current integration uses the Sources, Tokens, or Bank Accounts API, migrate to the Payment Intents API. The Payment Intents API tracks the full lifecycle of a payment and triggers authentication steps when required.

Follow the appropriate migration guide for your payment method — ACH has a dedicated guide; all other bank debit methods follow the general PaymentIntents migration guide.

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18