In 2019, I was operations manager at a 3PL warehouse in Ontario. Year-end physical inventory: the books and the floor disagreed on more than 380 SKUs. Finance went pale — under 3% variance is normal, and we were pushing 6%. Over the next three weeks, two supervisors and I dug through the 50 worst SKUs one by one. What we found: less than ten percent was actually "lost" product. The rest was process failure.
Here's the verdict: more than eighty percent of count variance is not missing product — it's product that's physically there but booked wrong. Nail the five root causes below and you can cut your variance rate in half.
Root cause 1: Received but never put away — yet the system says "in stock"
The most common one. Product arrives, the receiver confirms receipt in the system, but the pallets are still sitting in the receiving staging area. Sales sees system stock and sells it. The picker walks to the location and finds it empty. Books say more, floor says less — there's your variance.
The fix: receiving confirmation and putaway confirmation must be two separate transactions, with an "in-transit location" in between. In-transit stock must never show as sellable. My rule afterward: anything sitting in receiving staging more than 24 hours without putaway triggers an automatic alert to the supervisor. Simple, and it works.
Root cause 2: Location labels fell off, got mislabeled, or were knocked off by a forklift
Location coding gets zero respect until count day, when it turns into a minefield. Labels fall off and pickers put product "roughly where it should be" from memory. Labels get misapplied and location A's product sits on location B's books. Count day: A shows short, B shows over, the totals look fine, and every location is wrong.
The sneakier variant is commingling: two SKUs stuffed into one location, and the counter only scans the one on top. The one underneath "disappears."
Three fixes: first, use metal plates or high-tack labels for locations, not cheap stickers a forklift brush will knock off. Second, make location-label inspection a fixed monthly routine. Third, one location holds one SKU in the system (unless it's a designed mixed-storage zone) — kill commingling at the source.

Root cause 3: Returns went back to the shelf without touching the system
Returns are a variance hotspot. Customer service gets a return and tosses it back on the shelf, thinking "the product's back, that's what matters." In the system it's still marked shipped: books short, floor over.
Worse: a return fails QC and gets scrapped, but nobody books the inventory adjustment. The system carries those units forever.
The fix: returns must pass through two gates — a returns staging area plus QC — before going back to sellable stock, with the system adding inventory at that moment. Failed units go through a scrap process that deducts inventory in the system. No exceptions to this flow. "It's just one unit, put it back" is where variance is born.
Root cause 4: Unit-of-measure conversions gone wrong — cases vs. eaches
One SKU, purchased by the case, sold by the each, with a conversion in the middle (1 case = 24 eaches). The conversion gets misconfigured, or the supplier quietly changes the pack spec (24 down to 20) without telling anyone, and variance appears.
The worst case I saw: a supplier moved from 12 bottles per case to 10. Purchasing never told the warehouse, the system still converted at 12. It took three months to catch, and the variance kept compounding.
The fix: when creating a new item, physically verify the case pack — open a case and count it, don't trust the supplier's spec sheet. And require purchasing to notify the warehouse of any pack-spec change from the supplier; write it into the supplier agreement.
Root cause 5: The counting method itself
Counters get lazy and copy the book quantity when it "looks about right." In dynamic cycle counting (counting while operations run), counts and transactions aren't time-isolated — product gets picked mid-count and the numbers never reconcile. High-value small items get counted non-blind: the counter sees the book quantity first, and psychology does the rest — the "counted" number matches the books exactly.
The fix: high-value SKUs get blind counts, no book quantities shown. Dynamic counts need a freeze zone — pause transactions in the area during counting, or use timestamp cutoffs: record the count start time and reconcile transactions after that point separately. Any variance beyond threshold (say ±5 units or $200) triggers a recount, and the original counter doesn't do the recount.
Finally: replace the annual wall-to-wall with cycle counting
If you're still doing one giant count a year, switch to cycle counting: ABC classification, A items monthly, B quarterly, C semi-annually. Variance gets caught the day after it appears, when tracing is easy — investigating yesterday's transactions beats investigating last year's by a mile.
After that warehouse switched to cycle counting, variance dropped from 6% to 1.8%, and we never shut down for a three-day wall-to-wall again. The avoided shutdown alone was worth well over $100K a year.
Extra controls for high-value SKUs: counting alone isn't enough
One more layer: for high-unit-value, small-footprint SKUs — 3C accessories, cosmetic samples — cycle counting alone won't cut it. Add three daily controls.
First, outbound weight verification. High-value SKUs pass a check-weigher on the way out; a weight mismatch stops the order cold. That catches variance a full step earlier than any count.
Second, locked locations. These SKUs get dedicated fixed locations: the system forbids commingling and casual transfers, and any transfer needs supervisor approval. One approval gate kills the "just grab one" habit.
Third, daily spot counts. Every morning before shift start, the supervisor blind-counts 5–10 randomly picked high-value SKUs — ten minutes, done. Only after 30 consecutive clean days does a SKU graduate to the normal count frequency. As a deterrent, this works better than cameras.
Those three plus the five root causes above, and your inventory accuracy program is actually closed-loop.
One action for tomorrow: pull your last count's variance list and classify each line into these five root causes. You'll find eighty percent land in the first three — so start with the receiving-to-putaway flow and location labels. Those two fixes deliver the fastest results.
What caused the worst count variance in your warehouse? Drop it in the comments — let's see if it was one of these five traps.










