FEFO, short for First Expired, First Out, means a warehouse picks the batch that expires soonest, not the batch that arrived first. For Indian retailers selling food, personal care, pharma or any dated product, it is the simplest way to stop good stock turning into a write-off while newer batches sell.
Why does stock expire on the shelf when the system says it is fine?
Because most stores and warehouses track quantity, not batches. The system says 120 units are available, and nobody can see that 40 of them expire in three weeks while the other 80 are fresh.
The pattern is the same in a kirana chain, a D2C food brand or a pharmacy group. A new delivery arrives, a helpful staff member stacks it at the front because that is easiest, and the older batch slides to the back. Pickers take what they can reach. By the time anyone looks behind the front row, the old batch is too close to expiry to sell at full price, or to sell at all.
Under the FSSAI labelling rules, packaged food must carry a date marking, and a product past that date cannot be sold. You can read the regulator's guidance on fssai.gov.in. The loss is not only the unit cost. It is the shelf space the dead batch occupied, the margin you never earned, and the markdown you did not plan.
How much of the loss comes from picking order rather than buying?
Often more than owners expect, because the buy was fine and the sell order was wrong. If the quantity bought was right but the oldest batch was picked last, the loss is a process fault, not a forecasting fault.
Three habits create it:
- FIFO by default: pickers follow arrival order, which works for shirts and fails for yoghurt, ghee, shampoo or medicines with different shelf lives per batch.
- Shortest-reach picking: the nearest unit gets picked, not the right unit.
- Mixed batches in one bin: two expiry dates share a location, so the system cannot tell the picker which unit to take.
Retail margins in Indian food and grocery are thin, a point industry bodies such as the Retailers Association of India have repeatedly raised, so a few batches written off each month matters far more than it would in a high-margin category.
What is the difference between FIFO and FEFO?
FIFO picks the oldest arrival. FEFO picks the earliest expiry. They give the same answer only when every batch has the same shelf life, which is rare once you stock more than a handful of products.
| Question | FIFO | FEFO |
|---|---|---|
| What decides the next unit picked? | Date received | Date of expiry |
| Works for fashion and hardware? | Yes | Not needed |
| Works for food, FMCG, pharma, cosmetics? | Fails when shelf lives differ | Yes |
| Needs expiry captured at receiving? | No | Yes, on every batch |
| Risk if ignored | Short-dated batch left behind | Almost none, if the pick list enforces it |
A concrete example: a supplier sends a late delivery of a biscuit SKU with a longer shelf life than the batch already in your rack. FIFO sends the old batch out first, which is fine. But when a supplier sends a short-dated batch later, perhaps from a promotional lot, FIFO would pick the older, longer-dated batch first and leave the short-dated one to expire. FEFO catches that case.
How to set up FEFO picking in an Indian retail warehouse
Start with the receiving dock, because FEFO fails the moment an expiry date is missing from the record. The steps below work for a single warehouse or a chain of stores fed from one.
- Capture the batch number and expiry date for every dated SKU when goods are received, before putaway. Our guide on receiving errors in grocery chains covers how to keep the dock record honest.
- Separate batches physically. One bin location holds one batch, or the bin is split with a visible divider and its own label. Mixed bins defeat everything that follows.
- Rank each batch by expiry date so the earliest is always the first one offered. Good warehouse slotting puts the oldest batch at the easiest reach point, so the right unit is also the convenient one.
- Generate pick lists that name the batch to take, not just the product. When pickers combine orders, a batch pick must still show which batch goes to which order.
- Scan the batch label at pick time and block a mismatch. A picker who grabs the wrong batch should get a stop, not a silent pass.
- Review a near-expiry list every week, covering batches within a window you set per category, for example 30 days for fresh dairy and longer for packaged staples.
What should you do with stock that is close to expiry?
Act while it still has value. A batch discounted at 45 days left usually clears; the same batch at 5 days left usually does not.
Use a simple ladder:
- Move it forward: shift it to the stores or channels that sell that SKU fastest.
- Bundle it: pair it with a fast seller in a combo.
- Discount it early: a planned markdown beats a forced clearance.
- Return it: check supplier terms. Some suppliers accept short-dated returns within a window, but delays erode that right, as we explain in return-to-vendor delays.
- Write it off cleanly: record it with a reason code so you learn which supplier or SKU keeps producing it.
The reason code matters more than it looks. If one supplier repeatedly ships short-dated lots, that is a negotiation point, and if one SKU keeps ageing out, that is a buying quantity problem.
How do you keep FEFO honest across stores and online channels?
Count the stock by batch, not only by quantity. A cycle count that checks totals will not notice that the front batch is the wrong one.
When you run cycle counting, add the batch number to the count sheet for dated SKUs, so a mismatch shows both a quantity gap and an order gap. Returned items also need care: a customer return should not go back to the front of the bin. Treat it as a new unit with its own batch check, and apply the same rule to anything you restock after inspection for damage.
If you sell on marketplaces too, remember each platform may have its own minimum remaining shelf life rules for dated goods. Check the seller policy on each platform before you ship the short-dated batch. Do not assume the marketplace will accept it.
For pharmacy and regulated categories, batch records also support compliance. Our piece on GST compliance for pharmacy chains covers where batch tracking meets tax records, and the GST portal at gst.gov.in is the source for filing requirements.
What should you measure to know FEFO is working?
Track three numbers each month: units written off for expiry, the share of write-offs that were avoidable (the batch had a better home earlier), and the average days of shelf life left when a unit ships.
That last one is the quiet proof. If customers receive items with more remaining shelf life than before, the picking rule is working, and complaints about short-dated deliveries should fall. If it does not move, check whether pickers are bypassing the batch scan, whether bins still hold mixed batches, or whether receiving is skipping expiry capture on busy days.
Commmerce, an Omnichannel Retail Operating System for Indian retailers, tracks stock by batch with its number, receipt date and expiry. The tool does not replace the discipline: someone still has to separate bins and scan at the dock. But batch-level records remove the guesswork about which unit is next.
Frequently asked questions
Is FEFO mandatory in India?
No law names FEFO. But selling food or medicine past its expiry date is prohibited, so FEFO is the practical way to avoid breaking that rule and wasting stock.
Can a small store use FEFO without software?
Yes. Mark expiry on the shelf edge, keep one batch per shelf section and put the earliest date at the front. Software helps once you have more than a few dated SKUs or more than one location.
Does FEFO slow down picking?
Only if batches are mixed. When each bin holds one batch and the pick list names it, the picker walks the same distance.