← Blog
Stripe Reconciliation 8 min read

How to Reconcile Stripe with QuickBooks Online (Step-by-Step)

A practical guide to reconciling Stripe payouts, fees, and refunds with QuickBooks Online — including the timing gaps, fee netting, and batch deposit problems that break every month-end close.

Updated

If you collect payments through Stripe and run your books in QuickBooks Online, reconciliation is your problem. Not Stripe’s. Not Intuit’s. Yours.

Neither system was designed to talk to the other. Stripe thinks in payment intents, charges, and balance transactions. QBO thinks in invoices, deposits, and journal entries. The translation between them is where every month-end close breaks down.

This guide walks through the complete reconciliation process — what to match, where the gaps are, and how to stop doing it manually. If your payouts don’t match your bank deposits, start there first. If you’re on monthly fee billing, the accounting is different — read that before continuing. And if your dates don’t line up, that’s a separate problem with a specific fix.

The three-system problem

Reconciliation isn’t two-sided. It’s three-sided. The money flows through three systems that each record it differently:

┌──────────┐    payout     ┌──────────┐    deposit    ┌──────────┐
│          │──────────────▶│          │──────────────▶│          │
│  Stripe  │   (net of     │   Bank   │   (lump sum   │   QBO    │
│          │    fees)       │          │    deposit)    │          │
│ charges  │◀ ─ ─ ─ ─ ─ ─ ─│ postings │◀ ─ ─ ─ ─ ─ ─ │ entries  │
│ fees     │   different    │ dates    │   different    │ accounts │
│ refunds  │   amounts      │ amounts  │   dates        │ totals   │
└──────────┘                └──────────┘                └──────────┘

  Gross charges              Net deposit               Revenue (gross)
  − Fees                     = Payout amount            Fees (expense)
  − Refunds                                             Refunds (contra)
  = Net payout                                          Net = Deposit ✓

Stripe knows charges, fees, and refunds. Your bank knows deposits. QBO knows revenue entries. No single system can tell you whether all three agree. That’s the gap — and it’s where every reconciliation breaks.

Stripe can tell you what’s in a payout. QuickBooks can show deposits. Neither can produce a third-party-verifiable reconciliation across systems. That’s why reconciliation breaks every close — and why a tool that only sees one side of the ledger can never solve it.

Step 1: Understand how Stripe payouts work

Before you reconcile anything, you need to understand what Stripe actually sends to your bank.

Stripe does not deposit each charge individually. It batches charges, refunds, and adjustments into a single payout — typically daily, but configurable. That payout is the net of:

  • Gross charges collected
  • Minus processing fees
  • Minus refunds issued
  • Plus/minus adjustments (disputes, connect transfers, etc.)

So if you processed $10,000 in charges, had $290 in fees, and issued a $500 refund, your payout is $9,210. That’s the number your bank sees. It is not the number QBO should record as revenue.

This is the single biggest source of reconciliation failures: the bank deposit does not equal the revenue.

Step 2: Map Stripe concepts to QBO entries

Here’s how each Stripe event should appear in QBO:

Stripe eventQBO entry typeQBO accountAmount
Charge (gross)Sales receipt or invoice paymentRevenueGross amount
Processing feeExpenseStripe FeesFee amount
RefundCredit memo or refund receiptRevenue (contra)Refund amount
PayoutBank depositCheckingNet (gross − fees − refunds)
Dispute (chargeback)Expense or journal entryDisputes / Bad DebtDispute amount
Dispute wonJournal entry reversalDisputes / Bad DebtCredited amount

The critical insight: you need at least two entries per charge — one for the gross revenue and one for the fee. If you only record the net deposit, your revenue is understated and your expenses are missing.

Step 3: Choose your recording method

There are two ways to record Stripe transactions in QBO, and they produce very different reconciliation experiences.

Method A: Record each charge individually

Create a sales receipt or invoice payment for every Stripe charge, and a separate expense for every fee. At payout time, the deposit should equal the sum of receipts minus fees minus refunds.

Pros: Full audit trail, easy to match individual transactions, accurate accrual accounting.

Cons: High volume. A business doing 500 charges/month creates 1,000+ QBO entries.

Method B: Record daily or weekly summaries

Create a single journal entry summarizing each payout: debit checking for the deposit, debit Stripe fees for the total fees, credit revenue for the gross. Credit refunds contra-revenue if applicable.

Pros: Fewer entries, cleaner ledger, manageable at scale.

Cons: Harder to trace individual transactions, summary errors are harder to catch.

Most businesses over 100 transactions/month end up on Method B. Either way, the reconciliation logic is the same — the numbers need to tie.

Step 4: Match payouts to bank deposits

This is where the actual reconciliation happens.

  1. Pull your Stripe payouts for the period (Dashboard → Balance → Payouts, or via API)
  2. Pull your bank feed in QBO (Banking tab)
  3. Match each Stripe payout to its corresponding bank deposit

Quick matching checklist:

  • Each Stripe payout has a corresponding bank deposit
  • Amounts match to the penny
  • Bank deposit date is within 1-3 business days of Stripe payout date
  • Payout ID appears in bank deposit reference (when available)
  • Last 2-3 days of payouts identified as in-transit items

