A drum of raw material expires on the shelf while an identical, newer drum sits in front of it and gets used instead. A pharmacy dispatches a batch that is three weeks from expiry when a batch expiring next month was sitting one rack over. Neither mistake is carelessness — it is what happens when stock is picked by whatever is nearest, not by what expires first. FEFO and lot tracking exist to make "what expires first" the rule the system enforces, not a note somebody is supposed to remember.

This article is for anyone handling dated or batch-controlled goods — pharma, food and beverage, chemical, dairy — who needs the discipline behind lot control, not just the buzzwords. For the wider picture of stock control, start with the pillar guide, What is inventory management software?, and see the feature it maps to, Lot, Batch & Expiry (FEFO).

1. Why lots and expiry matter

For most stock, a quantity and a location are enough. For batch-controlled goods they are not, because two units of the same item are not interchangeable — one may be fresh and one may be days from expiry, one may have passed inspection and one may be on hold. The lot layer records that difference. Each lot (or batch) carries its own batch number, production date, expiry date and status, and its own quantity and rate — so the system knows not just how much you have but which stock it is.

That distinction unlocks three things a plain quantity cannot deliver:

2. FIFO vs FEFO — the crucial difference

Two rules govern the order in which stock is consumed, and they are not the same:

AspectFIFO (First-In-First-Out)FEFO (First-Expiry-First-Out)
Orders stock byReceipt date — oldest received goes firstExpiry date — nearest expiry goes first
Protects againstAge — stock sitting too longExpiry — shelf life lapsing before use
Best forNon-dated goods where age is the concernPerishable, dated and batch-controlled goods
Failure modeA newer batch with a shorter life expires unusedNone for expiry — but needs reliable expiry data
Expired stockNot inherently excludedExcluded from issue as a hard rule

The two rules agree whenever older stock always expires first — which is why FIFO feels good enough until it isn't. They diverge the moment a newer batch carries a shorter remaining shelf life than an older one: a supplier ships a short-dated lot, or a return comes back with less life than fresh stock. FIFO would issue the older batch and let the short-dated one expire; FEFO issues the short-dated one first and saves it. For dated goods, FEFO is simply the safer rule, and a real inventory system enforces it at the point of issue — excluding expired lots outright and ordering the eligible lots by expiry.

"FIFO protects you from stock getting old. FEFO protects you from stock expiring. For dated goods, only one of those is the real risk." — Fast Technology Team

3. Batch genealogy — tracing a lot end to end

Traceability is not a report you run once; it is a property the system has because every movement is recorded. When a lot arrives on a goods receipt, it is created with its supplier batch, production and expiry dates. Every subsequent movement — transfer, hold, issue, return — writes an immutable ledger row against it. The result is batch genealogy: an unbroken chain from a dispatched or consumed lot back to the exact receipt and supplier batch it came from.

This is what a recall or a customer audit actually requires. If a supplier flags a bad batch, you can find every lot that came from it, everywhere it went, and every order it touched — in minutes, not days. And because the ledger is append-only, the trail cannot be quietly edited after the fact, which is precisely what makes it credible to an auditor. For the highest-assurance industries, an optional blockchain-backed ledger mode adds tamper-evidence on top.

4. Expiry buckets — turning dates into an action list

Knowing every lot's expiry date is only useful if you can act on it before the date passes. That is the job of the expiry dashboard: it takes every available lot and sorts it into time-window buckets, so the store sees not a spreadsheet of dates but a prioritised worklist.

Already expired
  • Blocked from issue automatically under FEFO
  • Flagged for write-off or return to supplier
  • Never silently consumed by mistake
This week / month
  • The near-expiry action list — push or discount
  • Transfer to a faster-moving store or channel
  • Issued first by FEFO wherever eligible
This quarter / year
  • Comfortable life — routine handling
  • Watched as it moves toward nearer buckets
  • Feeds realistic shelf-life planning
Alerts & escalation
  • Near-expiry alerts by WhatsApp or email
  • Escalation before, not after, the date
  • Loss becomes managed, not discovered

Paired with FEFO at issue, the dashboard closes the loop: FEFO makes sure the nearest-expiry eligible lot goes out first, and the dashboard makes sure a human sees anything that FEFO alone will not clear in time. See WhatsApp & email alerts.

5. Hold and quarantine — segregating without moving

Not every lot in stock is fit to issue. A batch may be awaiting inspection, under investigation after a complaint, or physically damaged. The naive approach is to move it to a separate store — but that means an extra movement, a new location to track, and a chance the ledger and the shelf disagree. Lot status solves it more cleanly.

Each lot carries a status — available, hold/quarantine, damage or closed. Setting a lot to hold or quarantine removes it from availability so it cannot be issued or picked by FEFO, without relocating the quantity or editing the balance. The stock stays exactly where it is; it simply becomes ineligible until someone releases it back to available. It is the difference between ring-fencing stock and shuffling it — the former leaves a clean, auditable record, the latter creates work and risk.

