Payouts and top-ups from Stripe Payments
You can move money from Stripe Payments to Stripe Treasury with payouts, and from Stripe Treasury back to Stripe Payments with top-ups.
Financial accounts as external accounts
Before you can send payouts to a Treasury financial account or receive top-ups from a Treasury financial account, you must set the financial account as an external account (BankAccount
object) connected to the relevant Stripe account.
- Connected accounts: Use
POST /v1/accounts/{{CONNECTED_ACCOUNT_ID}}/external_accounts
with the financial accountrouting_number
andaccount_number
information to create aBankAccount
object you can use for payouts from a connected account - Platform accounts: Use the Stripe Dashboard to create a
BankAccount
object you can use for payouts from, or top-ups to, your platform account
If there isn’t a default external account set for the usd
currency, the financial account becomes the account’s default payout destination. If there is an external account already set as the default for usd
but you want the financial account to be the new default for a connected account, set default_for_currency
to true
in your call (as in the following example). If you have an automatic payout schedule enabled, this changes the target of the payouts to the financial account.
curl https://api.stripe.com/v1/accounts/{{CONNECTED_ACCOUNT_ID}}/external_accounts \ -u
: \ -d "external_account[object]"="bank_account" \ -d "external_account[routing_number]"="{{FINANCIAL_ACCOUNT_ROUTING_NUMBER}}" \ -d "external_account[account_number]"="{{FINANCIAL_ACCOUNT_ACCOUNT_NUMBER}}" \ -d "external_account[country]"="US" \ -d "external_account[currency]"="usd" \ -d "default_for_currency"="true"sk_test_4eC39HqLyjWDarjtT1zdp7dc
If successful, the response returns the newly created BankAccount
object.
{ "id": "{{BANK_ACCOUNT_ID}}", "object": "bank_account", "account": "{{CONNECTED_ACCOUNT_ID}}", "account_holder_name": null, "account_holder_type": null, "available_payout_methods": [ "standard", "instant" ], ... "default_for_currency": true, ... }
Payouts
Payouts move money from an account balance (also called payments balance or acquiring balance) to a Treasury financial account balance or external bank account. Every Stripe platform account and connected accounts on the platform have an account balance that stores the money the account owners have earned (see the Stripe Treasury accounts structure guide for more information on Treasury account types). Those funds are not directly accessible for use outside Stripe until users transfer the money into the proper account. With Stripe Treasury, that account is a financial account, which you can fund using automatic or manual payouts. See the Pay out money guide to learn more about payouts with Stripe Connect.
Automatic payouts
If you have connected accounts on your platform with an automatic payout schedule, you can change the target of direct payouts from the connected account users’ external bank accounts to their financial accounts instead. This requires the Treasury financial account to be set up as a BankAccount
object; see the Financial accounts as external accounts section for more information.
Automatic payout speeds
By default, when using automatic payouts, funds from incoming card payments become available in the financial account balance two business days after the payment is received (T+2 schedule). Other payment types, such as ACH payments take longer.
After a platform-level credit approval, you can enable T+1 faster payouts on a per-account basis for connected accounts. You can set the interval
and delay_days
parameters with POST /v1/accounts
to accelerate payout schedules automatically (or you can manually trigger faster payouts as described below). Contact treasury-support@stripe.com if you want to request access to faster payouts (manual, automated, or both) for the connected accounts on your platform.
T+1 faster payout schedules apply to all payment types, including card payments and ACH payments.
T+1 automatic payout schedule
To have incoming payments automatically available in the financial account on the next business day, send a request with interval
set to daily
and delay_days
set to 1
.
Use POST /v1/accounts/{{CONNECTED_ACCOUNT_ID}}
to update the payout schedule.
The response confirms the updated settings.
{ ... "settings": { "payouts": { "schedule": { "interval": "daily", "delay_days": 1, }, }, ... } ... }
Manual payouts
You can use manual payouts to send specific portions of an account balance to that account’s Treasury financial account.
Use POST /v1/payouts
with the bank account id
associated with your financial account specified as the destination
parameter value. If you don’t have a BankAccount
object associated with your Treasury financial account yet, see the Financial accounts as external accounts section for more information.
If successful, the response returns the newly created Payout
object.
{ "id": "{{PAYOUT_ID}}", "object": "payout", "amount": 1000, ... "currency": "usd", "destination": "{{BANK_ACCOUNT_ID}}", ... "method": "standard", ... }
Manual payout speeds
Two speed methods are available for manual payouts - standard
and instant
.
Manual payouts using standard
speed can only draw on the available
balance, and funds will generally arrive in the financial account in one business day (T+1 schedule).
If your platform is enabled for faster payouts, you can use instant
manual payouts to move funds to a connected account’s financial account within an hour. You can request instant manual payouts at any time, including weekends and holidays, and instant manual payouts can draw on the instant_available
balance of a Stripe account. If your platform is not enabled for faster payouts and you’re interested in adding the ability, contact treasury-support@stripe.com to request the feature.
To request an instant manual payout rather than a standard manual payout, change the method
parameter in the payout request from standard
to instant
.
Testing payouts
You can simulate a payout to a connected account financial account using test mode API keys.
You can only simulate a payout to a platform financial account using the Dashboard. While in test mode, click the Add money button in the upper right of the Balances view of your Dashboard to open the Add Money dialog. Follow the prompts to simulate sending money from your platform account balance to your financial account balance.

Add money button
Top-ups
As the owner of a Connect platform, you can use your Treasury financial account balance to top-up your platform account balance instead of using an external bank account. To top-up a platform account balance, you must set the platform’s Treasury financial account as the platform’s default external BankAccount
using the Stripe Dashboard as described in the Adding funds to your platform balance guide.
Unlike true external bank accounts, new BankAccount
objects with Treasury financial account details are automatically verified upon creation so they don’t require verification with microdeposits.
After you set the Treasury financial account as your platform’s default external bank account, use POST /v1/topups
to create the top-up.
If successful, the response returns the Top-Up
object.
{ "id": "{{TOP_UP_ID}}", "object": "topup", "amount": 2000, "currency": "usd", "description": "Top-up", ... }
Learn more about adding funds to your platform account balance with Stripe Connect.