Migrate existing bank accounts
Learn how to migrate existing bank accounts to the Payment Intents API or Checkout Sessions API.
Stripe is removing support for ACH Direct Debit using legacy integrations.
If you create legacy ACH Direct Debit payments, you must migrate to the Payment Intents API or Checkout Sessions API.
If you previously collected customer payment details with Stripe using the Tokens API, you can continue using the saved BankAccount as a PaymentMethod.
You can only use customer bank accounts with the Payment Intents API or Checkout Sessions API after you meet the following requirements:
Checkout Sessions API: The customer’s bank account has been verified.
Payment Intents API: The customer’s bank account has been verified, and an active mandate exists for that bank account.
You don’t need to re-verify Bank Accounts that are already verified to use them with Payment Intents or Checkout Sessions.
Use Checkout Sessions
To display previously saved and verified bank accounts in Checkout, you need to:
- Create a Checkout Session with a
customerparameter - Set the filters to
['unspecified', 'always'] - Specify
us_inbank_ account payment_method_ types
When these requirements are met, Checkout automatically finds and displays all saved, verified bank accounts associated with that customer, eliminating the need to recollect payment details.
If the customer has an email attached, the customer’s email is prefilled in the Session and can’t be modified. You must check for an email and render your email input field accordingly.
Retrieve a BankAccount as a PaymentMethod
You can retrieve saved BankAccounts through the Payment Methods API:
When using a BankAccount as a PaymentMethod, no new objects are created. The Payment Methods API simply provides a different view of the same underlying object.
Invoices
After you collect mandate acknowledgment, to continue using Invoicing you must either update your customer’s default payment method or set the default_ parameter.
To update a customer’s default payment method:
To create an invoice with a bank account as a payment method:
Subscriptions
After you collect mandate acknowledgment, to continue using Subscriptions, you must either update your customer’s default payment method or set the default_ parameter.
To update a customer’s default payment method:
To create an subscription with a bank account as a payment method:
Identify Legacy ACH Payments
On a Charge object, the payment_ property is ach_ for the legacy integration and us_ for the newer integration.
A legacy ACH payment is created when a legacy BankAccount is the payment source. This happens when:
- You call the Create Charge API.
- A Subscription or Invoice charges a customer whose
default_is a legacy BankAccount, and nosource default_is set on the customer, subscription, or invoice.payment_ method - You call the Create PaymentIntent API with
sourceset to a legacy BankAccount.