The short answer
FEFO — first-expiry-first-out — means issuing the lot that expires soonest first and refusing to issue expired lots at all. In India this is effectively a compliance requirement for shelf-life goods: FSSAI's hygiene and licensing framework expects food businesses to practise effective stock rotation and prohibits the sale of expired food; pharmaceutical law makes batch numbers and expiry dates mandatory and forbids distributing drugs past expiry; and both regimes execute recalls batch-wise, which demands lot-level traceability. Registers and Excel cannot enforce any of that — real enforcement is software that stores every lot with production and expiry dates, applies FEFO as a hard eligibility filter at issue time, buckets near-expiry stock on a dashboard, and quarantines suspect batches by status without touching the ledger.
This guide covers the regulatory expectations at orientation level — always verify the current text of the regulations for your licence category with your compliance advisor — and then goes deep on the operational machinery, because that is where compliance is actually won or lost. For the general foundations of lot tracking, start at the pillar: what is inventory management software?
FEFO vs FIFO — the difference that matters
FIFO issues the oldest-received stock first. FEFO issues the soonest-expiring stock first. They sound interchangeable and often produce the same pick — until the day they do not: a later delivery arrives carrying an earlier expiry date than stock already on the shelf (a supplier clearing older production, a different manufacturing site, a long transit). FIFO would leave that short-dated batch sitting while older-received, longer-dated stock ships — and three months later you write it off, or worse, ship it expired.
What FSSAI expects from a food stockroom
Every food business operator (FBO) in India — manufacturer, distributor, wholesaler, retailer, caterer — operates under the FSS Act's licensing and registration framework, and its hygiene requirements extend explicitly to storage and stock handling. The practical expectations that touch the stockroom:
- Effective stock rotation. The good-practices schedule attached to FSSAI licensing expects rotation of stock so older/shorter-dated goods move first — FEFO is the discipline inspectors recognise as meeting it for dated goods.
- No expired food in the chain. Selling expired food is prohibited, full stop — and FSSAI has pushed the standard upstream, notably barring e-commerce delivery of food that does not retain a defined margin of remaining shelf life at delivery.
- Date labelling and traceability. Use-by/expiry marking on labels, and the ability to trace a batch through the chain when something goes wrong — recall is executed by batch, so records must exist by batch.
- Segregation of unfit stock. Damaged, expired or recalled goods must be identifiably separated from saleable stock — the quarantine problem, which status-based hold solves cleanly.
Notice that all four are record-and-rotation problems. An FBO with lot-wise stock, FEFO issue and status-based holds satisfies them as a by-product of daily operation; an FBO with a register satisfies them only as long as nobody checks carefully.
Pharma — where expiry is absolute
Pharmaceutical distribution runs under stricter law: batch number, manufacturing date and expiry date are mandatory label particulars, and selling or distributing a drug beyond expiry is prohibited outright. Recall notifications name batches; regulators and auditors expect a distributor to answer "where did batch X go?" quickly and completely. Two operational consequences follow for any pharma or medical-devices stockroom:
First, expired stock must be physically and systemically unreachable. Not "the storekeeper knows the old carton is at the back" — the system must refuse to issue an expired lot even when a hurried operator tries. Second, batch genealogy must be queryable — inward batch to outward customer, with dates and quantities, because a recall measured in days of searching is a recall that failed. Both are exactly what lot-tracked inventory with hard FEFO provides; the broader traceability architecture is described on the traceability solution page and, for pharma specifically, the pharma inventory page.
Handling dated goods on a register today?
Bring two batches with different expiry dates to a 30-minute demo — watch FEFO pick the right one, block the expired one, and bucket the rest by expiry window.
What real FEFO enforcement looks like in software
"We support FEFO" appears on many brochures and means many things — sometimes just a sort order the picker can ignore. Enforcement worth the name has three layers, and this is precisely how lot, batch & expiry (FEFO) works in Fast Inventory Software:
Note what makes this auditable: the same movement engine that enforces FEFO writes an immutable ledger row for every receipt, issue and adjustment (see stock movements & transactions), so "show me this batch's history" is a query, not an archaeology project. That evidential quality matters beyond FSSAI — it is the same property your GST stock records rely on.
The expiry dashboard — compliance that pays for itself
Blocking expired stock is the floor. The money is earned in the weeks before expiry — and that is a visibility problem. Fast Inventory's expiry dashboard buckets available lots by expiry window — already expired, today, tomorrow, this week, this month, this quarter and beyond — turning shelf life into a worklist:
Monday morning at an FMCG distributor
The dashboard shows: 2 lots expired (blocked automatically — the compliance floor held over the weekend); 5 lots expiring this week — pushed today to the two fastest-moving retail beats at a small discount; 11 lots expiring this month — flagged to the supplier for return terms on three, moved to the front counter for the rest; 40+ lots expiring this quarter — no action, just watched. Total decision time: fifteen minutes. Under the old register system, all of these would have been discovered at the quarterly stock-take — as write-offs.
Pair the dashboard with alerting (near-expiry and reorder alerts over email/SMS) and the discipline stops depending on anyone remembering to look. That combination — hard blocking plus early visibility — is why businesses that adopt FEFO software typically report the write-off line falling first, before any sales improvement: the losses were never about demand, they were about surprise.
Hold, damage and quarantine — recall readiness
The overlooked half of expiry compliance is what happens when a batch becomes suspect — a customer complaint, a supplier advisory, a recall notice. The register-era answer is physical: carry the cartons to a corner and hope everyone knows why they are there. The systemic answer is status: mark the lot held, and it vanishes from issuable stock instantly, at every location, with a timestamped history — while quantities and valuation stay correct because nothing was deleted or moved. When the investigation clears the batch, one status change returns it to stock; if it fails, the write-off is posted as a documented adjustment that your books (and, via the Tally integration, your accountant) see transparently. For a regulator, the difference is stark: "we blocked the batch within minutes of the notice, here is the log" versus "we told the boys not to touch it".
A shelf-life compliance playbook for Indian SMEs
- Receive lot-wise, always. Batch number and expiry captured at the GRN for every dated item — no "we'll note it later". This one habit carries everything else.
- Set minimum shelf life per item. The item master's shelf-life and issue-method settings drive what FEFO does — agree customer-acceptable remaining-life margins and configure them, per item, once.
- Make the dashboard a Monday ritual. Fifteen minutes on the expiry buckets, with owner-level visibility of the write-off line.
- Drill the recall. Twice a year, pick a random batch and time how long it takes to produce its full history. Under ten minutes is the standard to hold.
- Buy software that enforces, not suggests. If the demo will issue an expired lot, the tool fails India's regulated sectors — the full checklist is in the SME buying guide, and honest budgets in the pricing guide.
Frequently asked questions
What is FEFO and how is it different from FIFO?
FIFO (first-in-first-out) issues the oldest-received stock first; FEFO (first-expiry-first-out) issues the stock that expires soonest first — and blocks expired lots entirely. The two differ whenever receipt order and expiry order disagree, which happens constantly in real supply chains: a later delivery can carry an earlier expiry date. For shelf-life goods — food, pharma, chemicals, dairy — FEFO is the correct discipline, because the risk being managed is expiry, not age.
Does FSSAI require FEFO stock rotation?
FSSAI's licensing framework requires food businesses to follow good hygiene and storage practices, including effective stock rotation, and the law prohibits the sale of expired food — FSSAI has also explicitly barred e-commerce delivery of food past defined shelf-life limits. In practice, an FBO must be able to show that expired stock cannot reach dispatch and that batches are traceable. FEFO with hard expiry blocking is the operational discipline that satisfies those expectations; verify the current text of the regulations that apply to your licence category with your compliance advisor.
Why do pharma distributors need FEFO with batch tracking?
Because pharmaceutical law treats expiry as absolute: selling or distributing a drug beyond its expiry date is prohibited, batch numbers and expiry dates are mandatory on labels, and recalls are executed batch-wise. A pharma stockroom therefore needs stock held lot-wise with expiry dates, expired lots excluded from issue automatically, near-expiry stock surfaced for return or liquidation, and the ability to answer "which customers received batch X?" quickly. FEFO plus batch genealogy is the minimum machinery for all four.
How does software actually enforce FEFO?
Real enforcement is a hard eligibility filter at issue time, not a suggestion: expired lots are excluded from the list of issuable stock entirely, eligible lots are ordered by expiry date so the nearest-expiry lot is consumed first, and quarantined or damaged lots are excluded by status. In Fast Inventory Software, each lot carries production and expiry dates and a status (available, hold, damage, closed); issue follows FEFO against that data, and an expiry dashboard buckets available lots by expiry window so near-expiry stock becomes an action list.
What is a quarantine or hold status, and why does it matter?
A hold status flags a specific lot as unavailable for issue — because it is under quality inspection, suspected damaged, or subject to a recall — without physically moving it or deleting its stock. The quantity stays visible, the ledger stays intact, but the lot cannot be picked. This matters in audits and recalls: you can prove a suspect batch was blocked from the moment of notification, with the status history to show it.
Can FEFO reduce expiry write-offs, or only prevent violations?
Both. Compliance is the floor: expired goods never ship. The commercial gain comes from the near-expiry window: an expiry dashboard that buckets lots — this week, this month, this quarter — turns shelf life into an action list, so stock is discounted, transferred to faster-moving locations, returned to suppliers or consumed first while it still has value. Businesses moving from register-based tracking typically discover their write-offs were driven less by slow sales than by nobody seeing the expiry coming.
