Why your Shopify sales will never match your QuickBooks revenue
Open Shopify and it tells you that you did $52,000 in sales last month. Open QuickBooks and your income statement says revenue was $44,000. Same store, same month, an $8,000 hole between them — and no matter how long you stare, the two screens refuse to agree.
Almost every store owner hits this, decides something is broken, and either burns an afternoon hunting a phantom error or quietly stops trusting one of the numbers. Don't. The gap isn't a bug — it's accounting doing exactly what it's supposed to. Shopify is counting what happened at the checkout. QuickBooks is counting what you actually earned. Those are different questions, so they get different answers. The useful skill isn't making them match — it's knowing why they don't, and being able to walk the bridge between them on demand.
Let's do exactly that. One example, carried all the way down: a D2C brand — call it a candle company — with a Shopify store that reported $52,000for the month. We're going to get from that headline number to the $44,000 sitting on the books, one honest line at a time.
Shopify · total sales
$52,000
what the dashboard shows
QuickBooks · revenue
$44,000
what you actually earned
The gap
$8,000
15% — and fully explainable
The reconciliation waterfall
Here's the whole bridge. Read it top to bottom: we start at Shopify's headline sales number, strip out the things that were never your revenue, and add back the sales that never touched Shopify at all. It lands, dollar for dollar, on the book revenue in QuickBooks.
| Bridging the two numbers | Amount | Running total |
|---|---|---|
| Shopify total sales | $52,000 | $52,000 |
| − Sales tax collected | −$3,700 | $48,300 |
| − Shipping income (separate account) | −$1,400 | $46,900 |
| − Gift cards sold (deferred) | −$1,700 | $45,200 |
| − Refunds & returns (timing) | −$3,200 | $42,000 |
| = Shopify revenue, as booked | $42,000 | |
| + Faire & wholesale orders | +$1,500 | $43,500 |
| + Manual invoices & POS | +$500 | $44,000 |
| = Book revenue (QuickBooks) | $44,000 | $44,000 |
Notice the shape of it: the gap runs in both directions. Some of Shopify's $52,000 was never revenue and has to come out. And some of your real revenue never went through Shopify and has to go in. Net it all and you get $44,000 — but only because two different distortions happened to land near each other. That's why eyeballing the top-line numbers never works. You have to walk the lines. Let's take them one at a time.
What Shopify counts that isn't your revenue
The single biggest culprit, almost every time, is sales tax. When a customer pays $54 and $4 of that is tax, you did not earn $54. You earned $50 and are holding $4 that belongs to the state — a liability, not income. Shopify happily rolls that tax into "total sales" on the dashboard. QuickBooks, correctly, parks it on the balance sheet and keeps it off your P&L entirely. On our candle brand that's $3,700 of the gap, all by itself — money that was never yours to book.
Then the ones that are subtler:
- Shipping income.The $6 a customer pays for shipping is revenue — but most books post it to a separate "Shipping income" account, not the product-sales line you're comparing against. So it looks missing when it's just filed one drawer over. Worth $1,400 here.
- Gift cards.A gift card is the purest version of "a sale that isn't revenue." Selling one is cash in the door against a deferred liability— you owe product later. It only becomes revenue when it's redeemed, and a redemption isn't a new sale, it's you settling an old debt. Sell $1,700 of gift cards in a month and Shopify counts $1,700 of "sales" your P&L rightly won't.
- Refunds and returns.These are real reductions to revenue, but they're a timinggame. A refund processed in a month whose sale landed in the prior one, or a return your bookkeeper posts on a slight lag, means the two systems are netting refunds on different calendars. That's another $3,200 of drift — not lost money, just money counted in a different week.
And two more that trip people up precisely because they don't move the bridge — but everyone expects them to:
- Discountsare already baked in. A 20%-off order shows up in Shopify's totals at the discounted price and hits your books at the discounted price. There's no adjustment to make — the discount already happened before either system saw a dollar. (Whether that discount habit is quietly eating your margin is a different, more painful question — that's the unit-economics story.)
- Payment processor fees are an expense, not a haircut on revenue. When Shopify Payments or Stripe takes 2.9% + 30¢, that fee is a cost that belongs below the revenue line, not netted out of it. This one bites hardest when you reconcile against a payout instead of gross sales — a Stripe deposit already has fees pulled out, so it'll look far short of your revenue. Book the gross sale and the fee separately, or your revenue is understated and your expenses are invisible.
What your books count that Shopify never saw
Now the other direction — and this is the half most owners forget entirely. Shopify only knows about Shopify. QuickBooks is the system of record for every dollar the business earns, from every channel. Our candle brand sold $1,500 through Faire to a couple of boutiques and cut $500of manual invoices for a corporate gift order. None of that is a Shopify transaction, so none of it is in the $52,000 — but all of it is real revenue, and it's sitting in QuickBooks where it belongs.
This is the part that flips the gap's direction for a lot of brands. Add wholesale, Amazon, a POS terminal at a pop-up, an ACH from a wholesale account, and a couple of hand-keyed invoices, and your QuickBooks revenue can sail right pastyour Shopify number instead of trailing it. Which is exactly why comparing one channel's dashboard to your total book revenue is apples to a fruit basket. Shopify is one input. The books are the sum.
When the gap is fine, and when to worry
So the gap is normal. That doesn't mean every gap is fine — it means the gap is a checkable list, not a mystery. Here's the CFO instinct for reading it.
A gap that's modest, stable, and explainable is exactly what you want. If it's roughly the same percentage every month, and you can name the pieces — tax, shipping, a wholesale channel — you're looking at healthy accounting, not a problem. Our $8,000 is 15% of Shopify sales and every dollar of it has a home. That's a clean bill.
A gap that's large, growing, or won't itemize is a signal — and worth an hour. Watch for:
- Unrecorded sales.A channel your bookkeeper isn't posting at all — the Amazon deposits that never got categorized, the Faire payouts nobody imported. Real revenue, simply missing from the books.
- Double-counted deposits. The classic QuickBooks trap: the sale gets booked once from the order and again when the bank deposit is added instead of matched. Revenue counted twice, receivables that never clear. It's one of the messes in garbage in, garbage out.
- Revenue leakage.Sales tax being swept into income, gift-card liabilities booked as revenue on sale, refunds that never made it back to the books — small holes that widen the gap in a way you can't explain, which is the tell that something's coded wrong.
The move is the same one every month: don't ask "why don't these match" — ask "can I walk every dollar of the difference?"If you can, you're done. If a chunk won't itemize, that unexplained remainder isthe thing to chase. This is where the difference between a store owner and a store owner with a CFO shows up — one sees a confusing number, the other sees a reconciliation with one line still open. It's the same reconciliation discipline behind a real month-end close, and it's why when a sale becomes revenue — revenue recognition — is worth understanding channel by channel.
Put the two numbers side by side
The reason this gap feels like a mystery is that the two numbers live in two different tabs, and nothing ever puts them next to each other. You see Shopify in one window and your P&L in another, days apart, and your brain is left to reconcile from memory. It can't.
That's the exact thing the new Sales Analyst in Wauvel is built for. Connect a Shopify store read-only and it puts your channel sales — net sales, orders, average order value, period-over-period growth, and a weekly trend — right on the Command Center, sitting beside the book revenue Wauvelalready reads from QuickBooks. So the gap stops being a surprise you rediscover every month and becomes a number you can see and explain at a glance. It's a directional read, not a to-the-penny tie-out — the point is to make the difference visible and itemizable, so a stable gap reassures you and a growing one gets your attention early.
And it's where Wauvel is headed: channel-versus-books as a first-class view. The Sales Analyst is source-agnostic by design — Shopify today, with Stripe, Faire, and the rest of your channels to follow — because the whole problem is that your revenue lives in five places and your books are supposed to be the one place they all reconcile to.
See what a report like this looks like on your own numbers.
Meet your AI CFO →