Skip to content
Create account or Sign in
The Stripe Docs logo
/
Ask AI
Create accountSign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
APIs & SDKsHelp
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseUse Managed Payments
Use Payment Links
Use a pre-built checkout page
Build a custom integration with Elements
Build an in-app integration
In-person payments
Terminal
Payment Methods
Add payment methods
    Overview
    Payment method integration options
    Manage default payment methods in the Dashboard
    Payment method types
    Cards
    Pay with Stripe balance
    Stablecoin payments
    Bank debits
      ACH Direct Debit
        Accept a payment
        Save bank details
        Migrating ACH Direct Debit from Charges to newer APIs
          Migrate existing bank accounts
        Migrating from another processor
        Blocked bank accounts
        SEC codes
      Bacs Direct Debit
      Pre-authorised debit in Canada
      Australia BECS Direct Debit
      New Zealand BECS Direct Debit
      SEPA Direct Debit
    Bank redirects
    Bank transfers
    Credit transfers (Sources)
    Buy now, pay later
    Real-time payments
    Vouchers
    Wallets
    Enable local payment methods by country
    Custom payment methods
Manage payment methods
Faster checkout with Link
Payment scenarios
Handle multiple currencies
Custom payment flows
Flexible acquiring
Orchestration
Beyond payments
Incorporate your company
Crypto
Agentic commerce
Financial Connections
Climate
Understand fraud
Radar fraud protection
Manage disputes
Verify identities
United States
English (United Kingdom)
HomePaymentsAdd payment methodsBank debitsACH Direct Debit

Migrating ACH Direct Debit from Charges to newer APIs

Learn why and how to migrate from the Charges API.

Stripe will soon remove support for ACH Direct Debit on the Charges API. If you create ACH Direct Debit payments using the Charges API through the API, Invoices, or Subscriptions, you must migrate to the Payment Intents API or Checkout Sessions API. Before we formally remove support, we’ll email you with more details.

Reasons to migrate

ACH Direct Debit on Stripe’s newer APIs offers the following improvements:

  • Support for prebuilt payment UIs, including Stripe Checkout and Payment Element.
  • Stripe Checkout and Payment Element support.
  • Faster settlement options, cross-border capabilities, and built-in instant bank verification.
  • Advanced fraud prevention.
  • Unified reporting and payouts

API differences

The following compares Stripe’s newer APIs and the Charges API:

FeatureCharges APIPayment Intents API or Checkout Sessions API
Checkout supportNoYes
Payment Element supportNoYes
Dynamic payment method supportNoYes
Settlement speedT+6T+4 (T+2 when using faster settlement)
Instant bank account verificationOnly available through custom, third-party integrationsInstant verification with Financial Connections
MicrodepositsTwo microdeposits made up of random, small amounts for verificationOne cent microdeposit with a descriptor code or two microdeposits made up of random, small amounts for verification
Fraud PreventionNo
  • Radar for ACH
  • Balance checks using Financial Connections
  • Smart Retries
Mandate collection and storageOutside of StripeWithin Stripe
Supported countriesUSUS, EU, and UK
Balance typeBank account (source_type=bank_account)ACH payments share the same balance type as cards and other payment methods (source_type=card)

Compare the Checkout Sessions and Payment Intents APIs

Stripe offers two newer APIs to accept ACH Direct Debits payments: Payment Intents and Checkout Sessions APIs.

  • Checkout Sessions API: Supports common checkout workflows with built-in features that remove the need for custom code and is recommended for most developers.

  • Payment Intents API: Lets you use custom code for more granular control over the checkout process, but requires more integration code and maintenance.

Learn more about the differences, and how to evaluate which is right for you.

Build an ACH Direct Debit integration

To build an ACH Direct Debit integration on PaymentIntents:

  1. Enable ACH Direct Debit in your Payment methods settings.

  2. To collect and use new payment methods, integrate with ACH on Payment Intents.

  3. For bank accounts previously collected using the Tokens API, you can continue to use saved BankAccount objects as PaymentMethod objects with the Payment Intents API. To learn more, see Migrate existing bank accounts from the Charges API.

  4. Test your integration.

  5. Gradually migrate all payments using existing bank accounts to the Payment Intents API.

  6. Remove your integration with the Charges API.

Was this page helpful?
YesNo
  • Need help? Contact Support.
  • Check out our changelog.
  • Questions? Contact Sales.
  • LLM? Read llms.txt.
  • Powered by Markdoc