The instinct that makes it worse
You count a shelf. The system says forty-one. The shelf holds thirty-four. Seven are missing.
Two instincts arrive immediately, and both are wrong.
The first is to suspect a member of staff. The second is to correct the number to thirty-four and move on. The second feels responsible and is quietly the more damaging of the two, because it destroys the only evidence you had while leaving the cause running. Next month the gap returns, you correct it again, and within a quarter you have trained yourself to believe stock figures are approximate — which is the point at which counting stops entirely.
A discrepancy is information. It is telling you where a process leaks. The number is the last thing you should change.
Recount first
Before any investigation, count it again, and have someone else do it.
An uncomfortable share of discrepancies are counting errors: items stacked behind other items, a second facing on another aisle, a box in the back that nobody looked in, stock already sold but not yet collected, or goods sitting in a delivery bay that belong to today's count. A recount costs five minutes and closes a meaningful percentage of cases outright.
If the second count agrees with the first, you have a real discrepancy and it is worth twenty minutes.
The cause tree, in order of likelihood
Work down this list in order. The order is the method — it puts the common, cheap-to-check causes before the rare, expensive-to-accuse one.
1. Goods were received without being counted
The most common cause in most shops, and the least investigated. A delivery arrives during trading hours, the driver is waiting, someone signs the note, and the boxes go to the back. The invoice said forty-one. Thirty-four arrived. The record was created from the invoice, not from the shelf.
Test: take your last three deliveries and compare the invoice quantity to what was entered and to what is physically there now. If one supplier keeps appearing, you have found both the cause and the conversation to have.
Fix: count at the point of receipt, against the note, before signing. This one change eliminates more variance than any software setting.
2. Units were recorded inconsistently
The gap is 12, or 24, or 144. Clean multiples are almost never theft — thieves do not take a gross of anything and leave the rest.
This happens when goods arrive by the carton and sell by the bottle, and the two are not linked by a stated multiplier. A carton entered as one unit, then twelve bottles sold from it, produces a discrepancy of eleven that looks alarming and means nothing.
Test: divide the gap by your pack size. A whole number is your answer.
Fix: decide what one sellable unit is for that product and apply it everywhere, with the pack-to-single multiplier recorded on the product rather than held in someone's head. Our post on inventory settings that change decisions covers how to set this up.
3. A transfer was recorded as two adjustments
One location is short by twenty. Another is over by twenty. Nothing is missing at all — but both reports are wrong, and neither location can prove anything about the other.
Test: add the two figures. If they net to zero, this is your cause.
Fix: record transfers as a single movement with a receiving confirmation at the destination, so a shortfall is discovered at the moment of receipt by a named person against a stated dispatch quantity. This is covered in detail in our multi-branch guide, and it is the most common way stock appears to vanish in a business with more than one location.
4. Returns and exchanges were never restocked
This is the cause that produces the opposite symptom, which is why it gets missed: the shelf holds more than the record. A customer returned an item, it went back on the shelf, and the return was processed as a refund without a corresponding stock movement.
Test: compare returns processed in the period against stock movements for those items.
Fix: make restocking part of the return, not a separate act of memory, and decide explicitly where a returned item that cannot be resold goes — because it is not stock and it is not gone.
5. Two similar items were confused at the counter
One variant is short by nine. A near-identical one is over by nine. Small Blue was scanned as Small Black, or the wrong line was picked from a name search under queue pressure.
Test: look at similar lines side by side rather than at the problem line alone. This cause is invisible when you examine one product in isolation, which is why it survives so many investigations.
Fix: a unique barcode or SKU per variant, scanned rather than searched. Any product whose variants are chosen from a dropdown at a busy counter will produce this permanently.
6. Damage, expiry, samples and staff consumption were never written off
A steady drift on specific categories: cold drinks, snacks, cosmetics, anything perishable or informally consumed. Nothing dramatic, no single event, just a slow bleed on the same lines.
Test: ask whether any write-off has ever been recorded. In many shops the honest answer is none, ever — which cannot be true, so the losses are hiding inside your other discrepancies and inflating them.
Fix: a write-off with a reason on the day it happens. If breakage genuinely runs at two units a week, you want that visible as breakage. Recorded, it is a storage or handling problem you can solve. Unrecorded, it looks like theft and someone eventually gets blamed for it.
7. Internal theft
It is real, it is usually internal rather than external, and it is undramatic. But it belongs here, at the end, after the six causes above have been eliminated — not because it is unlikely, but because everything above is cheaper to check and more likely to be the answer.
Signature: consistent, targeted at specific sellable items, survives every process fix you make above.
Test: now the audit log is worth opening — activity by user, by shift, against the specific items showing loss. Voids, discounts and adjustments concentrated around one person across many weeks is a pattern. A name attached to a sale is not.
Fix: individual logins, an immutable log, and permissions that put voids and adjustments behind approval. Our guide to audit logs and theft detection covers what the evidence actually looks like and how to act on it fairly.
The twenty-minute investigation
In order, stopping as soon as you have your answer:
- Recount, with a second person. (5 min)
- Divide the gap by the pack size. Whole number, you are done. (1 min)
- Check the other locations for an equal and opposite figure. (2 min)
- Check the last three deliveries of that item against invoice and entry. (5 min)
- Look at similar variants for an equal and opposite figure. (2 min)
- Check returns for the period against stock movements. (3 min)
- Ask whether any write-off exists for a category that certainly has damage. (1 min)
- Only now, open the audit log for that item, by user and shift. (as long as it takes)
Most cases close by step four. The discipline is stopping when you find the cause instead of continuing until you find a suspect.
An adjustment policy you can adopt as written
Write this down, put it where staff can see it, and follow it yourself — the last part is where most policies fail.
| Rule | Why it exists |
|---|---|
| Every adjustment carries a reason from a fixed list | The reason is the data; free text becomes blank within a month |
| Adjustments above a set value need a second approval | Removes the temptation to tidy an inconvenient figure |
| Never delete and re-add a product to fix a count | Deleting destroys the history that explains the gap |
| Write off damage on the day, not at the count | A month later nobody remembers what happened |
| Transfers are movements, never paired adjustments | Paired adjustments make in-transit loss unattributable |
| Reasons are reviewed monthly, not just recorded | An unreviewed log is filing, not control |
That last row is the one that turns this from paperwork into management. Recording reasons and never reading them is a common and completely wasted habit. Read them monthly and the pattern names your problem for you: mostly damage means a storage or handling fix, mostly recount means your counting method is wrong, mostly supplier shortfall means a supplier conversation, mostly transfer error means a process fix between locations.
Then, finally, change the number
Once you know the cause, correct the figure with the reason attached, and record the correction as of today rather than backdating it. Backdating a correction to the date you think the loss occurred looks tidier and quietly corrupts every report already produced for that period.
The gap you just closed is worth one more minute of thought: ask what would have to change for this specific cause not to recur. That question, asked seven or eight times over a couple of months, is how shrinkage actually falls — not through software, and not through suspicion.
If you want the counting half of this, our stocktake checklist covers how to count without closing the shop, which is what makes weekly diagnosis practical rather than theoretical.
Adjustments with reasons, individual staff logins and a movement history that cannot be quietly edited are the three things that make any of the above diagnosable. They are on every Zeneva plan including the free one — see what each plan includes.
Discrepancy Causes, Their Signatures, and How to Test Each
| Cause | What the pattern looks like | How to test it in minutes |
|---|---|---|
| Receiving not checked against invoice | Gap appears right after a delivery, one supplier recurs | Compare the last three invoices to what was entered |
| Unit mismatch (carton vs single) | Gap is a clean multiple: 12, 24, 144 | Divide the gap by the pack size; a whole number is your answer |
| Transfer recorded as two adjustments | One location short, another long by the same amount | Add the two figures together; if it nets to zero, nothing is lost |
| Returns not restocked | Physical count is higher than the record | Check returns against stock movements for the period |
| Mis-scan of a similar item | One variant short, a near-identical one long | Look at the two lines side by side, not each alone |
| Damage, expiry, samples, staff use | Slow steady drift on specific categories | Ask whether any write-off was ever recorded at all |
| Internal theft | Consistent, targeted, survives every fix above | Audit log by user and shift, after eliminating the rest |
| Counting error | Gap vanishes on a careful recount | Recount before doing anything else at all |
Operational FAQ
Continue reading
All articlesOffline POS: How to Keep Selling When the Internet Goes Down
Exactly what happens to a sale when the connection drops, which parts of a POS keep working, and the reconciliation checks that decide whether an outage costs you an hour or a month of bad figures.
Getting Started with Zeneva: A Setup Guide
Sign-up to first sale, with the decisions that matter made explicitly: what to load first, how to import from Excel without corrupting your data, and what to check at the end of week one.
Backorders and Backdating: Handling Real-World Retail
Learn how to handle real-world retail scenarios like stockouts and late entries without compromising your data integrity.
Run this on Zeneva
Stock, sales, staff and receipts in one place — on the shop PC, on your phone, and offline when the network drops. Start free and move up only when the shop outgrows the caps.
Starter
Free forever
50 products, 1 user, 20 Zen AI questions a day. No trial clock, no card.
Pro
Most picked₦10,000 / $10 a month
1,500 products, 5 staff accounts, 100 Zen AI questions a day.
Business
₦30,000 / $30 a month
Unlimited products, unlimited staff, 500 Zen AI questions a day.