Every Monday morning, the same thing happens.
You check your bank account. The Shopify payout came through — $4,312.87. You open QuickBooks. Your sales for the weekend show $4,891.00. You stare at both numbers for a moment. You open Shopify to double-check. The numbers are still different.
You’ve been doing this for two years. You’ve asked your bookkeeper. You’ve Googled it. You’ve asked your accountant, who told you to just reconcile the difference manually. You do, every month, and the next month the gap is different. Sometimes it’s $200. Sometimes it’s $900. One quarter it was over $3,000 and you still can’t explain where it went.
Here’s the thing: nothing is wrong.
Not with Shopify. Not with QuickBooks. Not with you. The gap you’ve been staring at isn’t an error — it’s a structural incompatibility between two systems that both think they’re telling you the truth. And they are.
How Shopify Payouts Actually Work
Shopify is not an accounting system. It’s an e-commerce platform with a built-in payment processor, and the money it sends to your bank reflects that.
When Shopify deposits money into your account, it’s not sending you your gross sales. It’s sending you what’s left after it takes out everything it’s owed:
- Transaction fees (Shopify Payments processing fees — typically 2.4–2.9% + 30¢ per transaction)
- Refunds issued during the payout period
- Chargeback deductions and dispute holds
- Reserve withholdings (common for newer stores or stores with elevated chargeback risk)
- App charges billed through Shopify
Shopify batches all of this across a rolling 1–3 business day window, nets everything out, and sends you a single number. That number is accurate. It is exactly what you earned, minus exactly what was owed. The math is correct.
But it’s gross revenue minus five different categories of deductions, collapsed into one line item, covering transactions from multiple days — and your bank statement shows none of the detail.
A REAL PAYOUT BREAKDOWN
Both numbers — $4,891 and $4,312.87 — are exactly right. But your bank only shows you one of them.
What QuickBooks Sees
QuickBooks Online is an accounting system. It records revenue when a sale happens — the gross amount the customer paid. It doesn’t automatically know about Shopify’s fee structure, your refund timing, or the fact that a payout covers multiple days.
If you’re entering Shopify data into QuickBooks manually, you’re either:
A) Entering the gross sales figure — in which case your revenue looks right, but your cash balance never reconciles with your bank deposits, and you’re manually guessing where the fees went.
B) Entering the deposit amount — in which case your cash reconciles, but your revenue is understated by every fee, refund, and adjustment that got deducted from the payout.
Neither option is correct. Both are what people do when they don’t have a translation layer.
Your bookkeeper isn’t making a mistake. Your accountant isn’t missing something obvious. The two systems are speaking different languages, and you’ve been trying to translate between them by hand.
Neither System Is Wrong
This is the part that trips people up when they first hear it, because it sounds like a non-answer.
Shopify is correct to send you a net payout. That’s what payment processors do — they handle the money flow, deduct their fees, and send you what remains.
QuickBooks is correct to record gross revenue. That’s what accounting systems do — they track what customers paid, because that’s what you need for P&L accuracy, tax reporting, and understanding your real business performance.
The problem isn’t that one of them is lying to you. The problem is that they solve different problems at different levels of the transaction — and nothing in the middle is translating between them.
SHOPIFY SEES
Net payout: $4,312.87
Gross sales minus fees, refunds, and adjustments — accurate for cash flow.
QUICKBOOKS NEEDS
Gross revenue: $4,891.00 + itemized deductions
Each component mapped to the right account — accurate for P&L and tax.
What you need isn’t a better way to reconcile the gap manually. What you need is something that speaks both languages: that takes the gross sale from Shopify, maps each fee deduction to the right expense account in QuickBooks, matches the payout to the correct transactions, and closes the gap automatically.
What Actually Fixes the Gap
There are two ways to close the payout mismatch.
Manual reconciliation means exporting your Shopify payout report, cross-referencing every transaction, and entering each component — fees, refunds, adjustments — as separate line items in QuickBooks. Done correctly, it takes 3–5 hours per month. Done quickly, it produces new errors. Most store owners at the $1M–$5M revenue range spend between 30 and 60 hours per year on this problem and still have books that aren’t fully clean. If you’re going to do it by hand, the full step-by-step method is in our guide to reconciling Shopify payouts in QuickBooks.
Automated reconciliation means using a tool that does the translation layer work for you: pulls each payout from Shopify, breaks it into its components (gross sales, transaction fees, refunds, adjustments), maps each one to the correct QuickBooks account, and books the journal entries automatically.
LedgerPort does this every day, without intervention. Your payout hits your bank, and by the time you open QuickBooks, the entry is already there — broken into the right accounts, matched to the right period, ready for your accountant to review.
The gap that took you hours to not-quite-close? It closes automatically. The explanation you could never give your CPA? It’s in the journal entry.
Record revenue when money moves, not when orders appear
Part of the payout gap is pure timing. If your sync tool records an order the moment it appears in Shopify — while the payment is still Pending or Authorized — QuickBooks shows revenue before any payout exists. The books run ahead of the money, and the gap looks bigger than it is.
In LedgerPort, the moment revenue gets recorded is a setting. Under Sync Config » Orders » Sync Triggers, you pick which of six payment statuses qualify an order for syncing — Paid, Authorized, Partially Paid, Pending, Refunded, Partially Refunded — alongside three fulfillment statuses. An order syncs only when it satisfies one condition from each group.

