Legacy
Accounts structure Legacy
Learn how the account components of Treasury for platforms interact.
Legacy integration
The v1 version of Treasury for platforms is a legacy integration that doesn’t support many of the features introduced in Treasury for platforms v2. Don’t build a new v1 integration.
Use this guide to understand the technical components of Stripe Treasury for platforms, specifically the different account types.
Account types
Your platform must have Stripe Connect to use Treasury for platforms. In its most basic form, a Connect integration includes a platform account with many connected accounts, each owned by a seller or service provider that uses the platform. Both the platform account and its connected accounts are Account objects in the Stripe API.
Accounts v2 API compatibility
The Accounts v2 API doesn’t support Treasury workflows. If you have accounts created with Accounts v2, you can use Accounts v1 to manage the treasury and card_issuing capabilities. For details, see Use Accounts as customers.
Treasury for platforms only supports connected accounts that don’t use a Stripe-hosted dashboard and where your platform is responsible for requirements collection and loss liability, including Custom connected accounts. Learn how to create connected accounts that work with Treasury for platforms.
As a platform with connected accounts, you’re responsible for maintaining a minimum API version, communicating terms of service updates to your connected accounts, handling information requests from them, and providing them with support. Because your platform is ultimately responsible for the losses your connected accounts incur, you’re also responsible for vetting them for fraud. To learn more, read the Treasury for platforms fraud guide.
A Connect platform with connected accounts
Treasury for platforms includes another type of Stripe account, a financial account. When you onboard your platform to Treasury for platforms, Stripe automatically creates and assigns a FinancialAccount object to your platform account. As the platform, you request the treasury capability when requesting the capabilities you need for your connected accounts. After you request it, Stripe updates the connected account’s Account object to include additional requirements in its requirements hash. You can create financial accounts for your connected accounts, but until you gather the requirements from your connected account owners, the financial accounts aren’t accessible. For more information on using financial accounts, see Working with financial accounts.
Account balances
Each account in Stripe Connect (both platform and connected accounts) has an account balance that tracks pending and available funds for that account. With Treasury for platforms, each of these accounts can also have a financial account, which has a balance of its own. You can use Treasury for platforms to transfer funds between the platform account and financial account, but their respective balances always remain separate. However, you can’t transfer funds from a platform end-user’s financial account to their connected account. For more information on platform and connected account balances, see Understanding Connect account balances. For more information on financial account balances, see Working with balances and transactions.
Flow of funds between accounts
Flow of funds between accounts
Although the payments balance and financial account balances are separate, Treasury for platforms supports the flow of funds between the two. Treasury for platforms also enables you to transfer funds from your platform financial account to the financial accounts attached to your platform’s connected accounts. You can use Payouts to send funds from your payment balance to your financial account or to the financial accounts attached to your platform’s connected accounts. To move money between two financial accounts, Treasury for platforms uses OutboundPayment objects.
Transfers affect funds on the Stripe Account Balance, so if you want to move funds between two financial accounts, you must use OutboundPayments.
