Relink Financial Connections accounts used for data products.Öffentliche Vorschau
Reactivate inactive accounts to retrieve data and update data permissions.
Your customers might need to reauthorize a previously linked Financial Connections account for multiple reasons, such as reactivating an account to restore data access or updating the data permissions available on the account.
Verstehen, wenn ein Konto inaktiv wirdServer-side
Your customer’s linked Financial Connections Accounts might become inactive for several reasons, including:
- Der Stripe vom Finanzinstitut zur Verfügung gestellte OAuth-Token läuft nach einer bestimmten Zeitspanne oder aufgrund von Inaktivität ab.
- The financial institution changes their authentication requirements, such as requiring multi-factor authentication (MFA), or the customer changes their username and password.
- The customer revokes access through their online banking portal.
- The customer closes their account at their financial institution.
We notify you when a Financial Connections Account becomes inactive with the financial_ webhook. Inactive Financial Connections Accounts include additional status metadata in the status_ subhash.
You can’t repair every underlying cause for an inactive account. For example, you can’t repair a closed account unless your customer reopens it. Accounts that you can’t repair have a status_ of none.
You can retrieve a Financial Connections Account at any time to check its status.
- The
status_property includes a high-level reason why a Financial Connections Account is inactive. For example, when an account’s OAuth connection expires, its status isdetails. inactive. cause access_.expired - The
status_property includes the action to take, if any, to reactivate the account. If your customer can reactivate the account by completing a relink authentication flow, its status isdetails. inactive. action relink_.required
When status_ is relink_, prompt your customer to complete the authentication flow to reactivate the account.
For example, you might create a webhook handler like the one below to process webhook events:
The status and status_ of an account are also available when you retrieve a Financial Connections Account.
{ "id":, "object": "financial_connections.account", //..., "authorization":"{{ACCOUNT_ID}}", "status": "inactive", "status_details": { "inactive": { "action": "relink_required", "cause": "access_expired" } } }"{{AUTHORIZATION_ID}}"
Create a Financial Connections sessionServer-side
Create a Financial Connections session and specify the following:
Set account_holder to the same value of the Financial Connections account’s
account_field.holder Set the data permissions parameter. The
permissionsparameter is an array containing values, which might include any ofpayment_,method balances,ownership, ortransactions. To protect the privacy of your user’s data, you can only access the account data you specified in the permissions parameter. Carefully consider the data required to fulfill your use case, and request permission to access only the data you require. When completing the authentication flow, your user sees the data you specified from thepermissionsparameter, and provides their consent to share this data. The following code example demonstrates how to collectbalancesandpayment_.method Set the relink_options.authorization parameter to the
authorizationyou want to relink.(Optional) Set filters.account_subcategories to limit which types of accounts can be relinked.
This request returns a response similar to the following:
{ "id": "fcsess_abcd", "object": "financial_connections.session", "livemode": true, "account_holder": { "customer": "cus_NfjonN9919dELB", "type": "customer" }, "accounts": [], "client_secret": "fcsess_client_secret_UsESkKYzeiRcivgDJZfxZRFh", "permissions": ["payment_method", "balances"], "relink_options": { "authorization": "{{AUTHORIZATION_ID}}" } }
Initiate the relink flowClient-side
Use the returned client_secret with client-side Stripe SDKs to allow your user to relink their accounts. A
client_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.secret In Stripe.js, use collectFinancialConnectionsAccounts to show the relink authentication flow to your customer. The return value of
collectFinancialConnectionsAccountsis a Promise. When the user completes the authentication flow, the Promise resolves with an object that contains a relink_result sub-object. If successful, it also contains the list of relinked accounts.// Fetch existing accounts, or embed them in the server-rendered HTML const existingAccounts = await fetchExistingAccounts(); const {financialConnectionsSession, error} = await stripe.collectFinancialConnectionsAccounts({ clientSecret: "fcsess_client_secret_UsESkKYzeiRcivgDJZfxZRFh" }); if (financialConnectionsSession) { const { relink_options: relinkOptions, relink_result: relinkResult } = financialConnectionsSession; if (relinkResult.authorization && relinkOptions.authorization === relinkResult.authorization) { // Relink succeeded for given authorization // Compare financialConnectionsSession.accounts and existingAccounts to determine if all accounts were reauthorized } else if (relinkResult.authorization) { // Customer authenticated successfully, but generated a new Authorization // Reconcile financialConnectionsSession.accounts and existingAccounts } else { // Relink was not successful switch (financialConnectionsSession.relink_result.failure_reason) { case 'no_account': // user successfully authenticated with their bank, but did not link the expected account break; case 'no_authorization': // user did not successfully authenticate with their bank break; case 'other': // unexpected failure break; } } }
Daten für ein Financial Connections-Konto abrufenServer-side
After your customer has successfully completed the authentication flow, you can access or refresh the account data you specified in the permissions parameter of the Financial Connections session.
To protect the privacy of your user’s data, you can only access account data that you specified in the permissions parameter.
Follow the guides for balances, ownership, and transactions to retrieve account data.
OptionalRetrieve a Financial Connections authorization
Financial Connections accounts have an authorization property that corresponds to a Financial Connections authorization resource. The authorization resource describes the overall status of the data connection for all accounts on the authorization. When several accounts reference the same authorization, relinking one account might reactivate other accounts on the same authorization. This is expected, and only affects your integration if you:
- Have a webhook endpoint that listens to
financial_events.connections. account. reactivated - Have business logic that assumes a relink session which requires the user to select a single account will reactivate exactly one account.
Retrieve an authorization to see its status:
{ "id":, "object": "financial_connections.authorization", "account_holder": { "customer": "cus_TnvzdXv6VwjyrN", "type": "customer" }, "institution": "fcinst_Qn1a6jqpI0Gb84", "institution_name": "StripeBank", "livemode": false, "status": "active", "status_details": {} }"{{AUTHORIZATION_ID}}"
Testing
Follow the testing guide to learn how to connect a test bank account through Financial Connections. To test with a deactivated account, search for the Inactive accounts institution in the authentication flow, and connect any of the provided bank accounts. To test tokenized account number refresh behavior, search for the Tokenized Account Numbers institution in the authentication flow, and connect any of the provided bank accounts.