Troubleshooting
Shopify stock doesn't match reality: diagnose and fix inventory discrepancies
When Shopify's stock number disagrees with the shelf, work a diagnostic tree before you touch anything: is tracking on, what does the adjustment history show, are receipts unrecorded, are SKUs or barcodes duplicated, is stock at the wrong location — and only then count for shrinkage. A cause-symptom-fix table and the safe way to correct.
By Bastien HugonFounder & Engineer11 min readPublished July 10, 2026
TL;DR
When Shopify's stock disagrees with the shelf, diagnose before you correct. Work down a tree: (1) is inventory tracking even on for the variant, (2) what does the adjustment history show — who changed it, when, why (the admin keeps 180 days), (3) are there receipts you never recorded, (4) are SKUs or barcodes duplicated, (5) is stock assigned to the wrong location, and (6) whatever is left is shrinkage — count it. Fix each cause at its source, apply corrections with the reason "Count", and never overwrite a number blindly, because a blind overwrite hides the cause and creates the next discrepancy.
"Shopify says 3, the shelf has 7" — or worse, an item shows out of stock while it is sitting in front of you. The instinct is to type the right number and move on, but that fixes the symptom and buries the cause, so the same gap reappears next week. Discrepancies almost always trace to one of six causes, and each has a different fix. This page is the diagnostic order to work them in, from cheapest to check to most laborious, so you count for shrinkage only after ruling out the causes a count would not solve.
The diagnostic tree
- 01
Is inventory tracking on for the variant?
Open the product's variant and confirm "Track quantity" is enabled. An untracked variant has no on-hand to be right or wrong — it can read as unavailable or as always available depending on your settings. If tracking is off and you expect Shopify to manage the number, that is the whole problem; turn it on and set the correct on-hand.
- 02
Read the adjustment history
On the variant, open the inventory adjustment history to see who changed the quantity, when, and under which reason. The admin retains this for 180 days; older changes come from the "Inventory adjustment changes" report. A single wrong bulk edit or a mis-scanned sale often shows up here immediately, telling you the gap is a recording error, not missing stock.
- 03
Check for unrecorded receipts
If the shelf has more than Shopify, look for stock that arrived and got shelved without being recorded — a delivery received while the app that adds it was skipped, or a return put back without a restock adjustment. Record those receipts with the right reason (Received or Return restock) rather than lumping them into a count.
- 04
Look for duplicated SKUs or barcodes
Two variants sharing a SKU or barcode split the truth: a scan or an import can land on the wrong one, so one variant looks short and its twin looks long. Search for duplicate SKUs and barcodes across the catalog; deduplicate before you count, or the count will just move the error around.
- 05
Check multi-location assignment
With more than one location, stock can be correct in total but assigned to the wrong place — the warehouse shows the units the storefront thinks it is out of. Confirm each location's on-hand, and check that the sales channel is stocked from the location that actually holds the goods.
- 06
Whatever remains is shrinkage — count it
Once tracking, history, receipts, duplicates, and locations are ruled out, the residual gap is genuine shrinkage: theft, breakage, or miscounts. That is the part a physical count fixes. Count the affected items and apply the corrected on-hand with the reason "Count".
Cause, symptom, and fix at a glance
| Cause | Typical symptom | Fix |
|---|---|---|
| Tracking off | Item always available or never available regardless of stock | Enable Track quantity; set on-hand |
| Bad adjustment / mis-scan | Sudden jump in history with a wrong reason | Correct the line; use reason Correction or Count |
| Unrecorded receipt | Shelf higher than Shopify on recently delivered items | Record with Received or Return restock |
| Duplicate SKU / barcode | One variant short, a near-identical one long | Deduplicate SKUs and barcodes, then recount |
| Wrong location | "Out of stock" online while stock sits elsewhere | Reassign to the correct location; fix channel stocking |
| Shrinkage | Small unexplained gap after all else is ruled out | Physical count; apply with reason Count |
Shopify's adjustment reasons are a fixed set — Correction, Count, Received, Return restock, Damaged, Theft or loss, and Promotion or donation. Choosing the right one is not cosmetic: it is what makes next month's history readable. A gap fixed under "Count" tells the next person a stocktake happened; the same fix typed in with no context tells them nothing.
What counts as "too far off"
Not every gap needs a full investigation, but there is a line. Shopify's own guidance is to recount when a variance is over 5% — that threshold separates a plausible miscount from a signal that something systemic is wrong. Under it, apply the count and move on; over it, recount before you trust the number, because a large gap on a single line is more often a duplicate SKU, a missed shelf, or a wrong location than real loss.
Doing this with Solvi Stocktake
Solvi Stocktake is built so the final step of this tree — the count — never becomes the next discrepancy. It captures on-hand at the moment of each scan, so a sale landing mid-count is flagged for accept-or-recheck rather than overwritten. Nothing is written until you review the variance report, un-counted items are never zeroed without an explicit opt-in that names how many items would be affected, and every applied count uses the "Count" reason so your adjustment history stays diagnosable. A snapshot lets you roll an apply back in one click if a number looks wrong after the fact. The Free plan covers two counts a month; Starter is $9 and Growth is $19.
Frequently asked questions
What discrepancy rate is acceptable?
Shopify's guidance is to recount whenever a variance is over 5%. Below that, a small gap is usually an ordinary miscount you can correct and move on from. Above it, treat the number as untrusted and recount before applying — a large single-line gap is more often a duplicate SKU, a missed shelf, or stock at the wrong location than genuine loss.
How far back does Shopify inventory history go?
The admin keeps inventory adjustment history for 180 days per variant — who changed the quantity, when, and under which reason. For changes older than that, you use the "Inventory adjustment changes" report rather than the per-variant history. Because both are time-bound, export your counts to CSV if you need a durable record for accounting.
Why is my item showing out of stock when I have it?
Usually one of three things: inventory tracking is off or set wrong for that variant; the stock is assigned to a location the sales channel does not sell from, so the storefront sees zero while the units sit elsewhere; or a duplicate SKU or barcode routed a sale onto the wrong variant, driving one to zero. Check tracking first, then location assignment, then duplicates before assuming the stock is actually gone.
Related guides
Reference
The inventory shrinkage formula, with real numbers
Shrinkage rate = (recorded inventory value − counted inventory value) ÷ recorded inventory value × 100. What each term means, a fully worked cost example, the causes behind the gap, and how to measure it from a Shopify count.
9 min read
How-to
Inventory adjustment history in Shopify: the 180-day limit and how to audit changes
Shopify keeps per-variant inventory adjustment history for 180 days in the admin, then only in the 'Inventory adjustment changes' report. Where to find it, what the seven reasons mean, and how to run a monthly audit before the trail expires.
8 min read
How-to
How to do an inventory count in Shopify: the complete method (2026)
A full physical inventory count method for Shopify: how to prepare, the three ways to count (Quick Count, admin plus bulk editor, a counting app), the step-by-step reconcile-then-apply workflow, and quick fixes for scanners and mid-sale drift.
11 min read
How-to
How to count inventory in Shopify without POS Pro
Quick Count needs POS Pro. If you run POS Lite or admin only, here are the three ways to count stock without it — manual admin entry and the bulk editor, CSV export and re-import, or a counting app that scans with a phone or a USB scanner — with the effort and risk of each.
10 min read
Do this in minutes with Solvi Stocktake
Count your stock by scan, review the discrepancies against Shopify, and apply the fix — without ever risking your inventory data.