The ugliest spreadsheet I have ever seen was a year-end inventory reconciliation at a distribution center outside Chicago. Dozens of unresolved variances, some of them two years old, parked in suspense accounts with descriptions like "pending review." Nobody wanted to touch them. Every one of those lines was a decision someone had postponed — and every postponement had made the eventual write-off bigger.

That is the real story of inventory variances. The count difference itself is rarely the disaster. The disaster is having no process for what happens next.

A shortage and an overage are not mirror images

The most common mess I see is treating overages and shortages as the same thing with opposite signs. They are not.

A shortage means assets are actually gone. Standard practice is to debit a shrinkage or inventory loss account and credit inventory — with large or unexplained amounts disclosed separately, never quietly buried in cost of goods sold. Tax treatment of those losses varies by jurisdiction, so check current local rules rather than assuming.

An overage — the books say zero, the shelf says otherwise — gets the opposite entry: debit inventory, credit a gain. But an overage deserves an extra question: is this really extra stock, or three months of returns piled in receiving that nobody booked? I once investigated a "favorable variance" that turned out to be exactly that. The books looked good. The warehouse was a minefield.

Then there is the SKU swap: SKU A is over by 100 units, SKU B is short by 100, net zero. Never net them off just because the total is zero. The two SKUs can carry completely different unit costs, so the inventory value is still wrong after netting. Each leg needs its own root cause and its own adjustment.

My position is simple: every adjusting entry carries an explanation of cause attached to the voucher. A variance you cannot explain should sit unresolved, not be forced into balance. Forced balances always come back to haunt you at audit time. (Chart of accounts varies by company — follow your own accounting policy.)

Decide who can approve what — before the count

Variance approval has to be tiered, and the tiers have to be written down before anyone starts counting, not improvised afterward.

A workable framework: counters count and recount, nothing more. Supervisors confirm recount results. The warehouse manager approves small variances. Anything above a set threshold goes to the finance manager. Major amounts need the general manager's signature. Every company sets its own thresholds in a written variance policy — the key word is "written," and the other key word is "before."

The recount itself needs rules. The person who counted first should not do the recount, and ideally the recount is blind — the second counter does not know the first number. If the two counts disagree, a third person counts. A surprising share of "variances" are just miscounts, and adjusting the books without a recount means correcting one error with another.

Close-up of inventory count tags on cartons in a warehouse

One more control worth having: any SKU that shows up on the variance report several months in a row gets escalated automatically, no matter how small the amount. Employee theft and process leaks tend to surface as small, recurring differences on the same items. A pattern of small variances on the same SKUs worries me more than one big one-off.

It also helps to code every variance with a standard reason: receiving miss, putaway error, pick error, damage, suspected theft. After six months the data tells you exactly which link in the chain is leaking. A variance note without a reason code is decoration.

Dead stock is not shrinkage

Here is the mix-up I encounter most often: a shortage gets booked into the obsolescence reserve, or obsolete stock gets written off as shrinkage during the count.

They are different things. Obsolescence means the goods are still there but worth less — that is an impairment provision. Shrinkage means the goods are gone — that is a loss. Blend them and management can see neither the true loss rate nor the true scale of dead stock. Keep the two ledgers separate, and ugly numbers at least have a chance of getting better.

The obsolescence provision itself needs written criteria — for example, aging-based tiers with the percentages set in policy (illustrative only; every company sets its own). Auditors will challenge any provision that has no documented basis. With a documented basis, finance and operations stop arguing every year and just run the schedule.

One operational footnote: providing for dead stock does not mean you can ignore it. Quarantine it in a separate area, review it periodically, return it to suppliers where possible, clear it at a discount where not. The provision only recognizes the loss on paper. The pallets are still sitting there eating space and cash. Paper and physical need to move together.

What the auditor is actually looking at

Auditors do not just check whether the count was accurate. They check four things: independence (are the counters different people from the custodians?), blind counting, whether every variance was closed out, and whether the WMS balance reconciles to the general ledger.

Which is why finance and the warehouse need a monthly reconciliation: WMS closing balance versus the GL inventory balance, every difference explained line by line. Too many companies reconcile once a year. Eight months of drift go unnoticed, and by December the number is too big for anyone to sign. Monthly reconciliation has a second benefit — small variances are easy to investigate; by year-end, nobody can reconstruct what happened.

The count cut-off has to be agreed with finance in advance. Either freeze receiving and shipping during the count, or log every in-transit movement. I have seen a count invalidated halfway through because sales pushed a truck out the door mid-count and nobody could untangle the books from the floor afterward. Send a formal notice before every count: when the freeze starts, who approves exceptions. In writing.

Cycle counting is the best way to keep variances small. Classify SKUs: A items counted monthly, B quarterly, C semi-annually. Over a year, your high-value SKUs get counted a dozen times, and differences surface while they are still small instead of accumulating into a year-end shock. Cycle-count variances go through the same approval and adjustment process — no verbal adjustments just because "the amount is small."

One thing you can start next month: by the fifth of each month, the warehouse sends finance a three-column sheet — WMS balance, GL balance, explanation of differences. Keep it up for six months and watch how many fewer "surprises" show up at year-end. The sheet does not fix everything. It just makes every problem visible six months earlier.