6. A worked example (illustrative)

The numbers below are illustrative — a made-up scenario to show how FEFO orders an issue, not figures from any real deployment. Suppose a food distributor holds four lots of one item across two stores and needs to issue 500 units.

Illustrative: how FEFO picks the lots to issue 500 units

Four lots are on hand. FEFO first excludes the expired lot, then orders the rest by expiry date — nearest first — and draws down until 500 is met:

LotReceivedExpiresOn handStatus & FEFO action
L-0110 Jan05 Jul (past)120Expired — excluded, flagged for write-off
L-0402 Mar20 Aug200Nearest eligible expiry — issue all 200 first
L-0218 Jan30 Sep250Next expiry — issue 300 (needs 300 more)
L-0325 Feb15 Nov180Latest expiry — untouched this issue

Note two things a naive pick would get wrong. First, L-04 is issued before L-02 even though L-02 was received earlier — FEFO follows expiry, not receipt order, which is where it parts company with FIFO. Second, the expired L-01 is never touched, even though it is the oldest stock on the shelf. The issue is fully documented, each lot's balance drops by exactly what was drawn, and the expiry dashboard now shows L-02 as the new near-expiry lot to watch.

7. Who needs lot & FEFO control

Any operation whose stock carries a shelf life or a regulatory traceability requirement needs this discipline. In practice that means:

IndustryWhy FEFO and lot control are non-negotiable
PharmaBatch-level traceability and expiry control are regulatory essentials; a recall must trace every lot to its receipt. See pharma inventory software.
Food & beverageShort shelf lives make FEFO and near-expiry action lists the difference between selling stock and writing it off. See food & beverage inventory.
ChemicalDated and hazard-classified batches need segregation, hold status and lot valuation control. See chemical inventory software.
DairyVery short lives, plus recurring returns and claims, demand tight batch and expiry discipline. See dairy inventory software.

8. How Fast Inventory Software does it

Fast Inventory Software, built in Pune by Improsys under the Fast Technology brand and available cloud and on-premise, runs lot and expiry control as a first-class part of the stock model:

Lot, batch & expiry — a core Fast Inventory feature

Make "nearest expiry first" a rule the system enforces, not a note on a carton.

Fast Inventory tracks every batch with its production and expiry dates and a hold/quarantine status, enforces FEFO at issue, and buckets near-expiry lots on an expiry dashboard with WhatsApp and email alerts. Because it all rides one immutable ledger, a recall or an audit can trace any lot back to the receipt it came in on — with nothing reconstructed after the fact.

Expired lots excluded from issue automatically
Full batch genealogy on an append-only ledger
Built for pharma, food, chemical and dairy
Get a demo

9. Frequently asked questions

What is FEFO?
FEFO stands for First-Expiry-First-Out. When you issue batch-controlled or perishable stock, the system excludes expired lots as a hard rule and consumes the eligible lot with the nearest expiry date first — regardless of when it was received. It is the issue discipline that keeps shelf-life stock moving in the right order so the least remaining life is used first and expiry write-offs are minimised.
What is the difference between FIFO and FEFO?
FIFO — First-In-First-Out — issues the oldest received stock first, ordering by receipt date. FEFO — First-Expiry-First-Out — issues the nearest-expiry stock first, ordering by expiry date. They agree when older stock always expires first, but they diverge whenever a newer batch has a shorter remaining shelf life than an older one. For perishable and dated goods, FEFO is the safer rule because it protects against expiry, not just against age.
What is batch genealogy?
Batch genealogy is the traceable chain that links a lot to where it came from and where it went — from the goods receipt and supplier batch it arrived on, through any transfers and holds, to the issues that consumed or dispatched it. Because every movement writes an immutable ledger row and each lot carries its batch, production and expiry dates, you can trace a finished or dispatched lot back to its origin, which is exactly what a recall or a customer audit demands.
How does an expiry dashboard work?
An expiry dashboard buckets available lots by expiry window — for example previous (already expired), today, this week, this month, this quarter, six months and this year. Instead of discovering near-expiry stock at the next stock-take, the store sees a dated action list: what to push, discount, transfer or quarantine, and by when. It turns expiry from a surprise loss into a managed one.
How does hold or quarantine status work without moving stock?
Each lot carries a status — available, hold/quarantine, damage or closed. Marking a lot as hold or quarantine removes it from availability so it cannot be issued, without physically relocating the quantity or editing the balance. This is how failed-inspection, under-investigation or damaged stock is ring-fenced cleanly: the quantity stays where it is, the ledger stays intact, and the lot simply becomes ineligible for issue until it is released.

See FEFO and lot control on your own batches

A 30-minute demo — your items, your batches and expiry rules, FEFO issue and the expiry dashboard live on screen. No generic slideshow.