Collect an account to build data-powered products
Collect your user's account and use data such as balances, ownership details, and transactions to build products.
Web
iOS
Android
React Native
WebView
Available in:
Financial Connections lets your users securely share their financial data by linking their external financial accounts to your business. You can use Financial Connections to access user-permissioned financial data such as tokenised account and routing numbers, account balances, account owner information, and historical transactions.
Some common examples of how you can use Financial Connections to improve product experiences for your users include:
- Mitigate fraud when onboarding a customer or business by verifying the ownership information of an account, such as the name and address of the bank account holder.
- Help your users track expenses, handle bills, manage their finances and take control of their financial well-being with transactions data.
- Speed up underwriting and improve access to credit and other financial services with transactions and balances data.
- Enable your users to connect their accounts in fewer steps with Link, allowing them to save and reuse their bank account details across Stripe businesses.
Set up Stripe Server-side
Register for Financial Connections after we approve your account for live-mode access.
Use our official libraries for access to the Stripe API from your application:
Command Line
Select a language
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem
sudo gem install stripe
Gemfile
Select a language
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile
gem 'stripe'
Create or retrieve a customer Server-side
Create a customer-configured Account or Customer when users create an account with your business. Financial Connections can use the email address to identify returning Link users and optimise the authentication flow by dynamically showing a streamlined user interface.
Use the Accounts v2 API to represent customers
The Accounts v2 API is generally available for Connect users, and in public preview for other Stripe users. If you’re part of the Accounts v2 preview, you need to specify a preview version in your code.
To join the Accounts v2 preview, go to Account previews and features in your Dashboard and enable Reusable payment methods for Global Payouts.
For most use cases, we recommend modelling your customers as customer-configured Account objects instead of using Customer objects.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Create a Financial Connections Session Server-side
Before you can retrieve data from a user’s bank account with Financial Connections, your user must authenticate their account with the authentication flow.
Your user begins the authentication flow when they want to connect their account to your site or application. Insert a button or link on your site or in your application, which allows a user to link their account – for example, your button might say “Link your bank account”.
Create a Financial Connections Session by posting to /the relevant part of the product:
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
- Use the customer’s ID to set account_holder.customer_account (for customer-configured Account objects) or account_holder.customer (for Customer objects).
- Add the data required by your use case to the permissions array.
- (Optional) Set the prefetch parameter for retrieving the data on account creation.
The permissions parameter controls which account data you can access. You must request at least one permission. When completing the authentication flow, your user can see the data you’ve requested access to, and provide their consent to share it.
Consider the data required to fulfil your use case and request permission to access only the data you need. Requesting permissions that go well beyond your application’s scope might erode your users’ trust in how you use their data. For example, if you’re building a personal financial management application or a lending product, you might request transactions data. If you’re mitigating fraud such as account takeovers, you might want to request ownership details.
After your user authenticates their account, you can expand data permissions only by creating a new Financial Connections Session and specifying a new value for the permissions parameter. Your user must complete the authentication flow again, where they’ll see the additional data you’ve requested permission to access, and provide consent to share their data.
The optional prefetch parameter controls which data you retrieve immediately after the user connects their account. Use this option if you know you always want a certain type of data. It removes the need to make an extra API call to initiate a data refresh.
To preserve the option to accept ACH Direct Debit payments, request the payment_method permission.
Collect a Financial Connections account Client-side
Use the returned client_secret with Stripe.js to allow your user to connect their accounts. A client_secret allows client-side Stripe SDKs to make changes to the Financial Connections Session. Don’t store it, log it, embed it in URLs, or expose it to anyone other than your end user. Make sure that you have TLS enabled on any page that includes the client secret.
Use collectFinancialConnectionsAccounts to collect an account.
const stripe = new Stripe('pk_test_GvF3BSyx8RSXMK5yAFhqEd3H')
const financialConnectionsSessionResult = await stripe.collectFinancialConnectionsAccounts({
clientSecret: "{{SESSION_CLIENT_SECRET}}",
});
This method loads the authentication flow, the client-side Stripe.js UI that helps your users link their financial accounts to you and Stripe.
The return value of stripe.collectFinancialConnectionsAccounts is a Promise. When the user completes the authentication flow, the Promise resolves with an object that contains the list of connected accounts:
{
"financialConnectionsSession": {
"id": "fcsess_123",
"accounts": [
{
"id": "fca_456",
"object": "financial_connections.account",
"category": "Checking",
"display_name": "Premium Checking",
"institution_name": "Test Bank",
"last4": "4242"
}
]
}
}
If the user connects no accounts, or exits the authentication flow early, the response contains an empty accounts array.
Successful completion of the authentication flow also sends one financial_connections.account.created webhook per account connected.
Retrieve data on a Financial Connections account Server-side
After your user has successfully completed the authentication flow, access or refresh the account data you’ve specified in the permissions parameter of the Financial Connections Session.
To protect the privacy of your user’s data, account data accessible to you is limited to the data you’ve specified in the permissions parameter.
Follow the guides for balances, ownership and transactions to start retrieving account data.