The official recommendation for most stores: Paid only, with Unfulfilled and Fulfilled both checked — so QuickBooks records revenue the moment money actually moves, regardless of shipping state. The docs flag Pending as “use with caution” for exactly the reason above, and voided orders are excluded by default, so cancellations never show up as revenue.
With Paid-only triggers, everything in your books represents captured money. That’s the precondition for a payout ever matching in the first place.
The refunds you never synced
Here’s a classic version of the mismatch: a customer gets refunded, Shopify nets that refund out of the payout, and QuickBooks still shows the full sale — because the refund never synced. No error, no warning. The books just quietly drift away from the bank.
The fix is two checkboxes. In Sync Config » Orders » Sync Triggers, check Refunded and Partially Refunded. If neither is checked, refunds are silently excluded from the sync — which is why this category of mismatch is so persistent for stores that set up their integration once and never revisited it.

Once enabled, a synced refund creates a real accounting document in QuickBooks: a Refund Receipt for orders synced as Sales Receipts, or a Credit Memo for orders synced as Invoices — linked to the original transaction, with tax and shipping broken out as separate lines to match Shopify exactly. Partial refunds generate a document for the refunded amount only; the original sale stays untouched.
One caveat: the original order has to already be in QuickBooks, because the refund attaches to it. But that’s the whole requirement. Two checkboxes close an entire category of payout mismatch.
Find the orders that never made it
The third hidden gap source: orders that errored out of the sync entirely. An unmapped product, a missing billing field, an expired QuickBooks connection — any of these leaves a hole in QuickBooks revenue that no payout can reconcile against, because the sale simply isn’t there.
What matters is that these failures are named, not silent. Every sync attempt in LedgerPort gets a status — Synced, Error, Pending, or On Hold — and filtering the audit log to Status = Error is a 30-second check that surfaces everything needing attention. The errors come with reasons: “Product Not Mapped,” “Missing Required Field,” or the expired-token “Connection Unhealthy” — which the docs call out as the single most common sync error.

The recovery move is short: fix the cause, select the failed records in Manual Sync, click Sync Selected. Failed records are never lost, and if QuickBooks rate-limits a big push, the retries happen automatically.
Closing the payout gap is partly structure — clearing accounts, fee mapping — and partly completeness. Completeness is a filter click.
The irony of this whole situation is that you’ve spent two years convinced something was broken. Shopify’s math was wrong, or QuickBooks was off, or your bookkeeper missed something, or you were doing something wrong.
You weren’t. Neither were they.
Both systems were doing their jobs correctly the whole time. You just didn’t have anything connecting them.
