After you enable Treasury on your platform, add FinancialAccount objects to your platform architecture to enable the efficient storing, sending, and receiving of funds. Stripe attaches a financial account to your platform account after enablement, and lets you provision an individual financial account for each eligible custom connected account on your platform.
In the Stripe API,
FinancialAccount objects serve as the source and destination of money movement API requests. You request
Features through the API to assign to
FinancialAccounts that provide additional functionality for the financial accounts on your platform.
A financial account operates a distinct balance of funds from the connected account payments balance of the account it’s linked to. For example, the owner of a custom connected account on your platform might have a 100 USD connected account balance and a 200 USD financial account balance. In this scenario, the connected account owner has a sum of 300 USD spread between their financial account and connected account balances. These two balances remain separate, but the API provides the ability to move money from the connected account balance to the financial account balance.
Multiple financial accounts
The multiple financial account beta feature enables you to open multiple financial accounts for a single custom connected account. Contact email@example.com to access test mode for this feature and join the wait list.
Create a Financial Account
After Stripe adds the
treasury capability to an account and it’s marked
active, you can create a
FinancialAccount object for the connected account. To do this, call
FinancialAccounts and request the
Features you want to provide:
The response, when you request features on financial account creation, indicates their status in the
Activation might be instantaneous for some features (for example,
card_issuing). However, other features, like
financial_addresses.aba, activate asynchronously, might stay
pending for up to 30 minutes while Stripe communicates with external systems. After all of the relevant features are active, you get confirmation on the
treasury.financial_account.features_status_updated webhook listener. See Available features for more information on financial account features.
Link a bank account
To let your customers transfer money to and from an external account, create a
SetupIntent with the required parameters and attach it to
self to denote that the external account is owned by your customer:
The API response includes a unique identifier for the
payment_method that’s used to reference this bank account when making ACH transfers:
Before you can use a bank account, it must be verified using microdeposits (which we focus on here) or the faster financial connections option. The
SetupIntent response from the previous step includes a
hosted_verification_url which you must present to your customer for them to input the associated descriptor code of the microdeposit. Use the value
SM11AA to verify the bank account, or test a variety of other cases by using the test account numbers Stripe provides.
Add funds to the financial account
The following request transfers 200 USD using an
account-attached payment method into the financial account with the provided ID. The
Stripe-Account header value identifies the Stripe account that owns both the financial account and the payment method:
If successful, the response provides the
InboundTransfer object. The object includes a
hosted_regulatory_receipt_url that provides access to details of the transaction for the account holder on the Homebox platform:
"description": "Funds for repair",
"statement_descriptor": "Invoice 12",
At this point, the connected account has a
FinancialAccount that has been loaded with funds received from an
InboundTransfer that you can spend using cards or
OutboundPayments like ACH or wires.
To learn more, see: