Shopify and QuickBooks: Why Your Numbers Never Match (And How to Fix It)
You open QuickBooks and see one number. You open Shopify and see another. Your bank statement shows a third. Every month you try to reconcile them, and every month something is still off.
This is one of the most common problems for direct-to-consumer store owners. And it is not a QuickBooks problem or a Shopify problem. It is a structural gap between how these two systems record money, and when they record it.
This guide explains the five root causes of the mismatch and exactly what to do about each one.
Why Reconciliation Feels Impossible
Reconciliation means verifying that two sets of records agree on the same transactions. In theory, Shopify records a sale, money lands in your bank, and QuickBooks logs that deposit. Three records, same number.
In practice, the same $1,000 sale might appear as $1,000 in Shopify, $966 in your bank account, and $1,000 or $0 in QuickBooks depending on when the sync runs. None of those numbers are wrong. They are just measuring different things at different points in time.
The fix is not to trust one system and ignore the others. The fix is to understand what each system is actually measuring so you can get them to agree.
Root Cause 1: Shopify Payouts Bundle Multiple Transaction Types Into One Deposit
This is the biggest source of confusion, and it trips up almost every store owner who tries to reconcile for the first time.
What Happens
When Shopify processes orders, it does not send you a deposit for each individual sale. Instead, Shopify batches together everything that happened over a period of days. A typical Shopify payout includes sales from multiple orders, minus refunds you issued, minus Shopify's own processing fees, and sometimes minus chargebacks or adjustments.
So if you had $5,000 in sales, issued $200 in refunds, and paid $150 in Shopify fees, the deposit that hits your bank account is $4,650. Your bank shows one transaction for $4,650. But your Shopify dashboard shows $5,000 in revenue. Your QuickBooks, if it recorded the bank deposit, shows $4,650. And if QuickBooks also recorded the $5,000 Shopify revenue separately, now you appear to have $9,650 in income that does not exist.
How to Fix It
You need to record the Shopify payout as a single transaction in QuickBooks broken into three parts: gross sales as income, refunds as a deduction, and Shopify fees as an expense. Do not record gross sales separately and also record the bank deposit. Pick one method and be consistent.
The cleanest approach is to reconcile using the payout breakdown report from Shopify, which shows exactly what was included in each deposit. Match that breakdown to what QuickBooks recorded. Any gap is either a timing issue (covered next) or a categorization error.
Root Cause 2: Timing Differences Between Shopify and Your Bank
What Happens
Timing differences occur because Shopify records a sale the moment a customer pays, but your bank does not see that money until Shopify processes and sends the payout, which typically takes 1 to 3 business days depending on your Shopify plan and country.
This means a $500 sale on the last day of the month appears in your Shopify December revenue but does not land in your bank account until January. If QuickBooks is pulling from your bank feed, it records that $500 in January. Now December is under-counted in QuickBooks and over-counted in Shopify.
During a high-volume month like November or December, this gap can reach thousands of dollars and cause your year-end numbers to be materially wrong.
How to Fix It
When reconciling, always compare the same payout period, not the same calendar period. Download Shopify's payout report for a specific payout, find the deposit in your bank statement for that same payout, and match them. Do not try to reconcile "December Shopify sales" against "December bank deposits." They will never match because they measure different windows of time.
In QuickBooks, record income based on the payout date, not the order date, unless your accountant has specifically asked you to use accrual accounting. For most small direct-to-consumer businesses using cash-basis accounting, the payout date is the right anchor point.
Root Cause 3: Marketplace Facilitator Tax Creates Phantom Discrepancies
What Happens
In many US states and several countries, marketplace facilitator laws require Shopify to collect and remit sales tax on your behalf for orders shipped to those locations. Shopify withholds that tax from the customer payment, sends it directly to the relevant tax authority, and never passes it through to your payout.
The result is that your Shopify order shows the full customer payment including tax, but your payout is lower because the tax was withheld. A $100 order in a state where Shopify facilitates tax collection might generate a payout of $91.60 after Shopify holds the $8.40 in tax.
If you are not aware of this, you see $100 in Shopify, $91.60 hits your bank, and you cannot explain the $8.40 gap. Multiply this across hundreds or thousands of orders and the discrepancy becomes significant.
How to Fix It
In your Shopify Payments payout reports, look for the column labeled "Marketplace Facilitator Tax" or similar. This shows the exact amount withheld per payout period. In QuickBooks, this amount should not be recorded as your income at all because you never received it and it is not your revenue. It passed directly from the customer to the tax authority.
When you set up your Shopify to QuickBooks sync (whether through a native integration or a third-party connector), verify that marketplace facilitator tax is excluded from your income calculation. If your sync app is pulling gross order totals without stripping out facilitated tax, your revenue will be overstated in QuickBooks.
Root Cause 4: Duplicate Transaction Risk from Data-Syncing Apps
What Happens
Most store owners use some form of automation to connect Shopify and QuickBooks. Options include Shopify's native QuickBooks connector, third-party apps like A2X or Connex, or manual CSV imports. Each approach carries the risk of counting the same transaction more than once.
The most common scenario: you export a sales report from Shopify and import it into QuickBooks manually. Then a sync app also runs in the background and pulls the same data. Now every transaction for that period exists twice in QuickBooks. Your income is doubled. Your expenses might be doubled. Your accounts payable is a mess.
A subtler version happens when a sync app uses both order date and payout date logic in the same configuration. It records a sale on the order date and then records the deposit again when the payout arrives. One sale, two QuickBooks entries.
How to Fix It
Decide on exactly one method of getting Shopify data into QuickBooks and turn off everything else. If you are using A2X, disable any native Shopify sync. If you are using manual imports, turn off all automated connections. There should be a single, clear pipeline between the two systems with no redundant paths.
After any change to your sync configuration, audit the past 30 days in QuickBooks by searching for duplicate amounts on the same date. If you find duplicates, delete the ones created by the method you are retiring and leave the ones from your chosen permanent method.
Root Cause 5: Multi-Currency and Multi-Store Reconciliation Issues
What Happens
If you sell internationally or run more than one Shopify store, your reconciliation challenge multiplies. Multi-currency orders create two variables: the original transaction in the customer's currency and the settled amount in your home currency after conversion. Shopify records the sale in the customer's currency. Your bank shows the converted amount. QuickBooks might show either, depending on how your sync is configured.
A sale for 100 GBP might settle as $126.42 USD depending on the exchange rate at payout time. If Shopify records $130 USD (using the rate at order time) and your bank shows $126.42 (the actual payout rate), you have a $3.58 discrepancy on that single transaction. Across hundreds of international orders, currency conversion differences can add up to hundreds or thousands of dollars per month.
For multi-store setups, the risk is that revenue from different stores gets mixed together in QuickBooks without clear labels, making it impossible to know which store is profitable and which is not.
How to Fix It
For multi-currency: configure your QuickBooks sync to use the settled amount from the payout report rather than the estimated converted amount at order time. The payout report shows the exact USD (or home currency) amount you actually received, which eliminates the rate-at-order-time versus rate-at-settlement discrepancy.
For multi-store: give each Shopify store its own QuickBooks class or location tag. This keeps revenue and expenses separated by store without requiring separate QuickBooks accounts. You can still see consolidated totals when you need them, but you can also isolate any single store's performance.
A Reconciliation Workflow That Actually Works
Once you understand the five root causes, a working reconciliation process follows a consistent pattern.
Start with the Shopify payout report, not the Shopify revenue dashboard. The payout report shows exactly what was sent to your bank and breaks it into components: gross sales, refunds, fees, and marketplace tax. This is your source of truth for each deposit.
Match each payout to the corresponding bank deposit by amount and date. If they do not match exactly, the gap is almost always a fee that was not included in your calculation or a tax amount that was withheld.
Verify that QuickBooks recorded the same components. If QuickBooks shows a lump deposit equal to the bank deposit but does not break out the gross sales, refunds, and fees, your income, refund, and expense accounts are all understated or overstated.
Check for duplicates by searching QuickBooks for any transaction that appears more than once for the same amount and date. Remove duplicates before moving on.
Repeat this monthly rather than quarterly. Catching a sync error one month in is a 30-minute fix. Catching it after six months is a days-long cleanup.
How Nummbas Gives You One Consistent View
The reason reconciliation is so painful is that Shopify and QuickBooks were built to do different jobs. Shopify is an order management and payments platform. QuickBooks is an accounting system. Connecting them cleanly requires ongoing configuration and monitoring that most store owners do not have time for.
Nummbas connects directly to both Shopify and QuickBooks and pulls data from each system at the source. Rather than relying on a sync app to translate between them, Nummbas reads the Shopify payout reports directly (capturing the correct broken-down figures) and maps them against your QuickBooks records using the same payout-based logic described in this guide.
The result is a single view of your financials where Shopify revenue, refunds, fees, and deposits all agree with what QuickBooks shows, and neither number is inflated by marketplace facilitator tax or timing differences. When a discrepancy appears, Nummbas flags it rather than hiding it inside a summary total.
For store owners running multiple currencies or multiple stores, Nummbas keeps each store's data separated by default so you can see consolidated totals or drill into a single store without mixing the numbers.
The Bottom Line
The mismatch between Shopify and QuickBooks is not random. It comes from five predictable causes: bundled payouts, timing differences, marketplace facilitator tax, duplicate syncs, and multi-currency or multi-store complexity.
Fix each one systematically. Use payout reports as your anchor. Pick one sync method and disable the rest. Exclude facilitated tax from your income. Match by payout date, not order date. And keep stores and currencies separated in QuickBooks.
Once you understand what each number is actually measuring, the gap closes. Your books stop being a source of stress and start being a tool you can actually use to make decisions about your business.