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.
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 tokenized 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 quickly reuse their bank account details across Stripe merchants.
Set up StripeServer-sideClient-side
Register for Financial Connections after your account is approved for live-mode access.
Server-side 
This integration requires endpoints on your server that talk to the Stripe API. Use the official libraries for access to the Stripe API from your server:
Client-side 
The Stripe iOS SDK is open source, fully documented, and compatible with apps supporting iOS 13 or above.
Note
For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.
Create or retrieve an account holderServer-side
Create a Customer object when users create an account with your business. By providing an email address, Financial Connections can optimize the authentication flow by dynamically showing a streamlined user interface, for returning Link users.
Create a Financial Connections SessionServer-side
Note
You can find a running implementation of this endpoint available on Glitch for quick testing.
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 /v1/financial_
:
- Set
account_
to the Customerholder[customer] id
. - Set the data
permissions
parameter to include the data required to fulfill your use case. - (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 fulfill 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_
permission.
Set up a return URLClient-side
The customer might navigate away from your app to authenticate (for example, in Safari or their banking app). To allow them to automatically return to your app after authenticating, configure a custom URL scheme and set up your app delegate to forward the URL to the SDK. Stripe doesn’t support universal links.
Note
Stripe might append additional parameters to the provided return URL. Make sure that return URLs with extra parameters aren’t rejected by your code.
Integrate FinancialConnectionsSheetClient-side
Before displaying the Financial Connections flow, your page should include a Connect Financial Account button to present the Stripe’s UI.
In your app, retrieve the FinancialConnectionsSession
client secret and publishable key from the endpoint you created in the previous step. Set your publishable key using StripeAPI.
and initialize FinancialConnectionsSheet
. Pass the returnURL
you set up in the previous step.
When the customer taps the Connect Financial Account button, call FinancialConnectionsSheet#present
to present the financial connections sheet. After the customer completes the financial connections flow, the sheet is dismissed and the completion block is called with a FinancialConnectionsSheetResult
.
Retrieve data on a Financial Connections accountServer-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.