Migrating to new APIs
The ACH Direct Debit payment method allows you to use bank accounts collected with Stripe’s older Bank Accounts API or migrate verified bank accounts from another payment processor to use with the Payment Intents API.
Compatibility with the Bank Accounts API
If you have previously collected customer payment details with Stripe using the Bank Accounts API, you can start using the Payment Intents API immediately without migrating any payment information for ACH Direct Debit. Using customer bank accounts with PaymentIntents is a two-step process:
- Create a payment with a verified bank account.
- Collect authorization to debit the customer’s bank account via a mandate.
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.
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.
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 might have a timestamp, an IP address, or user agent information for them. You can use that information to create a mandate object.
- If you previously collected payment and mandate information offline (on the phone or in person), you can create a mandate with offline acceptance.
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.
Retrieving 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.
Migrating bank accounts from another payment processor
If you have a store of saved bank accounts that you verified and used to process ACH Direct Debit payments on another processor, you can migrate them to Stripe to begin accepting payments.
Both your business and Stripe are responsible for maintaining proof of authorization to debit, as well as proof of bank account verification. Please contact us with details, including:
- How your business collects authorization from customers.
- How your business verifies customer bank accounts.
Stripe can temporarily give you the ability to skip bank account verification. Request this temporary capability from Stripe Support. Once enabled, process each bank account and create a SetupIntent for each.
Create a new Customer object or retrieve an existing one to associate with this bank account.
Then create and confirm a SetupIntent with your saved bank account details and the date of your customer’s original authorization to debit the account.
Retrieve and store the PaymentMethod ID from the response to use for future payments. You can also retrieve it by listing all PaymentMethods for the customer.