You do a spot check on one of your best-selling products. Shopify says 84 units. You count the shelf: 61 units.
23 units. Gone. No record of where they went.
This is an inventory discrepancy — and it's one of the most expensive problems in e-commerce that almost nobody systematically addresses.
This guide covers how to find discrepancies across your entire catalog, identify which of the 9 root causes is responsible, and build a system that stops them accumulating.
What Counts as a Discrepancy?
An inventory discrepancy is any difference between what your Shopify system shows and what physically exists.
Positive discrepancy (system shows MORE than reality) This is the dangerous type. You're at risk of overselling. Customers can order products you can't fulfil.
Negative discrepancy (system shows LESS than reality) Less immediately dangerous — but your reorder decisions are based on false data. You'll over-order products you don't need and tie up cash unnecessarily.
Most merchants only worry about positive discrepancies (phantom stock). But negative discrepancies are equally expensive — they distort your reorder model and lead to over-investment in products you actually have sufficient stock of.
The 9 Root Causes: How to Identify Which One You Have
1. Theft
Accounts for ~35% of all retail shrink. The challenge: theft creates no system log. Products simply disappear.
How to identify: Discrepancies concentrated in high-value, portable items. Consistent depletion that's faster than sales velocity explains. Discrepancies across multiple counts of the same product.
Diagnostic question: Are the discrepancies random across your catalog, or concentrated in specific product types?
2. Receiving Errors
Someone counted wrong when the shipment arrived — or trusted the PO number without actually counting.
How to identify: Discrepancies that appear immediately after a shipment arrival. Off-by-round-numbers errors (exactly 5, 10, or 25 units off — matching likely counting chunks).
Diagnostic question: When did this discrepancy first appear? Was there a shipment within 1–3 days of that date?
3. Fulfillment Errors
The wrong product was picked, or the quantity was wrong. The order was shipped and Shopify decremented the intended product — but the wrong physical product left the warehouse.
How to identify: Discrepancies that appear during high-volume periods. Discrepancies on products stored near each other (mis-pick neighbor). Corresponding surplus on a neighboring product.
Diagnostic question: Is there a product nearby with an unexpected positive discrepancy that mirrors the negative discrepancy here?
4. Return Processing Problems
A return was logged and inventory was restored — but the physical item was damaged, missing parts, or otherwise unsellable.
How to identify: Discrepancies that increase after promotions or holiday periods (high return volume). Phantom stock on products that have a high return rate.
Diagnostic question: What's this product's return rate? Are returns being inspected before being marked as restockable?
5. Multi-Channel Sync Failures
One platform's inventory is stale because a sync failed silently.
How to identify: Discrepancies correlated with a specific channel's data. Discrepancies that partially self-correct when the next sync runs. Discrepancies appearing on products sold on multiple channels.
Diagnostic question: Is this product listed on any channel besides Shopify? When did you last check your sync logs?
6. Bundle and Kit Tracking Errors
Selling a bundle might not correctly decrement component products, or might double-decrement them.
How to identify: Discrepancies concentrated on products that are also bundle components. Discrepancies that correlate with bundle sales volume.
Diagnostic question: Is this product used as a component in any bundle or kit?
7. Location and Transfer Errors
Inventory moved between locations or warehouses wasn't logged correctly — or was logged in the wrong direction.
How to identify: Discrepancies in a specific location that don't appear in aggregate. Discrepancies appearing around transfer dates.
Diagnostic question: Was this product transferred between locations recently? Was both sides of the transfer logged?
8. Manual Adjustment Errors
Someone "fixed" a discrepancy manually — in the wrong direction, by the wrong amount, or on the wrong product.
How to identify: Unexplained inventory changes with no corresponding order, return, shipment, or transfer. Changes occurring at unusual times (evenings, weekends).
Diagnostic question: Is there an unexplained inventory adjustment in the Shopify audit log for this product?
9. Software Bugs and Integration Errors
A buggy app, failed API call, or data race condition created or deleted inventory incorrectly.
How to identify: Sudden large-scale discrepancies appearing simultaneously across many products. Discrepancies correlated with a specific app update or API change.
Diagnostic question: Did discrepancies appear across many products at once? Was there a recent app update or integration change?
The Diagnostic Framework: Finding Root Causes Systematically
When you discover a discrepancy, work through this decision tree:
| Question | If Yes → | If No → |
|---|---|---|
| Does it correlate with a recent shipment? | Receiving error | Next question |
| Is it on a high-theft product type? | Possible theft | Next question |
| Is the product on multiple channels? | Sync failure | Next question |
| Is it a bundle component? | Bundle tracking error | Next question |
| Are there unexplained manual adjustments? | Manual error | Next question |
| Did many products change simultaneously? | Integration bug | Fulfillment/return error |
:::screenshot /blog/anomaly-detail-root-cause.png|CoreCaptain's anomaly detail page shows the likely root cause, confidence level, and recommended action — so you're not just finding discrepancies, you're understanding them.|CoreCaptain anomaly detail with root cause analysis :::tip The most valuable thing you can do after finding a discrepancy is document the root cause — not just fix the number. If you just correct the count without understanding why, the same cause will create the same discrepancy again within weeks. :::
Building a Discrepancy-Prevention System
Finding and fixing discrepancies is reactive. The goal is to stop them accumulating in the first place.
Layer 1: Prevention at the Source
- Receiving: Two-person count verification on every shipment. Count-to-PO comparison before logging. Any discrepancy vs. PO triggers immediate supplier notification.
- Returns: Mandatory physical inspection before restocking. Separate "pending inspection" location. Clear criteria for what can be restocked vs. written off.
- Fulfillments: Barcode scanning at pick time (not just visual). Weight verification at pack time catches wrong-quantity errors.
- Transfers: Mandatory dual-side logging. Transfer counts verified by the receiving location before confirmation.
Layer 2: Detection Before Customer Impact
- Cycle counting: Count ~5% of your catalog every week on a rotating schedule. By the end of the year, you've counted everything without a full shutdown.
- Sales velocity monitoring: Flag any product whose inventory is depleting faster than sales explain.
- Automated anomaly detection: Watch every product every day for pattern anomalies that indicate a discrepancy forming — before it causes a failed order.
Layer 3: Investigation and Learning
- Every confirmed discrepancy gets a root cause documented
- Root causes are reviewed monthly for patterns
- Any root cause appearing more than twice in a month triggers a process review
The Metrics That Tell You If You're Improving
| Metric | Industry Average | Good | Excellent |
|---|---|---|---|
| Inventory record accuracy | 65% | 85% | 95%+ |
| Discrepancy rate (spot checks) | 35% | 12% | <5% |
| Time to detect discrepancy | 4–6 weeks | < 1 week | < 48 hours |
| % discrepancies with identified root cause | 40% | 75% | 90%+ |
The stores that reach "excellent" on all four metrics share one thing: they treat inventory accuracy as a first-class operational KPI — reviewed weekly, with accountability.