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 method | API enum | PaymentIntents | SetupIntents | Requires redirect |
|---|---|---|---|---|
| ACH Direct Debit | us_bank_account | Yes | Yes | No |
| Bacs Direct Debit | bacs_debit | Yes | No | No |
| AU BECS Direct Debit | au_becs_debit | Yes | Yes | No |
| NZ BECS Direct Debit | nz_bank_account | Yes | Yes | No |
| Pre-authorized debit (Canada) | acss_debit | Yes | Yes | No |
| SEPA Direct Debit | sepa_debit | Yes | Yes | No |
All bank debit methods do not support manual capture.
Product support
| Payment method | Connect | Checkout | Payment Links | Subscriptions | Invoicing |
|---|---|---|---|---|---|
| ACH / Instant Bank Payments | Yes | Yes | Yes | Yes | Yes |
| Bacs Direct Debit | Yes | Yes | Yes | Yes | Yes |
| AU BECS Direct Debit | Yes | Yes | Yes | Yes | Yes |
| NZ BECS Direct Debit | Yes | Yes | Yes | Yes | Yes |
| Pre-authorized debit (Canada) | Yes | Yes | No | Yes | Yes |
| SEPA Direct Debit | Yes | Yes | Yes | Yes | Yes |
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.
| Method | Confirmation timing |
|---|---|
| ACH Direct Debit | 1-5 business days |
| SEPA Direct Debit | 3-7 business days |
| Bacs Direct Debit | 3-5 business days |
| AU BECS | 1-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.