illumi
Blog
vs Baremetricsvs ChartMogulvs ProfitWellvs Stripe Dashboard
Get Started

© 2026 illumi

BlogPrivacyTerms
Financial Ops·7 min read

Stripe Payout Reconciliation: Why Your Bank Deposits Don't Match Your Revenue

January 30, 2026

You check your Stripe dashboard and see $12,340 in charges this week. You check your bank account and see a deposit of $11,287. Where did $1,053 go?

This isn't a bug. Stripe payouts will almost never match your gross revenue, and the gap isn't always just fees. Refunds, disputes, timing differences, and Stripe's batching logic all affect what lands in your bank account. Understanding how to reconcile the two is essential for accurate bookkeeping — and for not losing sleep over numbers that don't add up.

Why payouts don't match revenue

Stripe doesn't pay you per transaction. Instead, it batches your available balance into periodic payouts (usually daily). Each payout is the net result of everything that happened to your balance since the last one:

  • Charges add to your balance (minus Stripe fees)
  • Refunds subtract from your balance
  • Disputes subtract the disputed amount (plus a dispute fee)
  • Dispute reversals add the amount back
  • Stripe fees are deducted from each charge
  • Adjustments can add or subtract (corrections, account credits)

A single payout is the sum of all these movements. That's why it doesn't match your gross charges.

At a Glance

  • Payouts = charges - fees - refunds - disputes +/- adjustments
  • Stripe batches transactions into periodic payouts (usually daily)
  • A payout can include charges from different days
  • The Balance Transactions API is the source of truth for reconciliation

The reconciliation process

Step 1: Start with balance transactions, not charges

The most common mistake is trying to reconcile payouts against charges. This doesn't work because charges show gross amounts before fees, and the timing doesn't align — a charge created on Monday might be included in Wednesday's payout.

The correct data source is balance transactions. Every event that affects your Stripe balance (charge, refund, fee, payout, adjustment) creates a balance transaction with:

  • amount — the net impact on your balance (positive or negative)
  • fee — Stripe fees deducted
  • net — the actual balance change (amount - fee)
  • type — what caused it (charge, refund, payout, adjustment, etc.)
  • available_on — when the funds become available for payout

Step 2: Link balance transactions to payouts

Every balance transaction that was included in a payout has a payout field linking it to the specific payout ID. To reconcile a payout:

  1. Get the payout from the Retrieve Payout endpoint
  2. List all balance transactions where payout equals that payout ID using the List Balance Transactions endpoint with payout filter
  3. Sum the net amounts of all linked balance transactions
  4. This sum should equal the payout amount

If it does, the payout is reconciled. If it doesn't, there's a pagination issue (you didn't fetch all linked transactions) or a rare timing edge case.

Pro tip: Always paginate through all balance transactions for a payout. Large-volume businesses can have hundreds or thousands of transactions per payout, and the API returns 10 by default.

Step 3: Categorize for accounting

For each reconciled payout, break down the balance transactions by type to understand the composition:

CategoryBalance transaction typesAccounting treatment
RevenuechargeIncome / Revenue
Fees(fee component of charges)Expense / Payment processing fees
RefundsrefundContra-revenue
Disputesdispute, dispute_reversalVaries — expense or contra-revenue
Adjustmentsadjustment, stripe_fee, contributionDepends on nature

This breakdown is what your accountant or bookkeeper needs to record the payout correctly in your general ledger.

Common reconciliation problems

"My payout is less than expected"

Usually one of:

  • Refunds processed since your last payout. Refunds reduce your available balance immediately, so they're deducted from the next payout.
  • A dispute was filed. Stripe immediately debits the disputed amount plus a dispute fee ($15 by default) from your balance.
  • Reserve held. New Stripe accounts sometimes have a rolling reserve that holds a percentage of each charge temporarily.

"My payout is more than expected"

This can happen when:

  • A dispute was resolved in your favor. The held amount plus the dispute fee are returned to your balance.
  • A Stripe adjustment or credit was applied to your account.
  • A refund you issued was reversed (rare, but possible).

"I have charges but no payout"

Check your payout schedule. Stripe has an available_on date for each balance transaction — funds aren't available for payout until this date, which is typically 2 business days after the charge for US accounts (longer for some countries and new accounts). Also check that automatic payouts are enabled and your account isn't in a review hold.

Watch out: Stripe's available_on date on balance transactions is in UTC. If you're comparing against your local business day, the timezone difference can make it look like funds are missing for a day.

"My accounting software shows different numbers"

This usually comes down to timing: when do you recognize revenue? If your accounting is on a cash basis, revenue is recognized when the payout hits your bank. On an accrual basis, revenue is recognized when the charge succeeds. These will always differ because of the 2+ day delay between charge and payout.

Make sure your accounting software and your Stripe reconciliation are using the same recognition method.

Automating reconciliation

Manual reconciliation works when you process a handful of payouts per month. At scale, it becomes a significant time sink. Here's what an automated approach looks like:

  1. Sync balance transactions from Stripe on a regular schedule
  2. Group by payout ID to see the composition of each bank deposit
  3. Flag discrepancies where the sum of transactions doesn't match the payout amount
  4. Generate reports that your finance team can review and export to accounting software

The key insight is that balance transactions are the single source of truth. If you have a complete set of balance transactions with their payout associations, reconciliation is just grouping and summing.

A note on Stripe Connect

If you're running a platform with Stripe Connect (where you process payments on behalf of connected accounts), reconciliation gets more complex. Your platform balance includes application fees and transfer amounts, not the full charge amounts. The same balance transaction approach works, but you'll see additional types like application_fee, transfer, and stripe_fee that reflect the platform's cut versus the connected account's share.

Tools that help

Stripe's built-in reporting (under the Reports tab in the dashboard) provides a reconciliation report that groups balance transactions by payout. For many businesses, this is sufficient.

If you need more — like historical trend analysis, automated discrepancy detection, or the ability to drill into any payout and see exactly what charges, refunds, and fees composed it — illumi includes a payout reconciliation report that syncs your Stripe balance transactions and lets you explore and export the breakdown for any payout. It also tracks your fee rates over time so you can spot unexpected changes.

For businesses that use QuickBooks or Xero, illumi also provides accounting-formatted exports that map Stripe transaction types to the appropriate accounts, so your bookkeeper doesn't have to manually categorize each payout.

Key takeaway: Payout reconciliation isn't about finding missing money — it's about understanding the composition of each bank deposit. Balance transactions are the source of truth, and every discrepancy has a specific, traceable cause.

stripepayoutsreconciliationfinancial-opsaccounting

Track your SaaS metrics with illumi

Connect your Stripe account and get MRR, churn, LTV, and cohort analytics in 30 seconds.

Start Free Trial