The day you carry a carton of expired goods to the back room is not the day you lost the money. You lost it slowly, over months, while that stock sat sellable on the shelf and nobody looked at the dates. By the time expiry makes the loss visible, every chance to avoid it has passed: the distributor's return window, the near-expiry discount, even putting the shorter-dated strip in front.
This post is about a routine that catches stock while those chances are still open. It needs no stock-taking week, just two habits: batch and expiry typed in once, at purchase, and one report read once a month.
Every expired strip was paid for: the loss is real cash
Be precise about how much an expired item costs. Say a strip cost you ₹80 and sells for ₹100. When it expires, the loss is not the ₹20 of margin you missed. It is the ₹80 of purchase money you already handed to the distributor. At that margin, you need ₹400 of fresh sales to earn the ₹80 back. One shoebox of write-offs can quietly eat the profit of a good week.
GST makes it slightly worse. Section 17(5)(h) of the CGST Act blocks input tax credit on goods that are lost, destroyed or written off. Destroy expired stock, and the credit you took on its purchase generally has to be reversed, so the tax you thought was recovered becomes a cost too. The exact treatment is a conversation for your accountant, but the direction is clear: an expired item costs more than its purchase price.
Why first-in-first-out fails without batch numbers
The standard advice is to sell the oldest stock first and keep new cartons behind old ones. That is first-in-first-out, and it rests on an assumption that is often false: that the stock you bought first will also expire first.
Distributors sell from their own mixed shelves. The carton you bought in June can carry a shorter-dated batch than the one you bought in April. If you only track when you purchased, the June carton waits politely at the back of the shelf until it expires there. The only reliable ordering is by the expiry printed on the pack, batch by batch: first-expiry-first-out. And that only works if each batch's expiry is recorded somewhere you can sort and filter.
Record batch and expiry once, at purchase entry
The good news is that the numbers already exist: on the pack, and line by line on most distributor invoices. The cheapest moment to capture them is purchase entry, because you are already touching every item once. Type them then, and every report afterwards comes free. Try to capture them later, during a stock-take, and you are handling thousands of items a second time.
In Layerdots ERP, purchase entry takes batch and expiry per line, and OCR invoice scanning reads the distributor's invoice to cut down the typing. If your stock register lives in Excel today, moving those columns across is a one-time job; we have written separately about moving from Excel to billing software without losing your history. For a pharmacy this is the core of the trade, which is why batch-wise stock sits at the centre of what a medical store needs from billing software.
The monthly expiry report habit: fifteen minutes, one filter
Once expiry lives in the system, the routine is small. Pick one date a month you already remember, say the day after your GST filing. Run the expiry report with one filter, everything expiring in the next 180 days, and sort the list into three buckets:
- Return: saleable stock whose distributor return window is still open. Set it aside with its purchase reference.
- Mark down: stock you cannot return but can still sell at a discount.
- Watch: stock with months left that normal sales will clear. Do nothing, check again next month.
The report takes seconds because the dates are already recorded. The fifteen minutes go on decisions, not on hunting for dates with a torch behind the fridge. That is the difference between this and a stock-taking week: the squinting happened once, at purchase entry, spread invisibly across the year.
Return windows: sending stock back to the distributor in time
Most distributors accept near-expiry stock back, but only inside a window, and the window is a matter of trade practice, not law. Some take medicines back up to a few months before expiry, some only take stock already expired, some want the original invoice reference on the return. Ask each main distributor what their window is and write it down. The answer decides how far ahead your report should look: a report that only shows stock already expired is, for returns, too late by definition.
The paperwork side is checkable. Returns between registered businesses move on a credit note under Section 34 of the CGST Act. For time-expired medicines specifically, CBIC Circular No. 72/46/2018-GST, dated 26 October 2018, describes the two routes: the return can travel as a fresh supply from you to the distributor, or against a credit note issued by them. Which route applies depends on the case, so ask your distributor which one they use and let your accountant confirm the treatment. Your job at the counter is simpler: know the window, and have the original purchase on record so the return can name it.
Near-expiry markdowns for goods you cannot return
Some stock has no way back: FMCG lines with no return arrangement, opened cartons, items bought in a scheme. Here the arithmetic is blunt: any price above zero beats a write-off. Selling a ₹100 item at ₹60 feels like a loss, but the alternative is recovering ₹0 of your ₹80 purchase cost. A discounted sale also stays a normal taxable sale, so the input-credit question that Section 17(5)(h) raises for destroyed goods does not arise the same way.
Put marked-down stock where people see it, at the counter, not on the shelf where it went to expire in the first place. A small "short dated, ₹40 off" basket sells faster than you would expect, and regular customers learn to check it.
Expiring stock and dead stock are different problems
It is worth keeping two ideas separate. Expiring stock sells fine; its problem is a clock. Dead stock has no clock; its problem is that nobody buys it, and next year it will still be there, unexpired and unsold. The fixes differ too. Expiring stock wants returns, markdowns and first-expiry-first-out. Dead stock wants you to stop reordering it and to clear the shelf space for something that moves. A kirana shelf usually holds both kinds at once, which is why a stock report and an expiry report are separate reports: one sorts by movement, the other by date. Reading the wrong one for the job hides the problem it was meant to show.
Common questions
I run a kirana, not a pharmacy. Is batch-wise expiry worth the typing?
Record it where the date matters and skip it where it does not. Biscuits, dairy, sauces,
masala packets and baby food carry real dates and real write-offs; detergent and steel wool do
not. Covering a third of your catalogue still catches most of the loss, because the loss lives
almost entirely in dated goods.
Do I have to reverse GST credit on expired stock?
If the stock is destroyed or written off, Section 17(5)(h) of the CGST Act blocks the input
tax credit, so reversal is the general rule. If it goes back to the supplier against a credit
note under Section 34, the credit note adjusts the tax instead. The boundary cases are exactly
what your accountant is for; bring them the purchase records and the return paperwork.
How far ahead should the expiry filter look?
Far enough that the return window is still open when you act. If your distributors take
returns up to three months before expiry, a 180-day filter gives you three months to notice
and act, while a 90-day filter shows you items whose window has already closed. Start at 180
days and shorten it only if the list is mostly "watch" items month after month.