Understanding Connect Account Balances

    Learn how Stripe account balances work when using Connect. If you need help after reading this, search our documentation or check out answers to common questions. You can even chat live with other developers in #stripe on freenode.

    Both your platform account and a connected account are still just Stripe accounts, each with their own, separate account balance.

    All Stripe accounts can have balances in these two states:

    • pending, meaning the funds are not yet available to pay out
    • available, meaning the funds can be paid out now

    With non-Connect accounts, processing charges increases the Stripe account balance. The charged amount, less any Stripe fees, is initially reflected on the pending balance, and becomes available on a 2-day rolling basis. (This delay can vary by country and account.) Available funds can be paid out to a bank account or debit card. Payouts reduce the Stripe account balance accordingly.

    With Connect, your platform account and each connected account has their own pending and available balances. How funds from payments are allocated between the two types of accounts depends upon which charging approach is used.

    Further, a platform account can also have a connected_reserved balance, used to offset negative balances on connected accounts.

    Accounting for negative balances

    Some actions, such as refunds and chargebacks, create negative transactions in a Stripe account. If at all possible, Stripe automatically offsets negative transactions against future payments to ensure a positive Stripe balance.

    Stripe first assigns negative transactions to the account on which the associated charge was made. For example, when charging on a connected account, a refund or chargeback comes from the connected account. When charging on your platform, a refund or chargeback comes from your platform account.

    However, ultimate responsibility for negative balances depends upon the relationship between your platform and the connected account. A connected Standalone Account is always ultimately responsible to cover negative balances. For Managed Accounts, the platform is ultimately responsible to cover negative balances.

    To check the balance of a Managed Account, perform a retrieve balance API call authenticated as the connected account. The returned Balance object reflects the pending and available balances.

    curl https://api.stripe.com/v1/balance \
       -u sk_test_BQokikJOvBiI2HlWgH4olfQ2: \
       -H "Stripe-Account: CONNECTED_STRIPE_ACCOUNT_ID"
    
    Stripe.api_key = {PLATFORM_SECRET_KEY}
    
    balance = Stripe::Balance.retrieve(
      {:stripe_account => CONNECTED_STRIPE_ACCOUNT_ID}
    )
    
    stripe.api_key = {PLATFORM_SECRET_KEY}
    
    balance = stripe.Balance.retrieve(
      stripe_account=CONNECTED_STRIPE_ACCOUNT_ID
    )
    
    StripeStripe::setApiKey({PLATFORM_SECRET_KEY});
    
    $balance = \Stripe\Balance::retrieve(
      array("stripe_account" => CONNECTED_STRIPE_ACCOUNT_ID)
    );
    
    Stripe.apiKey = {PLATFORM_SECRET_KEY};
    RequestOptions requestOptions = RequestOptions.builder().setStripeAccount(CONNECTED_STRIPE_ACCOUNT_ID).build();
    
    Balance balance = Balance.retrieve();
    
    var stripe = require('stripe')({PLATFORM_SECRET_KEY});
    
    var balance = stripe.balance.retrieve({
      stripe_account: CONNECTED_STRIPE_ACCOUNT_ID
    }, function(err, balance) {
      // asynchronously called
    );
    

    While an account's balance is negative, you cannot send payouts to the account's bank or debit card on their behalf. Stripe will resume sending payouts to the managed account once the account's Stripe balance is again positive.

    Understanding connected reserved balances

    To ensure funds can be covered, Stripe holds a reserve on your platform account’s available balance to cover any negative available balances across your Managed Accounts. You’ll see this reserve reflected in the Dashboard and exported reports (as a reserve transaction).

    To see the current reserves held on your account, perform a retrieve balance API call but for your own account (i.e., not authorized as another user as in the above).

    To clear a connected account’s negative balance, and thereby remove the reserve on your account, send a transfer to the applicable account. If a connected account has a negative balance for more than 180 days, Stripe will automatically transfer your reserves to the connected account to zero out the balance.

    Holding funds

    Some platforms may need more granular control over their payout schedule. This can be accomplished by:

    For compliance reasons, it is only possible to hold funds for up to 90 days from charge creation to payout in either case.

    Further reading

    Discover what other Connect functionality is available!