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.
Prerequisites
- 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
View your balance in the Dashboard
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.
View payout details
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.
Retrieve your balance via the API
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.
1const Stripe = require('stripe');2const stripe = Stripe(process.env.STRIPE_SECRET_KEY);34async function checkBalance() {5 const balance = await stripe.balance.retrieve();67 balance.available.forEach(b => {8 console.log(`Available: ${b.amount / 100} ${b.currency.toUpperCase()}`);9 });1011 balance.pending.forEach(b => {12 console.log(`Pending: ${b.amount / 100} ${b.currency.toUpperCase()}`);13 });1415 return balance;16}1718checkBalance();Expected result: The console displays your available and pending balances for each currency.
Complete working example
1// check-balance.js2// Retrieve and display Stripe account balance34const Stripe = require('stripe');5const stripe = Stripe(process.env.STRIPE_SECRET_KEY);67async function checkBalance() {8 try {9 const balance = await stripe.balance.retrieve();1011 console.log('=== Stripe Account Balance ===');12 console.log('');1314 if (balance.available.length > 0) {15 console.log('Available (ready for payout):');16 balance.available.forEach(b => {17 console.log(` ${(b.amount / 100).toFixed(2)} ${b.currency.toUpperCase()}`);18 });19 }2021 if (balance.pending.length > 0) {22 console.log('Pending (processing):');23 balance.pending.forEach(b => {24 console.log(` ${(b.amount / 100).toFixed(2)} ${b.currency.toUpperCase()}`);25 });26 }2728 if (balance.connect_reserved) {29 console.log('Connect reserved:');30 balance.connect_reserved.forEach(b => {31 console.log(` ${(b.amount / 100).toFixed(2)} ${b.currency.toUpperCase()}`);32 });33 }3435 // Also check recent balance transactions36 const transactions = await stripe.balanceTransactions.list({37 limit: 538 });3940 console.log('');41 console.log('Recent balance transactions:');42 transactions.data.forEach(txn => {43 console.log(` ${txn.type}: ${(txn.amount / 100).toFixed(2)} ${txn.currency.toUpperCase()} (fee: ${(txn.fee / 100).toFixed(2)})`);44 });4546 return balance;47 } catch (err) {48 console.error('Failed to retrieve balance:', err.message);49 }50}5152checkBalance();Common mistakes when checkking Stripe account balance
Why it's a problem: Expecting the balance to update instantly after a payment
How to avoid: Payments go to 'pending' first and move to 'available' after the processing period (usually 2 business days for US accounts).
Why it's a problem: Reading the amount as dollars instead of cents
How to avoid: Stripe returns amounts in the smallest currency unit. For USD, divide by 100 to get dollars.
Why it's a problem: Checking the balance in live mode but seeing zero because payments are in test mode
How to avoid: 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
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
Show me how to check my Stripe account balance using the Node.js API. I want to see available, pending, and reserved amounts broken down by currency. Also show me how to list recent balance transactions with their fees.
Write a Node.js script that retrieves my Stripe balance and lists the last 5 balance transactions. Display amounts in dollars (not cents) with the currency and fee for each transaction.
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.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation