Every quarter, somewhere in India, a store keeper gets a hard look because the count came up short. In our experience, six times out of seven, it was not him.
Stock variance is a recording problem. Material moves faster than paperwork, and every gap between the two shows up later as a number nobody can explain. Here are the seven gaps, in the order they usually cost the most.
1. Job-work material that never came back on paper
You send 500 kg of raw material to a fabricator. 460 kg of finished parts come back. Where are the other 40 kg — scrap at their end, process loss, or short supply? If the challan out and the receipt in are not linked with an expected yield, your books still think you own 500 kg somewhere.
The fix: every outward challan gets an expected return quantity and an allowed loss percentage. Anything outside it needs a reason recorded at receipt, not at year-end. There is more detail in our piece on tracking job work without leakage.
2. Scrap and rejection that are only in someone's head
A supervisor rejects six pieces on the line. He knows. The system does not. Multiply by every shift for a quarter.
The fix: rejection is a transaction, not a note. It needs a reason code (dimension, finish, material defect, machine setting) and it needs to be entered by the person who made the call, on the shop floor, that shift. Reason codes turn variance into a quality report you can act on.
3. Samples, replacements and internal use
The quiet one. Free samples to a prospect, a replacement sent to keep a customer happy, material pulled for the office or for a machine repair. No invoice, so no entry — but the stock is genuinely gone.
The fix: a zero-value issue document for each of these categories. It costs ten seconds and turns invisible leakage into a line you can budget for. Most owners are shocked by the annual total the first time they see it.
4. Unit-of-measure confusion
Bought in kilos, issued in metres, sold in pieces. Every conversion is a chance for a rounding error, and coil-to-length conversions in pipes, wire and textiles are the worst offenders because the conversion factor genuinely varies by batch.
The fix: one stocking UOM per item, with conversions defined once and applied by the system — never re-calculated by hand on a challan.
5. Timing differences at the cut-off
Material physically arrives on the 30th; the GRN is booked on the 2nd. You counted on the 31st. Nothing is missing — your count and your books are just describing two different days.
The fix: freeze receipts and issues during a count, and reconcile against a stock-as-on-date report rather than a live balance. If your system cannot produce stock as on a past date, that is a problem in itself.
6. Two codes for one item
Stores calls it "MS Pipe 2 inch". Accounts calls it "Pipe-MS-50mm". Both exist. Both hold stock. Neither is right.
The fix: a one-time master clean-up with stores and accounts in the same room, then a rule that only one person can create a new item code. This is dull work and it is the highest-return day you will spend on your data.
7. Actual pilferage
It happens, and it is worth naming. But it is the last thing to conclude, not the first — and it looks different in the data: consistent small losses on high-value, easily resold items, usually on one shift.
The fix: once the six recording gaps above are closed, whatever variance remains is real and now traceable to a location, a shift and a person. You cannot investigate pilferage while the noise floor is 4%.
The counting rhythm that actually finds causes
| Class | Share of value | Count frequency |
|---|---|---|
| A items | ~70% | Monthly |
| B items | ~20% | Quarterly |
| C items | ~10% | Twice a year |
An annual shutdown count tells you the size of the problem eleven months too late. Cycle counting tells you the cause while the challan is still on the desk.
If most of your variance sits in causes 1, 2 and 3, the answer is a recording discipline your system enforces rather than more counting. That is exactly the gap an inventory module is meant to close, and it is the first thing we scope on a call.