# How to check Stripe account balance

- Tool: Stripe
- Difficulty: Beginner
- Time required: 5 minutes
- Compatibility: All Stripe accounts, all plans
- Last updated: March 2026

## TL;DR

Check your Stripe account balance in the Dashboard by viewing the Balance section on the Home page, or retrieve it programmatically using the Balance API endpoint. Stripe shows three balance categories: available (ready for payout), pending (processing), and Connect reserved funds. Amounts are in the smallest currency unit.

## Checking Your Stripe Account Balance

Your Stripe balance shows how much money is available for payout, how much is still processing, and any reserved funds. You can check it instantly in the Dashboard or programmatically through the API. Understanding your balance is essential for cash flow management and ensuring payouts happen on schedule.

## Before you start

- A Stripe account with at least one processed payment
- Access to the Stripe Dashboard or your Stripe secret key for API access

## Step-by-step guide

### 1. View your balance in the Dashboard

Log in to the Stripe Dashboard at dashboard.stripe.com. The Home page shows your balance overview with available, pending, and total amounts. Click on the balance section to see a detailed breakdown by currency.

**Expected result:** You see your available balance, pending balance, and estimated payout schedule on the Dashboard home page.

### 2. View payout details

Click Balance → Payouts in the left sidebar to see scheduled and completed payouts. Each payout shows the amount, currency, destination bank account, and expected arrival date.

**Expected result:** The Payouts page shows upcoming and historical payouts with amounts and dates.

### 3. Retrieve your balance via the API

Call the Balance retrieve endpoint to get your current balance programmatically. The response includes available, pending, and connect_reserved arrays broken down by currency.

```
const Stripe = require('stripe');
const stripe = Stripe(process.env.STRIPE_SECRET_KEY);

async function checkBalance() {
  const balance = await stripe.balance.retrieve();

  balance.available.forEach(b => {
    console.log(`Available: ${b.amount / 100} ${b.currency.toUpperCase()}`);
  });

  balance.pending.forEach(b => {
    console.log(`Pending: ${b.amount / 100} ${b.currency.toUpperCase()}`);
  });

  return balance;
}

checkBalance();
```

**Expected result:** The console displays your available and pending balances for each currency.

## Complete code example

File: `check-balance.js`

```javascript
// check-balance.js
// Retrieve and display Stripe account balance

const Stripe = require('stripe');
const stripe = Stripe(process.env.STRIPE_SECRET_KEY);

async function checkBalance() {
  try {
    const balance = await stripe.balance.retrieve();

    console.log('=== Stripe Account Balance ===');
    console.log('');

    if (balance.available.length > 0) {
      console.log('Available (ready for payout):');
      balance.available.forEach(b => {
        console.log(`  ${(b.amount / 100).toFixed(2)} ${b.currency.toUpperCase()}`);
      });
    }

    if (balance.pending.length > 0) {
      console.log('Pending (processing):');
      balance.pending.forEach(b => {
        console.log(`  ${(b.amount / 100).toFixed(2)} ${b.currency.toUpperCase()}`);
      });
    }

    if (balance.connect_reserved) {
      console.log('Connect reserved:');
      balance.connect_reserved.forEach(b => {
        console.log(`  ${(b.amount / 100).toFixed(2)} ${b.currency.toUpperCase()}`);
      });
    }

    // Also check recent balance transactions
    const transactions = await stripe.balanceTransactions.list({
      limit: 5
    });

    console.log('');
    console.log('Recent balance transactions:');
    transactions.data.forEach(txn => {
      console.log(`  ${txn.type}: ${(txn.amount / 100).toFixed(2)} ${txn.currency.toUpperCase()} (fee: ${(txn.fee / 100).toFixed(2)})`);
    });

    return balance;
  } catch (err) {
    console.error('Failed to retrieve balance:', err.message);
  }
}

checkBalance();
```

## Common mistakes

- **Expecting the balance to update instantly after a payment** — undefined Fix: Payments go to 'pending' first and move to 'available' after the processing period (usually 2 business days for US accounts).
- **Reading the amount as dollars instead of cents** — undefined Fix: Stripe returns amounts in the smallest currency unit. For USD, divide by 100 to get dollars.
- **Checking the balance in live mode but seeing zero because payments are in test mode** — undefined Fix: Make sure you are using the correct API key. Test mode payments only appear in the test mode balance.

## Best practices

- Monitor your balance regularly to ensure payouts are processing on schedule
- Use the Balance Transactions API to see individual transactions that affect your balance
- Set up email alerts in the Dashboard for low balance or failed payouts
- Account for Stripe fees when projecting your available balance
- If you process multiple currencies, check the balance for each currency separately
- For automated balance monitoring across multiple Stripe accounts, RapidDev can build custom dashboards that aggregate your data

## Frequently asked questions

### What is the difference between available and pending balance?

Available balance is ready to be paid out to your bank account. Pending balance is from recent charges that are still being processed — they move to available after the standard processing period (typically 2 business days in the US).

### Why is my available balance zero even though I have payments?

If you have automatic payouts enabled, your available balance is regularly paid out to your bank. Check the Payouts section for recent transfers. New payments may also still be in the pending state.

### Can I see my balance for a specific date in the past?

The Balance API shows your current balance. For historical data, use the Balance Transactions API with created date filters to reconstruct your balance at any point in time.

### What is connect_reserved in the balance?

Connect reserved funds are set aside for Stripe Connect accounts to cover potential refunds or disputes from connected accounts. If you do not use Stripe Connect, this will be empty.

### How often does the balance update?

The balance updates in real-time as transactions are processed. Each successful charge, refund, payout, or fee adjustment immediately affects the balance.

---

Source: https://www.rapidevelopers.com/stripe-guide/how-to-check-stripe-account-balance
© RapidDev — https://www.rapidevelopers.com/stripe-guide/how-to-check-stripe-account-balance
