Migrate existing bank accounts
Learn how to migrate existing bank accounts to the Payment Intents 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.
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 after you meet the following requirements:
- The customer’s bank account has been verified.
 - An active mandate exists for that bank account.
 
Create a PaymentIntent with a Bank Account
Bank Accounts that are already verified and have been attached to a Customer are usable in any API that accepts a PaymentMethod object. You can use a saved BankAccount as a PaymentMethod when creating a PaymentIntent, which eliminates the need to recollect payment details. However, make sure that you also update your integration to begin creating PaymentMethods instead.
Similarly, you can use a saved BankAccount as a PaymentMethod when creating a SetupIntent.
Collect mandate acknowledgement
Confirming a PaymentIntent or SetupIntent requires having your customer authorize a mandate to debit the account. Learn more about SEC codes to understand which authorization type is right for your business.
In some cases, you might have pre-authorization from your customer from an earlier purchase or SetupIntent that you can use to create an off-session payment. For example:
- If you previously collected an online mandate from the customer, you can use both the IP address and user agent information to create a 
mandateobject. If you didn’t retain your customer’s IP address or user agent information, provide placeholder data. - If you previously collected payment and mandate information offline on paper, you can create a PPD mandate.
 
To create an off-session payment, you can use offline mandate acceptance to provide a record of your customer’s original authorization.
Authorization is only required the first time you use a BankAccount object with the PaymentIntents API. After that, you can use the BankAccount object as a PaymentMethod to accept future payments.
Invoices
After you collect mandate acknowledgment, you must either update your customer’s default payment method or set the default_ parameter to use ACH on PaymentIntent objects with Invoicing.
To update a customer’s default payment method:
To create an invoice with a bank account as a payment method:
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.