← All guides
Inventory17 Sept 2026 · 6 min read

Stock That Expires: Why FIFO Is the Wrong Rule

If you sell medicines, food, cosmetics, chemicals or anything else with a date printed on it, the standard advice — first in, first out — is not merely imperfect. It is the wrong rule, and following it carefully will still leave you writing off stock.

Why FIFO breaks

FIFO orders by when you received something. Shelf life does not care when you received it. A carton bought last week from a fast-moving batch can expire months before a carton bought last year from a long-dated one. Ship by receipt date and the short-dated cartons sit behind the others until they are worthless.

The rule that actually matches the problem is first expiry, first out. Order by the date on the box, not the date on your purchase bill.

Which means the box needs a date in your system

This is the part people skip, and it is the whole thing. An item with a single quantity — "Paracetamol 500, 240 units" — cannot be picked by expiry, because the system has one number and no idea that it is really four lots with four different dates.

Tracking a batch means storing, per lot: the batch number as printed, the manufacturing date, the expiry date, the quantity in that lot, and which location it is in. Quantities move with stock in and out, so the lots stay true rather than becoming a list somebody maintained for two weeks in March.

Serial numbers are a different question

Worth separating, because people conflate them. Batches answer "which lot is expiring?" — the question for pharma, food and chemicals. Serial numbers answer "exactly which unit did I sell?" — the question for electronics and appliances, where the concern is warranty and returns rather than shelf life. Same shelf, different question, different data.

What a picking screen should tell you

One thing: for this item and this quantity, which lots do I pull, and in what order. With the expiry dates shown next to each, so the person on the floor can check the answer against what is physically in front of them rather than trusting it.

In BizGST Pro that is what the FEFO screen does. You choose an item and a quantity and it works out the pick across the available lots, oldest expiry first, and shows its reasoning. It is advisory — it does not move your stock. The dispatch still happens the way it happens; this tells the person doing it which cartons to reach for.

The design decision worth copying

If a pick would have to include stock that is already past its expiry date, that stock is shown, with a warning, rather than silently left out.

Hiding it would look tidier and would be worse. Expired stock exists, it is physically on the shelf, and the person picking needs to know it is there and why the numbers do not add up without it. It is offered so you can decide, not so you ship it. A system that quietly excludes inconvenient stock is a system that tells you a comfortable number and leaves you to discover the cartons yourself.

What to do first if you are not tracking any of this

Do not backfill everything. Take the ten items where expiry has actually cost you money in the last year, put their current lots in with real dates, and pick from those for a month. Ten accurate items beat four hundred items with guessed dates, which is worse than nothing because you will believe them.

What this article does not cover

What any law requires you to record about batches, labelling or shelf life, in what form, or for how long. Those are set by rules that change and the sources are the relevant regulator and your professional advisor. What is above is about not writing off stock you could have sold.

Stay GST-compliant without the hassle

BizGST Pro creates compliant invoices with the correct tax split automatically, tracks payments, and keeps your GSTR-1 ready. Free forever to start.

Create free account →