Private preview
Prebuilt embedded finance Private preview
Add financial accounts, money movement and card issuing to your platform without a custom integration.
Available in:
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 extensive coding and compliance reviews. Stripe provides features such as pre-configured fees, pre-configured Radar rules and extending managed risk coverage to both payments and financial accounts.
Prebuilt embedded finance is in private preview. Request access.
Before you begin
-
You must be a Connect platform using Accounts v2 .
-
To enable Treasury for platforms for a v1 Account, you can specify a v1 Account in a v2 endpoint .
-
You must use API version 2026-06-24. preview or later.
-
You must use a restricted API key for live requests for both your platform and your connected accounts. Create a restricted key with the following permissions :
-
Money Management Financial Accounts: Read
-
Money Management Payout Methods: Write
-
Money Management Outbound Payments: Write
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 |
Financial accounts
Financial account transactions
Bills
Recipients
Enable capabilities
Your connected accounts 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 the related setting
- 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 component to collect onboarding requirements from your connected accounts.
- Create or update the connected account, requesting
money_managerandcard_creatorcapabilities. Command Line cURLcurl -X POST https://api.stripe.com/v2/core/accounts \ -H "Authorization: Bearer sk_test_Ou1w6LVt3zmVipDVJsvMeQsc" \ -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_payments": { "bank_accounts": { "requested": true }, "financial_accounts": { "requested": true } }, "outbound_transfers": { "bank_accounts": { "requested": true }, "financial_accounts": { "requested": true } }, "inbound_transfers": { "bank_accounts": { "requested": true } }, "received_debits": { "bank_accounts": { "requested": true } } } }, "card_creator": { "capabilities": { "commercial": { "celtic": { "spend_card": { "requested": true } } } } } } }' - Initiate an Account Session to render the onboarding component with the features that extract and collect the requirements needed to activate the requested capabilities. Command Line Select a language cURL Stripe CLI Ruby Python PHP Java Node.js Go.NET No results
curl https://api.stripe.com/v1/account_sessions \ -u "sk_test_Ou1w6LVt3zmVipDVJsvMeQsc:" \ --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"UsecollectionOptions.onlyto specify collecting only the requirements you extracted from the capabilities request. You can use wildcard matching, such as"beneficial_owner.*". Render for outstanding requirements onlyconst onboarding = connectInstance.create('account-onboarding', { collectionOptions: { only: ["beneficial_owner.dob", "beneficial_owner.address", "beneficial_owner.id"] } }); onboarding.setOnExit(() => { // Reload dashboard or check capability status }); - 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 on your server to render each of the components you want to embed. Specify the features to provide each component’s available actions.
Command Line
Select a language
cURL
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
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 – this indicates a provisioning issue. |
Customise component appearance
You can match the appearance of embedded finance components with your brand using the following appearance variables when you render the components.
| Variable | Description |
|---|---|
colorPrimary | Button and accent colour |
colorBackground | Component background |
fontFamily | Font applied to all text |
borderRadius | Corner radius for cards and inputs |
spacingUnit | Base spacing multiplier |
Initialise ConnectJS
Initialise ConnectJS with your publishable key, the client secret from the Account Session and your appearance settings.
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 embedded component for connected accounts without (or still onboarding) financial account and issuing related capabilities.
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.
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:
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);
});
Join the waiting list
Request preview access to prebuilt embedded finance.
Enter your email to request access.