What makes this hard:

  • Timing: Stripe initiates the payout on day N. The bank receives it on day N+1 or N+2. If the month ends between those days, the payout appears in Stripe’s January but the bank’s February. See payout vs. deposit timing for the full breakdown.
  • Batching: If you’re on automatic daily payouts, each day produces one deposit. But if you’ve changed your payout schedule, or have multiple currencies, you’ll see different batching.
  • Amount precision: Stripe amounts are in cents. QBO amounts are in dollars. Rounding across hundreds of transactions can produce penny differences.

The match key is the payout ID — Stripe assigns one to every payout, and most banks include it in the deposit reference. Search your bank feed for the Stripe payout amount, and confirm the date falls within the expected settlement window.

Step 5: Reconcile revenue totals

After matching deposits, verify that total revenue agrees:

  1. In Stripe: sum all charges for the period (gross, before fees)
  2. In QBO: run a P&L report and check the revenue account
  3. The two numbers should match

Common reasons they don’t:

  • Refunds booked wrong: If refunds reduce revenue directly instead of posting to a contra account, the P&L will be net of refunds. Not wrong, but it needs to be consistent.
  • Foreign currency: Stripe converts FX at the time of charge. QBO might use a different rate. Small FX differences accumulate.
  • Manual entries: Someone created a journal entry to “fix” something, throwing off the automated totals.
  • Accrual vs. cash timing: Revenue recognized on charge date (accrual) vs. deposit date (cash basis) will differ at period boundaries.

Step 6: Reconcile fees

Run a Stripe fees report for the period and compare it to your Stripe Fees expense account in QBO.

This is usually straightforward — unless you’re on Stripe’s monthly fee billing. If Stripe bills fees monthly instead of deducting per-transaction, the accounting changes significantly.

Step 7: Investigate exceptions

After matching, you’ll have three buckets:

  • Matched: Stripe charge = QBO entry, amounts agree. Done.
  • Stripe-only: Charges in Stripe with no QBO counterpart. Usually a sync failure or a charge that hasn’t been invoiced yet.
  • QBO-only: Entries in QBO with no Stripe match. Could be manual entries, non-Stripe payments categorized wrong, or duplicate entries.

Investigate Stripe-only items first — they represent real revenue that isn’t in your books.

Troubleshooting

Stripe deposit not matching QuickBooks

The most common cause: you’re comparing the net payout (bank deposit) to the gross revenue (QBO). The bank deposit equals gross charges minus fees minus refunds. Your QBO revenue should equal the gross. If you’re comparing the two directly, they’ll never match — and they shouldn’t.

QuickBooks shows duplicate Stripe deposits

Check whether your QBO-Stripe integration is creating entries and you’re also recording bank feed transactions. Both produce a deposit entry. Delete the duplicate — keep whichever source is more reliable (usually the direct integration).

Stripe charges not appearing in QuickBooks

If you’re using an integration (Synder, PayTraQer, etc.), check the sync log for failures. Common causes: the QBO customer name doesn’t match, the product/service item was deleted, or the integration hit an API rate limit.

Reconciliation variance under $1

Penny differences from rounding are normal across hundreds of transactions. Book the difference to a “Rounding Adjustments” account and move on. If the variance is consistently in the same direction, check your FX conversion settings.

When to automate this

If you’re spending more than an hour per month on Stripe-QBO reconciliation, the process is a candidate for automation. The logic is deterministic: pull data from both systems, match on a key, compare amounts, flag exceptions.

A reconciliation control runs this logic on a schedule — daily or weekly — and produces a dataset showing the match results. You review exceptions instead of doing the matching yourself. The output is a signed reconciliation pack: matched pairs, unmatched items, variance summary, and a cryptographic proof that the data hasn’t been altered.

Generate your Stripe reconciliation pack →

Upload your Stripe payout CSV and QBO deposit export. Get back a matched/unmatched list, variance summary, in-transit items, and a signed proof — in 60 seconds.

FAQ

What is Stripe reconciliation?

Stripe reconciliation is the process of verifying that the payments processed through Stripe match the deposits in your bank account and the revenue entries in your accounting system. It catches timing differences, fee discrepancies, missing entries, and duplicate records.

Why don’t Stripe payouts match bank deposits?

Stripe payouts are the net of charges minus fees minus refunds, batched together. The amount, timing, and composition of a payout rarely matches any single entry in your bank or books. See why Stripe payouts don’t match your bank for the six most common causes.

How often should I reconcile Stripe with QuickBooks?

Monthly at minimum, weekly if you can. Daily reconciliation catches issues while context is fresh and turns month-end close into a formality. Use the reconciliation checklist to standardize the process.

Should I use a Stripe clearing account in QuickBooks?

A clearing account tracks in-transit funds — money that Stripe has paid out but the bank hasn’t received yet. It’s useful if you have large payouts and need precise daily cash positions, but adds bookkeeping complexity. Most businesses under $1M ARR can skip it and let timing differences wash out within the period.

Can I reconcile Stripe automatically?

Yes. The reconciliation logic is deterministic: match on payout ID or amount, compare totals, flag exceptions. A reconciliation control runs this automatically and produces an auditable report. Generate your Stripe reconciliation pack →