Collect a bank account to use ACH Direct Debit payments with account data
Use account data such as balances with your payments integration.
Stripe offers a number of ways to accept ACH Direct Debit payments from your users. All of these methods require that you verify the user’s account before you can debit their account. You can use Financial Connections to perform instant bank account verification along with features such as balance or ownership checks. When using Financial Connections for your ACH flows, you can:
- Reduce your payment failure rate from closed or inactive accounts
- Improve payments conversion by keeping users on session, instead of forcing them to leave your payments flow to locate their accounts and routing numbers
- Save development time by eliminating the need to create a custom bank account collection form
- Enable the collection of additional bank account data, such as balances and ownership information
Before you begin
Financial Connections is the default verification method for all hosted ACH payment flows, such as Checkout or the Payment Element. If you use a hosted flow, skip directly to accessing additional account data. Set up your integration to collect ACH payments if you haven’t already done so.
Enable Financial Connections
The verification_method parameter on various API resources controls whether Financial Connections is enabled for bank account verification. Financial Connections with microdeposit fallback is the default.
Common mistake
Bank accounts that your customers link through manual entry and microdeposits won’t have access to additional bank account data like balances, ownership, and transactions.
| Verification method | Description |
|---|---|
automatic (default) | Financial Connections with the option to manually enter bank account information and use microdeposits |
instant | Financial Connections only, with no manual entry and microdeposit fallback |
microdeposits | Manual entry and microdeposits only |
This option is available on the following APIs:
- PaymentIntent
- SetupIntent
- CheckoutSession
- Invoice
- Subscription
- Payment Element
Create a customer Recommended
We recommend that you create a Customer with an email address and phone number to represent your user, that you then attach to your payment. Attaching a Customer object allows you to list previously linked accounts later. By providing the email address and phone number on the Customer object, Financial Connections can improve the authentication flow by simplifying sign-in or sign-up for your user, depending on whether they’re a returning Link user.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Request access to additional account data
To access additional account data on Financial Connections Accounts, you must first submit your Financial Connections application by checking Financial Connections settings in the Dashboard. You can view this page after you activate Financial Connections. Your integration determines how you configure access to different types of account data.
If you use Stripe’s dynamic payment method feature to collect ACH payments for non-Connect use cases, you can configure requested Financial Connections data directly from the ACH Dashboard settings page. Account and routing number is always required for ACH debits—other data types are optional.
Note
We recommend configuring permissions in the Dashboard because it allows you to change which data you collect without any code changes.
To override the Dashboard configuration, specify Financial Connections permissions directly in the API. To do this for PaymentIntents:
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Use data with your ACH integration
After you’ve been approved for additional bank account data access such balances or ownership, you can use this data to improve ACH payments performance. For example, you can use balance data to reduce the risk of insufficient funds failures. See related data guides for examples:
- Balances : check account balance prior to payment initiation to reduce NSFs .
- Ownership : pull account owners and compare against your internal data models to catch potential fraud.
- Transactions : pull an account’s transaction history to check when the customer’s paycheck might land.
Private preview
The Risk Intelligence API is a preview feature that provides additional aggregate data to help manage risk, such as average account balance over the past the relevant part of the product days, total number of credit transactions over the past the relevant part of the product days, and more. If you’re interested in using this preview feature, email us for access.
Finding the Financial Connections Account ID
To initiate data refreshes and retrieve data on a Financial Connections account, you first need to get the account’s ID from the linked payment method by expanding the PaymentIntent’s payment_method property:
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
The Financial Connections account ID is on the expanded payment method’s us_bank_account hash. If you allow manual entry fallback and the user manually entered their account information, this field is null.
{
"id": "pi_3OK3g4FitzZY8Nvm11121Lhb",
"object": "payment_intent",
"payment_method": {
"us_bank_account": {
"financial_connections_account": "fca_1OK123bitUAA8SvmruWkck76"
}
// ... other fields on the Payment Method
}
// ... other fields on the Payment Intent
}
