Create a Financial Connections Session server-side by calling the Stripe API at /v1/financial_connections/sessions with parameters including account_holder (type and id), permissions array (e.g., balances, transactions), and optionally filters for account types.
Return the client_secret from the session object to your frontend.
Use the Stripe.js collectBankAccountToken or the Financial Connections SDK method with the client_secret to launch the hosted account-linking UI where the user authenticates with their bank.
On success, receive the FinancialConnections.Account object(s); each has an id — store these account IDs server-side.
Retrieve balances by calling GET /v1/financial_connections/accounts/{id}/refresh with feature=balance, then read the balance object on the account.
For transaction data (if permissions include transactions), call GET /v1/financial_connections/transactions filtering by account.
Known gotchas
Financial Connections permissions are granted per session — if you later need an additional permission (e.g., you initially only requested balances but now want transactions), you must create a new session and have the user re-link.
Balance data is not real-time for all institutions; Stripe caches balances and the last_refreshed_at timestamp on the balance object tells you how stale the data may be.
Financial Connections is distinct from Stripe's ACH payment flow — linking an account for data access does not automatically enable it for payments; you must also attach it as a PaymentMethod separately if needed.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp