FEFO vs FIFO: Which Method Prevents More Waste?
First Expiry First Out vs First In First Out — a detailed comparison for Indian retailers. See which method actually saves money with real examples.
Two acronyms, one question: which product do you sell first?
Every retail store makes a decision, hundreds of times a day, about which unit of a product to hand to a customer. Not which product — that is the customer's choice. But which specific unit. The bag of rice from Monday's delivery or the bag from Thursday's delivery. The pack of biscuits from batch 2247 or batch 2251. The bottle of cooking oil that arrived two weeks ago or the one that arrived yesterday.
Most stores do not think of this as a decision at all. It happens by default: the unit that is easiest to reach — the one in front on the shelf — is the one that gets sold. And the unit that is easiest to reach is usually the one that was placed there most recently, because the most recent delivery is what the staff member was just handling.
This default has a name: FIFO, or First In, First Out. And there is an alternative that asks a fundamentally different question: FEFO, or First Expiry, First Out. Understanding when each one works, when each one fails, and which one your store should be using is worth more than most inventory optimisation conversations, because it touches every product on every shelf every day.
Not sure how much you're losing to expiry?
Run a free inventory waste audit — find your bleeding SKUs in 60 seconds. No sign-up required.
Run free auditFIFO: The method everyone knows
First In, First Out means that the stock which entered your store first is sold first. The logic is straightforward. If you received 50 units on January 1 and 50 more units on January 15, FIFO says sell the January 1 batch first. Accounting systems love FIFO because it creates clean, chronological inventory layers. Tax authorities understand it. Auditors find it easy to verify.
When FIFO works perfectly
FIFO is the right approach when arrival order and expiry order are essentially the same thing. This holds true for products where:
- Every unit has the same shelf life from the same manufacturer. A can of baked beans with a 3-year shelf life, produced from a continuous production line, will have essentially the same expiry date whether it was part of batch A or batch B if the batches were produced days apart.
- The product does not expire at all, or its shelf life is so long relative to your sell-through rate that expiry is never a practical concern. Hardware items, cleaning chemicals with 5-year shelf lives, cooking utensils — FIFO works fine here because nothing is going to expire regardless of the rotation order.
- You receive product from only one supplier with consistent manufacturing schedules. When there is only one source and production is regular, the first batch made is almost always the first batch to expire, which means FIFO and FEFO give identical results.
For these product categories, FIFO is not just adequate — it is simpler and perfectly sufficient.
When FIFO fails
FIFO fails whenever the arrival date and the expiry date diverge. And they diverge more often than most retailers realise.
Scenario 1: Multiple suppliers, same product. You stock a popular brand of atta (wheat flour). Your primary distributor delivers 100 packets on March 1 with an expiry of September 2025. A week later, a secondary distributor delivers 50 packets of the same brand with an expiry of July 2025 — the stock came from an older manufacturing batch that the secondary distributor was clearing. Under FIFO, you sell the March 1 delivery first because it arrived first. But the March 8 delivery expires two months sooner. While you are working through the September-expiry stock, the July-expiry stock is aging toward its date behind it on the shelf.
Scenario 2: Same supplier, different production batches. A dairy company delivers paneer to your store twice a week. Monday's delivery has a "use by" date of the following Saturday. Wednesday's delivery, from a different production run, has a "use by" date of the following Friday — one day earlier than Monday's batch. Under FIFO, you sell Monday's delivery first. But Wednesday's delivery expires first. In a product category with a 5-6 day shelf life, one day matters enormously.
Scenario 3: Supplier pushes short-dated stock. This is particularly common in India, where distributors occasionally offload near-expiry inventory to retailers, sometimes bundled with trade schemes. A delivery arrives with stock that has 3 months of shelf life instead of the usual 9 months. Under FIFO, it sits behind whatever was received previously, potentially behind stock with 8 months remaining. By the time the system gets around to selling the short-dated stock, it may already be within the return window — or past it.
In each of these cases, FIFO assigns the wrong priority. It sells the wrong unit first, and the unit it should have sold first sits on the shelf accumulating days toward its date.
FEFO: The method built for perishables
First Expiry, First Out inverts the sorting criterion. Instead of asking "when did this arrive?", it asks "when does this expire?" The batch that expires soonest gets sold first, regardless of when it arrived.
The mechanics of FEFO
FEFO requires one additional piece of data that FIFO does not: the expiry date of each batch. This has to be captured at the point of receiving, linked to the specific quantity received, and maintained in the inventory system so that when a unit is sold, the system can deduct from the correct batch.
On the shop floor, FEFO also requires a physical arrangement: products with the nearest expiry dates must be positioned where customers will pick them first, which typically means the front of the shelf. When new stock arrives with a later expiry date, it goes behind the existing stock, even if it just came off the delivery truck and the existing stock has been there for days.
This is counterintuitive for staff. The natural impulse during stocking is to place new items in the most accessible spot — the front — because it is faster. FEFO asks staff to do the opposite: check the date on the new stock, compare it to the date on the existing shelf stock, and place accordingly. It adds perhaps 10 seconds per item during stocking. Over a full store receiving operation, that might total 30-60 minutes of additional labour per day. But the waste prevented by correct rotation typically exceeds the labour cost by a significant margin.
A concrete example
Take a supermarket's cooking oil section. The store carries a popular brand of 1-litre refined sunflower oil. On the shelf right now:
- Batch A: 24 units, received February 10, expiry October 2025
- Batch B: 18 units, received February 18, expiry August 2025
- Batch C: 30 units, received February 25, expiry December 2025
Under FIFO, the system sells Batch A first (arrived first), then Batch B, then Batch C. But Batch B expires two months before Batch A. While the store is clearing Batch A through February and March, Batch B sits on the shelf moving toward its August date.
Under FEFO, the system sells Batch B first (expires first — August), then Batch A (October), then Batch C (December). Every batch gets sold in the order that minimises expiry risk.
If monthly sell-through for this SKU is 20 units, FIFO would clear Batch A by mid-March, start on Batch B, and likely clear it by mid-April — well before August, so no waste in this case. But change the numbers slightly — lower demand, or a fourth batch arriving — and the FIFO sequence starts creating real exposure. FEFO never creates that exposure because it always prioritises the batch closest to its date.
Head-to-head comparison
Waste prevention
FEFO prevents more waste than FIFO in any scenario where arrival order and expiry order differ. Retail research on perishable goods consistently indicates that switching from FIFO to FEFO reduces expiry-related waste by 25-40% in categories like dairy, bakery, and fresh produce. For ambient products with longer shelf lives, the improvement is smaller but still meaningful — typically in the range of 10-20% — because batch expiry variation is less dramatic but still exists.
Complexity
FIFO is simpler. It requires only one data point per receipt: the arrival date. FEFO requires the expiry date, which means someone has to read the date on the product, enter it into the system, and the system has to maintain batch-level records. For a store with 3,000-5,000 SKUs receiving multiple deliveries daily, this is a non-trivial data entry requirement.
This is the primary reason FEFO adoption has been slow. Not because retailers don't understand its benefits, but because the operational overhead of tracking expiry dates at the batch level — manually — is genuinely burdensome. The stores that have successfully implemented FEFO are almost universally the ones that have invested in systems that make the data capture fast (barcode scanning, OCR on invoices) and the reporting automatic.
Accounting and compliance
For accounting purposes, most Indian businesses use FIFO for inventory valuation because it is straightforward and widely accepted by auditors and tax authorities. FEFO is an operational practice — it determines which physical unit moves off the shelf first — not an accounting method. You can run FEFO on your shop floor while maintaining FIFO-based accounting in your books. The two are not in conflict.
For regulatory compliance, particularly in pharmacy and food retail, FEFO is not just preferred — it is implicitly required. Drug inspectors in India evaluate whether expired stock is present on shelves and whether dispensing records show proper rotation. Food safety inspectors under FSSAI look for the same thing. Neither regulator asks whether you followed FIFO. They ask whether the outcome — no expired products reaching customers — was achieved. FEFO achieves that outcome far more reliably than FIFO.
Staff training
FIFO requires minimal training: put new stock behind old stock. It aligns with intuition. FEFO requires checking dates and sometimes putting new stock in front of old stock if the new stock has a shorter shelf life. This is a harder habit to build, and it requires ongoing supervision until it becomes automatic.
The most effective training approach is to make FEFO the standard in one high-risk department first — typically dairy or fresh produce — let staff build the habit there, and then extend it to other categories. Trying to implement FEFO across the entire store on day one usually results in compliance for about two weeks before old habits reassert themselves.
The hybrid approach: FEFO where it matters, FIFO where it doesn't
Not every product in your store needs FEFO. A steel wool pad with no expiry date gains nothing from batch-level tracking. A bottle of phenyl with a 3-year shelf life and monthly sales of 40 units is not going to expire regardless of rotation method.
The practical approach is to apply FEFO to categories where expiry waste is a real financial risk:
- Dairy and fresh produce: Mandatory. Shelf lives measured in days. Even small rotation errors create waste.
- Bakery and prepared foods: Mandatory for the same reasons.
- Pharmaceuticals and supplements: Mandatory, both for waste prevention and regulatory compliance.
- Packaged snacks, biscuits, and namkeen: Recommended. Shelf lives of 3-9 months with batch-to-batch variation. Higher waste rates than most store owners expect.
- FMCG staples (atta, dal, oil, spices): Recommended for stores with multiple suppliers or variable demand. The shelf lives are longer, but the quantities are large and the margins are thin, so even moderate waste rates translate to meaningful losses.
- Non-perishable household items, hardware, stationery: FIFO is sufficient. Expiry is not a practical concern.
This tiered approach gives you the waste-prevention benefit of FEFO where it counts without the overhead of batch tracking on items where it doesn't.
Making FEFO work in a busy store
At the receiving dock
The moment of truth for FEFO is goods receipt. If the expiry date is not captured when the product arrives, everything downstream breaks. Train receiving staff to check and record expiry dates for every perishable and medium-shelf-life product. Reject deliveries that arrive with less than two-thirds of shelf life remaining — this keeps your store from becoming the dumping ground for your supplier's near-expiry stock.
On the shelf
Use visual cues. Some stores place small stickers with the expiry month on the shelf edge below each batch. Others use a simple colour-coded system: green for 60%+ shelf life remaining, yellow for 30-60%, red for under 30%. The visual signal helps floor staff and supervisors spot rotation errors during walkthroughs without having to pick up and read every product.
In the system
Your inventory software needs to support batch-level tracking to run FEFO properly. SKU-level tracking — knowing you have 42 units of a product — is not enough. You need to know that you have 24 units expiring in October and 18 units expiring in August. Most modern inventory systems support this, but it needs to be configured and used. A system with batch tracking capability that nobody uses is the same as not having it.
Reporting and review
Run a weekly expiry risk report that shows every batch expiring within the next 30, 60, and 90 days. Review this in your weekly operations meeting. Assign actions: this batch needs a markdown, that batch needs a supplier return, this one needs to be moved to the clearance section. The report without the meeting is data. The meeting without the report is guessing. You need both.
The technology question
FEFO can be run manually with registers and diligent staff. But the data burden grows with every SKU, every batch, every delivery. A store with 2,000 perishable and medium-shelf-life SKUs, receiving 4-5 deliveries a day, is generating hundreds of batch-level data points per week. Maintaining this manually is possible but fragile — one staff change, one busy week, and the tracking gaps appear.
Purpose-built inventory tools like ShelfLifePro are designed around batch-level tracking and FEFO logic. They capture expiry dates at receiving, automatically prioritise stock deduction by expiry date, generate alerts when batches enter risk windows, and produce the reports that drive weekly action. If your current system only tracks at the SKU level, and you are serious about implementing FEFO, you will eventually need either a system upgrade or a dedicated tool that handles the batch layer.
The phantom inventory problem
There is a second-order effect of FIFO that is less visible but arguably more damaging over time. When the POS system deducts from batch A (oldest received) but the shelf staff physically handed the customer batch C (newest, from the front of the shelf), your digital inventory and your physical inventory diverge. The system thinks batch A has zero units remaining when it actually has eight units sitting in the back of the shelf. Meanwhile, the system thinks batch C still has its full quantity when you just sold from it.
This phantom inventory problem cascades. Reorder triggers fire at the wrong time because the system thinks you have stock you do not have and does not know about stock you do. Physical stock counts reveal discrepancies that staff cannot explain, leading to suspicion of theft when the actual cause is a sorting algorithm. You order more of what you already have and run out of what you need. Over months, the drift between digital records and physical reality becomes wide enough to materially affect ordering, margins, and audit results.
FEFO with batch-level tracking closes this gap substantially. When the system deducts from the nearest-expiry batch and the shelf is arranged the same way (nearest-expiry in front), the digital deduction and the physical pick align. The system knows what it sold because it matches what was actually handed over.
The India-specific variable: transit conditions
In India, there is an additional variable that makes FIFO even less reliable than in other markets: transit conditions. A carton of paneer that sat on a non-AC tempo for six hours in Chennai in May has meaningfully less real shelf life than the printed date suggests, even compared to an identical carton that was cold-chained properly. Two deliveries, same product, same printed shelf life — different actual shelf life. FEFO cannot fix this on its own, but combined with receiving discipline (rejecting short-dated or temperature-abused stock), it ensures that the stock most at risk is sold first rather than forgotten at the back.
The GST angle: Section 17(5) and write-off documentation
When stock expires and gets written off, Section 17(5) of the CGST Act restricts Input Tax Credit on goods that are destroyed or written off. The documentation of why goods expired matters during assessment — not because the law differentiates between rotation-caused waste and genuine spoilage, but because the assessing officer does.
A store that can demonstrate FEFO-based rotation — records showing that the expired batch was the last to be sold because it was genuinely the first to expire, not because it was forgotten behind newer stock — presents a materially different story than a store where the records show newer-expiry stock being sold while older-expiry stock sat and expired. The first story is "we did everything right and this batch still expired because demand did not reach it in time." The second story is "you sold the wrong batch first and created the waste through negligence." Same tax treatment technically. Very different conversation with the officer.
Why adoption is still slow — and the real cost of the switch
If FEFO is just FIFO plus one extra data point (the expiry date), why does most of Indian retail still run FIFO? Three reasons. First, the POS systems that dominate Indian retail — Marg, Busy, Tally — default to FIFO, and changing defaults requires either vendor cooperation or switching systems. Second, recording the expiry date at goods receipt means someone has to actually look at the date on the product and type it in, which adds roughly 10 seconds per line item during receiving. In a busy store receiving 5-6 deliveries a day, that feels like friction. Third, and most importantly, store owners do not know the number. They know they have waste. They do not know how much of that waste is specifically caused by rotation sequence errors versus other causes.
The actual cost: for a store receiving 200 line items per day, the additional stocking time is roughly 30 extra minutes. The annual cost of that labour at helper wages is approximately ₹30,000-40,000. The annual value of waste prevented, across dairy, bakery, and short-shelf-life categories, for a store doing ₹25-50 lakhs monthly: ₹1-3 lakhs. The math is not close.
The verdict
FIFO is not wrong. It is incomplete. For products where expiry is not a concern, FIFO is perfectly adequate. For perishable and medium-shelf-life products — which in a typical supermarket represent 40-60% of total SKUs and an even higher percentage of waste — FEFO is demonstrably better at preventing waste, protecting margins, and maintaining regulatory compliance.
The question is not really "FEFO vs FIFO." It is: "Am I willing to track one additional data point per batch in order to sell the right product first?" The stores that answer yes consistently waste less. The data, across categories and geographies, is clear on this point.
See what batch-level tracking actually looks like
ShelfLifePro tracks expiry by batch, automates FEFO rotation, and sends markdown alerts before stock expires. 14-day free trial, no credit card required.