FIFO Will Expire Your Stock. Use FEFO.

Two boxes of the same product sit on the same rack. One expires in eight months, the other in two. Ship the wrong one and it comes back as a return — at your cost, against your margin, with a credit note to raise.

Nothing about that is an inventory-counting problem. Your stock figure was right the whole time. It is a picking problem, and the fix has a name.

One sentence: FIFO ships whatever arrived first. FEFO ships whatever expires first. For anything with a shelf life, only the second one is correct.

Where FIFO quietly fails

FIFO and FEFO agree almost all the time, which is exactly why the disagreement is expensive — you stop watching for it. They come apart the moment you receive a short-dated batch:

  • • 12 January — Batch A arrives. 400 strips, expiry March 2027.
  • • 3 February — Batch B arrives. 300 strips, expiry September 2026. Your supplier was clearing short-dated stock and you took it at a discount.

FIFO now ships Batch A, because Batch A arrived first. Batch B sits behind it and dies on the shelf — and you paid for the privilege, because the discount that made it attractive is smaller than the write-off.

This is why “we do FIFO” is not an answer for a distributor. FIFO is a valuation method that happens to double as a picking rule. On expiring goods it is the wrong picking rule, however good it is at valuation.

What a batch record has to carry

A batch is not just a label on a quantity. To be useful it needs four things:

  • Batch number — unique within the item, matching what the manufacturer printed.
  • Manufacturing date — what a recall is issued against.
  • Expiry date — what FEFO sorts on.
  • The godown holding it — the same batch split across two warehouses is two different picking decisions.

The invoice needs it too

For drugs, batch number and expiry have to appear on the sale invoice — this is a licensing requirement, not a preference. Two other things quietly depend on the same data: your stockist's recall process, which starts from a batch number and works outward, and the credit note for an expiry return, which has to point back at the original supply.

If the batch is not on the invoice, all three of those become manual work at exactly the moment nobody has time for manual work.

Setting it up

1

Turn batch tracking on per item, not globally

Batches are an overhead at the counter. Switch them on for what has a shelf life or a recall obligation, and leave the packaging, the stationery and the fixed-asset spares alone.

2

Capture batch, MFG and expiry at goods receipt

This is the only cheap moment. Every later attempt to attach an expiry to stock already on the rack is a physical stock-check with a torch.

3

Let dispatch pick by expiry

With expiry dates recorded, the picking order stops being a judgement call at the counter and starts being a property of the data.

4

Review near-expiry, not stock on hand

A healthy total stock figure tells you nothing about how much of it is about to become a write-off.

sallyerp.in/inventory/items
Batch tracking is a per-item setting, alongside the item's HSN, unit and reorder level — you turn it on where it earns its keep.

Reorder levels and expiry pull in opposite directions

A reorder level says “buy more when you drop below this”. It knows nothing about what is already sitting short-dated in the warehouse. Follow it blindly on a slow-moving item and you top up to three months of cover, all of which dies in six weeks.

The check is not complicated — before a purchase order goes out on a batch-tracked item, look at what is already near expiry. It is the difference between a reorder level that protects you from stock-outs and one that manufactures write-offs.

Common questions

Do I need batches on everything?

No, and you will regret it if you try. Turn it on for items with a shelf life or a recall obligation and leave the rest alone.

Should I value at FIFO or Weighted Average?

Valuation and picking are separate decisions. You can value stock at Weighted Average and still pick by expiry — one is an accounting policy, the other is a warehouse rule.

Can the same batch sit in two godowns?

Yes. Batch stock is held per godown, so a transfer moves a specific batch rather than an anonymous quantity, and each location keeps its own expiry picture.

How do expiry returns get costed?

They come back against the original batch, so the write-off lands on what that batch actually cost you rather than on a blended average.

The number to review weekly is not “how much stock do I have”. It is “how much of it dies in the next 90 days” — early enough to discount it, return it, or push it to a faster-moving branch.

Ready to try this yourself?

Sally ERP handles all of this — and more. Free trial, no credit card.

Start free trial