Every shop has the shelf. Usually it is the bottom one, or a carton behind the counter, or the top of the almirah where nobody looks. Sauces that went off in March. A face cream in packaging the company stopped using two years ago. Six strips of a syrup that stopped moving the week the doctor down the road changed what he prescribes.
Ask the owner what it is worth and you get a shrug, then a number that is deliberately low, because the honest number is uncomfortable. That stock is not stock. It is cash, spent in full at landing cost, that is not coming back.
The part worth sitting with is that almost none of it was inevitable. Most expiry loss is decided three to six months before the date printed on the pack — at the moment somebody accepted a short-dated carton without looking, or on the quiet afternoon when a batch crossed the line past which the distributor would no longer take it back.
Expiry is an inventory problem before it is a loss
Most shopkeepers treat expiry as an event: a day arrives, goods become worthless, you throw them out and feel bad about it. It is not an event. It is a sequence of decisions with a rising cost and a shrinking set of options.
- At the GRN: you can refuse a short-dated carton outright, or take it knowingly and price it to move
- Ninety days out: the distributor will usually still take it back under their return terms
- Thirty days out: the return window has typically closed. Now you can discount hard, bundle it, or move it to eye level
- Expiry day: the only remaining option is a write-off — and in some categories, a disposal you cannot do casually
The value of the same box falls towards zero along that line, and the number of things you can do about it falls with it. Everything in this article exists to move your decision earlier on that timeline. That is the entire game.
Batches: the unit of truth on a shelf
You cannot manage expiry at the product level, and this is where a lot of billing software quietly fails a real shop. The software knows you have forty-two units of a product. The shelf knows you have twelve from a batch that expires in November and thirty from one that runs to next August. Those are not the same forty-two, and treating them as one number is how the November stock stays at the back.
A batch is the smallest thing that tells the truth. It carries a batch number, an expiry date, its own MRP, its own landing cost and its own quantity in stock. All four of those matter separately:
- The expiry date, because that is what the alert scans and what the return claim depends on
- The MRP, because prices change between lots and two packs of the same product on one shelf can legitimately carry different printed prices — a system storing one price per product will bill one of them wrong, and the customer will notice
- The landing cost, because that is what the write-off is actually worth and what tells you whether the festival scheme you signed up for was a deal or a trap
- The quantity, because the batch is what runs out, not the product
A product tells you what you sell. A batch tells you what you are holding, what it cost you, and how long you have to do something about it.
The near-expiry scan, and what to do the day it flags
Run the scan weekly. It should flag two things: batches heading towards expiry, and products that have fallen below their reorder level. Each alert then gets acknowledged, snoozed with a date, or resolved — which is the difference between a worklist and a wall of red that everybody stops seeing by the third week.
When a batch flags, work down the options in order of what you recover:
- Return it to the distributor, if the window is still open — this recovers the most money and costs the least effort
- Move it to the front of the shelf and tell the counter to push it, which costs nothing at all
- Discount it, or bundle it with something that moves anyway
- Transfer it to your other shop, if you have one and it sells there
- Write it off, with a reason recorded — and treat that as the failure it is, not the routine it becomes
The rule that saves the most money is boring: every alert needs a person and a date. An alert nobody owns is not an alert, it is a notification, and notifications are things people learn to swipe away.
Distributor return windows you keep missing
Every distributor has terms for near-expiry and expired goods, and most shops treat those terms as folklore passed down by whichever rep last visited. Get them in writing for your top ten suppliers: how many days before expiry they accept a return, whether you get a credit note or a replacement, whether the pack has to be unbroken, and who pays the freight. It is one afternoon of phone calls and it is worth more than any discount you will negotiate this year.
Then there is the operational half, which is knowing what qualifies. That requires the batch on your shelf to remember where it came from — which supplier, on which purchase order, received on which GRN, at what cost. A carton with no traceable origin is not returnable to anybody; you are reduced to arguing with a rep from memory. A batch that knows it arrived against a specific supplier invoice is a claim you can put together in ten minutes.
Raise it properly as a purchase return against that purchase and take the debit note, so your payable to that distributor comes down and your stock comes down at the same moment. The alternative — handing goods back on the rep's van with a line in a diary — is how shops lose credit they were genuinely owed, and only discover it when they finally reconcile the supplier ledger a year later.
Selling the right lot at the counter
All of this is theory if the boy at the counter grabs whichever strip is nearest to his hand.
The default has to be oldest-expiry-first, and the counter needs to see which batch it is picking, with that batch's expiry and MRP on screen while the customer is still standing there. Not always oldest, mind you — a customer buying a six-month supply of a supplement should not be handed the lot expiring in five weeks, and it is not honest to do it. But the exception should be a decision somebody makes, not an accident of which carton was opened first.
Then put the batch on the bill. That one habit is what makes a recall, a customer complaint or a return traceable months later, because the bill and the shelf are describing the same physical object. For a pharmacy it stops being a nicety: dispensing against a prescription with batch and expiry recorded on every strip is precisely the trail your drug licence assumes you are keeping.
Reorder levels for fast movers versus slow movers
Expiry loss and stockouts are the same failure seen from two sides. You ordered the wrong quantity. The difference is that a stockout announces itself — a customer walks out — while expiry loss waits eight months and then presents the bill quietly.
For fast movers, the reorder level is about never running dry. A kirana that runs out of the one brand of atta the neighbourhood actually buys does not lose one item of margin; it loses the whole basket, and sometimes the customer, because they found everything at the shop two lanes over and it was fine.
For slow movers, be brutal. The reorder level should be low, the order quantity should usually be one, and the scheme should be refused. Buy ten and get one free is only free if you sell the other ten before the date on the pack — and the person who designed that scheme does not have to write off your shelf. The same applies to festival ordering: stock bought in the enthusiasm of Navratri and still sitting there in January was never a stock problem, it was an ordering decision made by an optimist.
The monthly shelf audit that takes an hour
Once a month, an hour, with the expiry and stock reports open and a person physically standing at the shelf. This is not a full stock count. It is a targeted sweep, and it goes in this order:
- Everything expiring in the next ninety days, sorted by value, highest first — that is your worklist, already prioritised
- Batches with stock on hand that have not moved in sixty days
- Anything visibly on the shelf that the system says is zero, and anything the system says you have that is not there
- Batches whose printed MRP disagrees with the MRP in the system
- Slow movers you are still reordering out of pure habit
The second line is the most valuable and the least done. A batch that has not moved in two months is not going to surprise you in the third. You are looking at a decision you have already made and have not yet admitted to — and the only question left is how much of the money you want back.
Writing off honestly, so the numbers stay usable
When stock is genuinely dead, take the loss on the books. A stock adjustment with a reason — expiry, damage, count correction — recorded in the same movement ledger that carries every purchase, sale and return, so stock on hand always reconciles to a chain of events rather than to somebody's opinion.
The temptation runs the other way. Leave the expired stock in the system so the stock value looks healthier. Adjust a count quietly with no reason attached. Both feel harmless and both are expensive, because every number downstream stops meaning anything. Your stock report becomes fiction, your gross margin is overstated, and the day you try to work out which category is actually earning its shelf space, you find you cannot.
A shop that writes off ₹18,000 of expiry in a year and can tell you exactly which three categories it came out of is in a far stronger position than a shop that writes off nothing and has a shelf nobody mentions. The first one is about to fix something. The second is going to do it all again next year.
Dead stock is the cheapest problem in retail to fix and the most expensive to ignore, because it charges you twice — once for the money you spent, and again for the shelf space a moving product could have been using. None of the fixes are clever. Batches with real expiry dates, a scan every week that somebody owns, supplier return terms you have actually read, and an hour a month standing at the shelf with the report open.