# Stripe: balance_insufficient

> Stripe returns balance_insufficient when a transfer or payout is larger than the account’s available balance. Check the available balance, then retry.

Canonical: https://app369.com/fix/stripe-balance-insufficient/
Last updated: 2026-11-09

balance_insufficient is the Stripe error for a transfer or payout larger than the account’s available balance. It is about your Stripe balance, not a customer’s card.

**Short answer**

Retrieve the balance and use the available amount, in the right currency, as the limit for the transfer or payout. Funds from recent payments sit in pending until they become available. For Connect transfers paid from a specific charge, set source_transaction: the transfer goes through right away, and the seller can use the money once the charge’s funds become available.

Rather not fix it yourself? [**Stripe Billing Fix and Setup**](https://app369.com/fixed-price/stripe-billing-setup/) handles it at a fixed price, agreed before work starts.

## **Why the balance is too low, and the fix**

1. 01 ### **The amount counts pending funds**
  > “For transfers and payouts, use an amount less than or equal to the account’s available balance.” [**Stripe, Error codes (balance_insufficient)**](https://docs.stripe.com/error-codes) Recent payments land in the pending balance first. A payout or transfer sized from total sales fails until those funds become available. Read the available balance before sending money out.```
const balance = await stripe.balance.retrieve();
const usd = balance.available.find((b) => b.currency === 'usd');
const amount = Math.min(requested, usd?.amount ?? 0);
if (amount > 0) {
  await stripe.payouts.create({ amount, currency: 'usd' });
}
```
2. 02 ### **A Connect transfer runs before the charge settles** A marketplace that transfers to a seller right after a charge can outrun the available balance. Pass the charge as source_transaction: the transfer is made from that charge’s pending funds right away, and they become usable in the seller’s account when the charge’s funds become available.```
await stripe.transfers.create({
  amount: 8000,
  currency: 'usd',
  destination: 'acct_seller',
  source_transaction: charge.id,
});
```
3. 03 ### **The balance is in another currency** Stripe reports the balance per currency. A payout in USD can fail when the funds are in EUR; check the currency in balance.available.
4. 04 ### **Refunds or disputes lowered the balance**
  > “Stripe can’t complete this operation because the associated account doesn’t have enough available balance.” [**Stripe, Error codes (balance_insufficient)**](https://docs.stripe.com/error-codes) Also check: refunds, dispute amounts and fees come out of the same balance. A large refund or dispute can leave too little for the next payout.

Checked against the vendor’s docs on November 9, 2026: [Stripe docs: Error codes](https://docs.stripe.com/error-codes); [Stripe API: Retrieve balance](https://docs.stripe.com/api/balance/balance_retrieve); [Stripe API: Create a transfer (source_transaction)](https://docs.stripe.com/api/transfers/create).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [$950**Stripe Billing Fix and Setup**Subscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.**See scope and start**](https://app369.com/fixed-price/stripe-billing-setup/)
- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Stripe payout failed**](https://app369.com/fix/stripe-payout-failed/) · [**Stripe insufficient_funds (card)**](https://app369.com/fix/stripe-insufficient-funds/) · [**Stripe Connect onboarding incomplete**](https://app369.com/fix/stripe-connect-account-onboarding-incomplete/) · [**Stripe card_not_supported**](https://app369.com/fix/stripe-card-not-supported/)

Questions

## **More on this error**

<details>

<summary>**Is it the same as insufficient_funds? **+</summary>

No. insufficient_funds is a customer’s card declined for lack of funds; balance_insufficient is your own Stripe balance being too low for a transfer or payout.

</details>

<details>

<summary>**Does a customer see this error? **+</summary>

Usually not. It comes from payouts and transfers, which run on your side after the customer has paid.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)