Expiry date management: catching stock while it is still worth something
Expired stock is not a loss that happens on the expiry date. It is a loss that was decided weeks earlier, when nobody noticed the batch was ageing and nobody moved it. A stock system that records dates turns that from bad luck into a decision.
Three things make expiry date management work. Dates captured at receipt, stock held per batch, and a window that fires early enough to do something about it. All three live in the item setup, not on the billing screen.
On this page

Expiry date management starts where an item is not a batch
Most billing systems hold one stock figure per item. For dated goods that is not enough. Forty units in hand might be twenty expiring next week and twenty expiring in six months, and those two halves need different treatment.
Batch-level stock means each receipt creates its own line with its own expiry. The item still shows a total, but underneath it the dates are separate and visible.
This is compulsory in pharmacy and food. It is useful in cosmetics, paint, adhesives, batteries and anything with a shelf life printed on it, where most shops do not bother and lose money quietly.
Capture the date at receipt or never
If the expiry is not entered when goods arrive, it will not be entered later. Nobody goes back through cartons to add dates to a system.
So make it a required field for categories that carry dates, and leave it absent for the ones that do not. A date field on every item in a hardware catalogue will simply get filled with nonsense.

Scanning helps where the supplier prints a batch code. Where they do not, the receiving person types it once per carton, which takes seconds and saves the whole exercise.
FEFO beats FIFO on the shelf
FIFO sells the oldest purchase first. FEFO, first expired first out, sells the earliest expiry first. They are usually the same and occasionally not, and the exceptions are what cost money.
A later delivery can easily carry an earlier expiry, because suppliers ship what is nearest the front of their own warehouse. Rotating by purchase date alone will then leave the short-dated stock behind.
Let the system pick the batch at billing, earliest expiry first, and tell the staff member which one to hand over. Asking people to read dates during a rush is how it fails.
The window is the whole point
A report that lists what expired yesterday is an obituary. Useful expiry date management lists what will expire inside a window long enough to act on.
| Category | Typical window | What to do inside it |
|---|---|---|
| Fresh and dairy | 2 to 3 days | Discount hard, same day |
| Packaged food | 30 days | Promote, bundle, move forward |
| Medicines | 90 days | Return to supplier where allowed |
| Cosmetics | 60 days | Discount or transfer to a busier branch |
| Slow-moving dated goods | 120 days | Stop reordering that line |
Those windows are starting points, not rules. Set each one by how long it actually takes you to sell through the normal quantity of that category, then shorten it if you are still getting caught.
Supplier returns, where the real recovery is
In pharmacy and parts of food, suppliers accept returns of near-expiry stock inside an agreed period. That is the cheapest possible outcome, and it has a deadline of its own.

Set the near-expiry window to fire before the supplier’s return window closes, not after. A shop that discovers short-dated stock a month too late has turned a recoverable cost into a write-off for no reason.
Write-offs need their own reason code
When stock does lapse, record it as expiry, not as general damage or a stock adjustment. The reason code is what lets you see the pattern.
- Expiry write-offs reported separately from breakage and theft
- Grouped by item, so repeat offenders are obvious
- Grouped by supplier, in case the stock arrives short-dated
- Valued at cost, never at selling price
- Reviewed monthly against what was ordered, not just what was lost
Three months of that in the back office usually points at two or three lines being ordered in quantities the shop cannot sell through. That is a buying fix, and it is worth more than any amount of careful rotation.
Setting it up
- Mark which categories carry dates, and make expiry compulsory for those only
- Switch stock to batch level for those categories
- Set a near-expiry window per category, inside any supplier return window
- Make billing pick the earliest-expiry batch automatically
- Add an expiry reason code and report it separately each month
Expiry date management is not about watching dates. It is about being told early enough that discounting, transferring or returning is still an option.
Frequently asked questions
Why is batch-level stock necessary for dated goods?
Because one stock figure hides the dates inside it. Forty units in hand could be twenty expiring next week and twenty expiring in six months, and those halves need different action. Batch-level stock keeps each receipt and its expiry visible under the item total.
What is FEFO and how is it different from FIFO?
FIFO sells the oldest purchase first. FEFO, first expired first out, sells the earliest expiry first. They usually agree, but a later delivery can carry an earlier expiry, and rotating by purchase date alone then leaves the short-dated stock behind.
How long should the near-expiry window be?
Long enough to act. Base it on how long you normally take to sell through that category, and make sure it fires before any supplier return window closes. A few days suits fresh food, a month suits packaged goods, around ninety days suits medicines.
Should expiry write-offs be recorded differently from damage?
Yes. Give expiry its own reason code so the pattern is visible, then group losses by item and by supplier. Repeat offenders usually turn out to be lines ordered in quantities the shop cannot sell through, which is a buying problem rather than a rotation one.
Do I need expiry tracking if I am not a pharmacy?
It is compulsory in pharmacy and food, and quietly useful in cosmetics, paint, adhesives and batteries. Any category with a shelf life printed on the pack loses money the same way, usually without anyone measuring how much.
Sources, method and author
A working procedure rather than a compliance guide. The controls described, compulsory expiry at receipt, batch-level stock, a category window, FEFO picking and a dedicated write-off reason, are standard practice in dated-goods retail. The window lengths in the table are starting points drawn from common category behaviour, not regulatory figures. Licensing and record-keeping obligations for medicines and food are separate and sit with the regulators linked below.
- Food Safety and Standards Authority of India — date marking and food business obligations
- Central Drugs Standard Control Organisation — the framework governing medicines in India
- Investopedia on shrinkage — where expiry sits among other stock losses
Clotouch is a point of sale product built by Clonet Technologies Pvt Ltd. The controls described work in any system that holds stock at batch level, including ours. It is not legal, food safety or pharmacy compliance advice.
Author. Aman Raj. Published 19 October 2026 for Clonet Technologies Pvt Ltd, Bengaluru.