Batch and expiry tracking means recording a batch number and expiry date for every lot you receive, then always dispatching the lot that expires first (FEFO — first expired, first out). It prevents expired stock reaching customers, cuts write-offs, and makes recalls traceable to the exact customers who received a batch.
For FMCG, food, cosmetics, and pharma distributors, expired stock is a direct loss — and selling it is worse. The fix is simple in principle: know which batch is where, and always ship the one expiring soonest. In practice it needs a system, because nobody remembers expiry dates for 300 SKUs across several batches each.
FIFO vs FEFO
| FIFO (first in, first out) | FEFO (first expired, first out) | |
|---|---|---|
| Picks by | Date received | Expiry date |
| Works when | Every batch has the same shelf life | Batches arrive with different remaining shelf life |
| Risk | A later delivery with an earlier expiry gets left behind | Needs expiry data on every batch |
| Best for | Non-perishables | Food, FMCG, pharma, cosmetics |
FIFO assumes older stock expires first. That breaks when a supplier sends a newer delivery from an older production run — which happens often. FEFO looks at the expiry date itself, so it never gets fooled.
What to record for every batch
- Batch or lot number (as printed on the pack)
- Manufacturing date
- Expiry or best-before date
- Quantity received and where it's stored
- Supplier and purchase invoice reference
A FEFO workflow
- Receive: scan each item in and capture batch number and expiry at the same time.
- Store: place shorter-dated batches in front or in the pick-first location.
- Pick: the system suggests the earliest-expiring batch for each order line.
- Invoice: show batch and expiry on the invoice where your trade requires it (standard practice in pharma).
- Review: check a near-expiry report weekly.
Setting near-expiry alert windows
| Product type | Typical alert window |
|---|---|
| Dairy, bakery, fresh | 3–7 days |
| Packaged food, FMCG | 30–60 days |
| Cosmetics and personal care | 60–90 days |
| Medicines | 90 days or more — many retailers won't accept short-dated stock |
Pick a window long enough to act: return to the supplier, offer a scheme to retailers, or move the stock to a faster-selling location.
What to do with near-expiry stock
- Return it to the supplier if your terms allow near-expiry returns
- Push it to high-volume retailers with a scheme or extra margin
- Bundle it with fast movers
- Write off expired stock with a recorded reason — never let it be dispatched (see clearing dead stock)
Recalls: the reason batch records matter
If a manufacturer recalls a batch, you need to know which customers received it, within hours. With batch numbers on invoices, that's one report. Without them, it's days of going through paper.
StashBill (launching soon) captures batch and expiry at scan-to-receive and keeps them on each item's ledger — see item master & stock ledger and how it fits distributors.
Frequently asked
Is FEFO the same as FIFO?
No. FIFO ships the oldest delivery first; FEFO ships whatever expires first. They match only when every batch has the same shelf life.
Do I need batch tracking for every product?
Only for products with expiry dates or where recalls are possible. Non-perishable goods rarely need it.
How do I handle the same item with different batches on one invoice?
List each batch as its own line, with its quantity, so the record shows exactly which batches each customer received.