Stripe Treasury Fresh
Embedded financial accounts for platforms. Offer your connected accounts financial services including bank accounts with routing numbers, money movement, and card issuance.
Availability
Treasury for platforms is available only to US-based platforms with B2B use cases and US-based connected accounts.
| Requirement | Detail |
|---|---|
| Platform location | United States (physical address, not PO box) |
| Connected account location | United States only |
| Business type | B2B only — no consumer use cases |
| Connected account type | Custom only (platform-controlled dashboard, platform bears loss liability) |
| Account representative | Must have at least one US-based representative |
What you can build
- Financial accounts with US routing/account numbers (ACH, wire)
- FDIC pass-through insurance eligible balances
- Debit cards attached to financial account balances (via Issuing)
- Money movement between connected accounts
- External bank funding for financial accounts
Prohibited business types
The following business types cannot use Treasury for platforms:
Prohibited (never eligible):
- Adult industry, escort, or dating services
- Arms trading
- Casinos, gambling, or gaming
- Debt collection or credit restoration
- Money services and currency exchange
- Payday lending
- Shell corporations
- Multi-level marketing and pyramid schemes
Restricted (require enhanced review):
- Insurance services
- Investment and brokerage services
- Lending and cash advance
- Money Services Businesses (MSBs)
- Pharmaceuticals
- Buy Now Pay Later (BNPL)
- Marketplaces
- NFTs and virtual asset service providers
Businesses owned by politically exposed persons (PEPs) are prohibited.
Core objects
| Object | Description |
|---|---|
FinancialAccount | The embedded bank account — has routing number, supports ACH/wire |
OutboundPayment | Send funds from a financial account to an external account |
OutboundTransfer | Move funds between financial accounts on the same platform |
InboundTransfer | Pull funds from an external bank account into a financial account |
ReceivedCredit | Funds received into a financial account (ACH credit, wire) |
ReceivedDebit | Funds pulled from a financial account by an external party |
Transaction | Record of any money movement on a financial account |
Create a financial account
Financial accounts are created for connected accounts. Use the Stripe-Account header:
bash
curl https://api.stripe.com/v1/treasury/financial_accounts \
-u "sk_test_YOUR_KEY:" \
-H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \
-d "supported_currencies[]=usd" \
-d "features[outbound_payments][ach][requested]=true" \
-d "features[outbound_payments][us_domestic_wire][requested]=true" \
-d "features[inbound_transfers][ach][requested]=true" \
-d "features[financial_addresses][aba][requested]=true"Retrieve the financial account to get the routing number:
bash
curl https://api.stripe.com/v1/treasury/financial_accounts/{{FA_ID}} \
-u "sk_test_YOUR_KEY:" \
-H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \
-d "expand[]=financial_addresses"The financial_addresses array contains the ABA routing number and account number.
Send money (OutboundPayment)
Send funds to an external bank account:
bash
curl https://api.stripe.com/v1/treasury/outbound_payments \
-u "sk_test_YOUR_KEY:" \
-H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \
-d financial_account={{FA_ID}} \
-d amount=5000 \
-d currency=usd \
-d "destination_payment_method_data[type]=us_bank_account" \
-d "destination_payment_method_data[us_bank_account][routing_number]=110000000" \
-d "destination_payment_method_data[us_bank_account][account_number]=000123456789" \
-d "destination_payment_method_data[us_bank_account][account_holder_type]=individual"Pull money (InboundTransfer)
Pull funds from an external bank account into a financial account:
bash
curl https://api.stripe.com/v1/treasury/inbound_transfers \
-u "sk_test_YOUR_KEY:" \
-H "Stripe-Account: {{CONNECTED_ACCOUNT_ID}}" \
-d financial_account={{FA_ID}} \
-d amount=10000 \
-d currency=usd \
-d origin_payment_method={{PAYMENT_METHOD_ID}}Fraud management requirements
Stripe requires Treasury platforms to maintain a fraud risk management process:
- Establish processes to identify and understand connected account businesses
- Implement robust tools to prevent unauthorized account access
- Educate connected accounts on fraud risks and establish alert processes
- Conduct root cause analyses after fraud incidents
Key webhook events
| Event | When it fires |
|---|---|
treasury.financial_account.created | New financial account created |
treasury.financial_account.features_status_updated | Feature enabled or disabled |
treasury.outbound_payment.created | OutboundPayment initiated |
treasury.outbound_payment.posted | Funds successfully sent |
treasury.outbound_payment.failed | OutboundPayment failed |
treasury.received_credit.created | Funds received into financial account |
treasury.received_debit.created | Funds pulled from financial account |
treasury.transaction.created | Any money movement on financial account |
Treasury + Issuing
Attach Issuing cards to financial account balances for a complete embedded finance solution. Cards draw funds directly from the financial account balance, giving connected accounts a single unified balance for spending and receiving.
See the Issuing page for card creation details. Use the financial_account parameter on cards to link them to the Treasury balance.