# Prebuilt embedded finance Add financial accounts, money movement, and card issuing to your platform without a custom integration. Available in: US Launch Stripe Treasury and Issuing for platforms as a prebuilt set of embeddable components. Render Stripe financial account features such as bill pay, issuing, and cash rewards as a branded UI in your platform application while avoiding custom coding and compliance reviews. Stripe provides features such as pre-configured fees, pre-configured Radar rules, and extending [managed risk](https://docs.stripe.com/connect/risk-management/managed-risk.md) coverage to both payments and financial accounts. ## Before you begin - You must be a Connect platform using [Accounts v2](https://docs.stripe.com/connect/accounts-v2.md). - To enable Treasury for platforms for a v1 Account, you can [specify a v1 Account in a v2 endpoint](https://docs.stripe.com/connect/accounts-v2/migrate-integration.md#use-v2-endpoints-for-all-your-accounts). - You must use API version `2026-04-22.preview` or later. - You must use a [restricted API key](https://docs.stripe.com/keys/restricted-api-keys.md) with Money Management permissions for live requests for both your platform and your connected accounts. [Create one in the Dashboard](https://dashboard.stripe.com/apikeys/create?permissions%5B0%5D=rak_money_management_financial_account_read&permissions%5B1%5D=rak_money_management_outbound_payment_write&connectPermissions%5B0%5D=rak_money_management_financial_account_read&connectPermissions%5B1%5D=rak_money_management_payout_method_read). ## Available components You can render the following components in your user interface to expose the associated information and interaction. You can choose which features of the component to enable. > #### Align features > > Some features are available through multiple components. You must set a feature to the same setting across all components rendered in an account session. For example, if you render the `financial_accounts` and `recipients_list` components, they must both set the `send_money` feature to the same value. | Component | Description | Supported features | Requires | | --- | --- | --- | --- | | `financial_accounts` | Displays financial account balances and account numbers. | - `bill_management` - `card_management` - `disable_stripe_user_authentication` - `send_money` - `edit_payout_schedule` | `money_manager` capabilities | | `financial_accounts_transactions` | Unified transaction history including payments and money management activity. | - `capture_payments` - `card_management` - `card_spend_dispute_management` - `destination_on_behalf_of_charge_management` - `dispute_management` - `refund_management` | `payments` financial account | | `issuing_cards_list` | Lists and manages Issuing cards attached to a financial account. | - `card_management` - `card_spend_dispute_management` - `cardholder_management` - `disable_stripe_user_authentication` - `spend_control_management` | - `money_manager` capabilities (must be active before requesting `card_creator` capabilities) - `card_creator` capabilities | | `bills` | Enables connected accounts to pay bills from their financial account. | - `send_money` - `bill_management` - `disable_stripe_user_authentication` | - `storage` financial account - `money_manager` capabilities | | `recipients_list` | Enables connected accounts to list all their recipient-configured connected accounts. | - `disable_stripe_user_authentication` - `send_money` | - `payments` financial account - `money_manager` capabilities | ## Enable capabilities Your [connected accounts](https://docs.stripe.com/treasury/connect/v2/account-management/connected-accounts.md) must have the `money_manager` and `card_creator` configurations and active capabilities before they can interact with embedded components for financial accounts and Issuing. After you request the capabilities for each account configuration, Stripe returns a set of requirements for additional information and business verification, which might include: - Beneficial owner date of birth, address, and SSN or ITIN - KYC/KYB reconfirmation and Issuing ToS acceptance verification - EIN verification - Physical address You must collect the requirements from your connected accounts to enable the requested capabilities. You can use the [Connect embedded onboarding](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md) component to collect onboarding requirements from your connected accounts. 1. Create or update the connected account, requesting `money_manager` and `card_creator` capabilities. ```curl curl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer <>" \ -H "Stripe-Version: 2026-06-24.preview" \ --json '{ "include": [ "configuration.money_manager", "configuration.card_creator" ], "configuration": { "money_manager": { "capabilities": { "received_credits": { "bank_accounts": { "requested": true } }, "business_storage": { "inbound": { "usd": { "requested": true } }, "outbound": { "usd": { "requested": true } } }, "outbound_transfers": { "bank_accounts": { "requested": true } }, "outbound_payments": { "bank_accounts": { "requested": true } } } }, "card_creator": { "capabilities": { "commercial": { "cross_river_bank": { "charge_card": { "requested": true }, "prepaid_card": { "requested": true } } } } } } }' ``` 2. Initiate an Account Session to render the onboarding component with the features that extract and collect the requirements needed to activate the requested capabilities. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ --data-urlencode "account=identifier(connectedAccount)" \ -d "components[account_onboarding][enabled]=true" \ -d "components[account_onboarding][features][disable_stripe_user_authentication]=true" \ -d "components[account_onboarding][features][external_account_collection]=false" ``` Use `collectionOptions.only` to specify collecting only the requirements you extracted from the capabilities request. You can use wildcard matching, such as `"beneficial_owner.*"`. ```javascript const onboarding = connectInstance.create('account-onboarding', { collectionOptions: { only: ["beneficial_owner.dob", "beneficial_owner.address", "beneficial_owner.id"] } }); onboarding.setOnExit(() => { // Reload dashboard or check capability status }); ``` 3. After all capabilities are active, you can embed the prebuilt finance components to give your connected accounts access to related features through your platform site. ## Set up an AccountSession Create an [AccountSession](https://docs.stripe.com/api/account_sessions.md) on your server to render each of the components you want to embed. Specify the `features` to provide each component’s available actions. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -H "Stripe-Version: 2026-04-30.basil; embedded_connect_beta=v2" \ --data-urlencode "account=identifier(connectedAccount)" \ -d "components[notification_banner][enabled]=true" \ -d "components[financial_accounts][enabled]=true" \ -d "components[financial_accounts][features][send_money]=true" \ -d "components[financial_accounts][features][edit_payout_schedule]=true" \ -d "components[financial_accounts_transactions][enabled]=true" \ -d "components[financial_accounts_transactions][features][capture_payments]=true" \ -d "components[financial_accounts_transactions][features][dispute_management]=true" \ -d "components[financial_accounts_transactions][features][refund_management]=true" \ -d "components[financial_accounts_transactions][features][destination_on_behalf_of_charge_management]=true" \ -d "components[issuing_cards_list][enabled]=true" \ -d "components[issuing_cards_list][features][card_management]=true" \ -d "components[issuing_cards_list][features][cardholder_management]=true" \ -d "components[issuing_cards_list][features][card_spend_dispute_management]=true" \ -d "components[issuing_cards_list][features][spend_control_management]=true" \ -d "components[issuing_cards_list][features][disable_stripe_user_authentication]=true" \ -d "components[bills][enabled]=true" \ -d "components[bills][features][send_money]=true" \ -d "components[bills][features][bill_management]=true" \ -d "components[recipients_list][enabled]=true" \ -d "components[recipients_list][features][send_money]=true" \ -d "components[balances][enabled]=true" ``` ### Error handling If the connected account doesn’t meet the requirements for an enabled component, Account Session creation returns a `400` error with a descriptive code. Handle these errors server-side before returning the client secret to your front end. | Error code | Cause | Resolution | | --- | --- | --- | | `account_sessions_missing_account_configuration` | The connected account is missing a required configuration (for example, `money_manager`). | Update the connected account to add the configuration and request its capabilities. | | `account_sessions_missing_financial_account_capabilities` | The connected account is missing required `money_manager` capabilities. | Request the missing capabilities: `inbound_transfers.bank_accounts`, `outbound_transfers.bank_accounts`, `outbound_transfers.financial_accounts`, `received_credits.bank_accounts`. | | `account_sessions_missing_send_money_capabilities` | The connected account is missing required `send_money` capabilities. | Request either or both missing capabilities: `outbound_payments.bank_accounts` `outbound_payments.cards`. | | `account_sessions_missing_card_issuing_capability` | The connected account is missing required capabilities for the `issuing_cards_list` component. | Update the connected account to add the `card_creator` configuration and request its capabilities. | | `account_sessions_missing_v2_payments_financial_account` | The connected account is missing a v2 `payments` financial account | [Contact support](https://support.stripe.com/contact) — this indicates a provisioning issue. | ## Customize component appearance You can match the [appearance of embedded finance components](https://docs.stripe.com/connect/get-started-connect-embedded-components.md?platform=web#customize-the-look-of-connect-embedded-components) with your brand using the following appearance variables when you render the components. | Variable | Description | | --- | --- | | `colorPrimary` | Button and accent color | | `colorBackground` | Component background | | `fontFamily` | Font applied to all text | | `borderRadius` | Corner radius for cards and inputs | | `spacingUnit` | Base spacing multiplier | ## Initialize ConnectJS Initialize ConnectJS with your publishable key, the client secret from the Account Session, and your appearance settings. ```javascript import { loadConnectAndInitialize } from "@stripe/connect-js"; // Fetch AccountSession and capability status from your server const { client_secret, money_manager_active, issuing_active } = await getAccountSession(accountId); const stripeConnectInstance = loadConnectAndInitialize({ publishableKey: "{{PUBLISHABLE_KEY}}", fetchClientSecret: async () => client_secret, appearance: { overlays: "dialog", variables: { // Branding colorPrimary: "#635BFF", colorBackground: "#FFFFFF", colorText: "#1A1A1A", colorBorder: "#E5E7EB", // Typography fontFamily: "Inter, system-ui, sans-serif", fontSizeBase: "14px", // Shape borderRadius: "8px", spacingUnit: "12px" } } }); ``` ## Render components You can only render embedded components when the connected account has the active required configuration capabilities. You can show the standard [balances](https://docs.stripe.com/connect/supported-embedded-components/balances.md) embedded component for connected accounts without (or still onboarding) financial account and issuing related capabilities. ```javascript const stripeConnectInstance = loadConnectAndInitialize({ publishableKey: "pk_live_...", fetchClientSecret: async () => { const response = await fetch('/api/account-session', { method: 'POST', body: JSON.stringify({ account_id: connectedAccountId }) }); const { client_secret } = await response.json(); return client_secret; } }); // Financial accounts components — render when money_manager capabilities are active const fa = stripeConnectInstance.create("financial-accounts"); document.getElementById("fa-container").appendChild(fa); const txns = stripeConnectInstance.create("financial-accounts-transactions"); document.getElementById("txns-container").appendChild(txns); const recipients = stripeConnectInstance.create("recipients-list"); document.getElementById("recipients-container").appendChild(recipients); // Issuing — render when card_creator capabilities are active const cards = stripeConnectInstance.create("issuing-cards-list"); document.getElementById("cards-container").appendChild(cards); ``` ## Handle events Register event handlers on components to respond to user actions. Common use cases include: - Refreshing your dashboard after a user sends money. - Updating account state after a transfer completes. - Checking capability status after onboarding exits. ```javascript const fa = stripeConnectInstance.create("financial-accounts"); // Called when the user completes or exits a modal flow (send money, transfer, add recipient) fa.setOnExit(() => { // Refresh your UI, re-fetch account balances, or update transaction lists refreshDashboard(); }); ``` For the onboarding component, use `setOnExit` to detect when a user completes step-up compliance and check whether capabilities have activated: ```javascript const onboarding = stripeConnectInstance.create("account-onboarding", { collectionOptions: { only: requiredFields } }); onboarding.setOnExit(() => { // Check if capabilities are now active and update which components to render checkCapabilityStatus(connectedAccountId); }); ``` ## See also - [Financial accounts](https://docs.stripe.com/treasury/connect/v2/account-management/financial-accounts.md) - [Connected accounts](https://docs.stripe.com/treasury/connect/v2/account-management/connected-accounts.md)