Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
Build an advanced integration
Build an in-app integration
Payment Methods
Add payment methods
Manage payment methods
Faster checkout with Link
Payment interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
Other Stripe products
Financial Connections
    Overview
    Get started
    Use cases
    Fundamentals
    Testing
    Supported institutions
    Collect accounts for data
    ACH Direct Debit payments
    Connect payouts
    Other data-powered products
    Access account data
    Balances
    Ownership
    Transactions
    Manage accounts
    Disconnections
    Webhooks
Crypto
Climate
HomePaymentsFinancial Connections

Collect a bank account to optimize ACH Direct Debit payments with account data

Use account data such as balances to optimise your payments integration.

Copy page

Not sure about which Financial Connections integration to use? See our overview of integration options.

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. Financial Connections is the secure method offered by Stripe to perform instant bank account verification, that’s also extensible to more powerful features such as balance or ownership checks. When using Financial Connections to power your ACH flows, you can:

  • Reduce 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 account 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, to further optimise your integration

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. If you’re not already set up to collect ACH payments, set that up first.

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 methodDescription
automatic (default)Financial Connections with the option to manually enter bank account information and use microdeposits
instantFinancial Connections only, with no manual entry + microdeposit fallback
microdepositsManual entry and microdeposits only

This option is available on the following APIs:

Additional steps, such as NACHA mandate collection, are required for businesses that don’t use a Stripe-hosted integration such as Payment Element, Checkout, or Hosted Invoicing. See this section of the ACH guide.

  • PaymentIntent
  • SetupIntent
  • CheckoutSession
  • Invoice
  • Subscription
  • Payment Element

Create a customer
Recommended

We recommend that you create a Customer with an email address 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 an email address on the Customer object, Financial Connections can improve the authentication flow by streamlining sign-in or sign-up for your user, depending on whether they’re a returning Link user.

Command Line
cURL
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}}

Request access to additional account data

To access additional account data on Financial Connections Accounts, first make sure you’ve submitted your Financial Connections application by checking Financial Connections settings in the Dashboard. To view this page, activate your account. How you configure which types of account data you have access to depends on your integration.

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
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=2000 \ -d currency=usd \ -d customer=
{{CUSTOMER_ID}}
\ -d "automatic_payment_methods[enabled]"=true \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=payment_method \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=balances \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=ownership \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=transactions

Use data to optimise ACH integration

After you have been approved for additional bank account data access such as balances or ownership, you can use this data to optimise 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 wages might be deposited.

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 30/60/90 days, total number of credit transactions over the past 30/60/90 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 Payment Intent’s payment_method property:

Command Line
cURL
curl -G https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT}} \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "expand[]"=payment_method

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 }
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access programme.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc