Back to blog

· 6 min read

FEFO vs FIFO for veterinary pharmacies (and why the difference costs you money)

By KaliVers Team

Every inventory guide tells you the same thing: use FIFO — First In, First Out. Dispense the oldest stock first. It’s the rule taped inside pharmacy cupboards across the country, and for a veterinary pharmacy it is subtly, expensively wrong. The rule you actually want is FEFO: First Expiry, First Out. The difference between the two sounds pedantic. On the shelf, it’s the difference between dispensing a batch and binning it.

FIFO is a proxy. FEFO is the goal.

Nobody actually cares when a vial arrived at the clinic. What matters is when it stops being usable. FIFO only ever worked as a stand-in for expiry order, resting on one assumption: that stock arrives in the same order it expires — older deliveries, earlier expiries. In a vet pharmacy, that assumption breaks constantly:

  • Distributors ship short-dated stock. The carton that arrived this week can carry an earlier expiry than the one from last month — common when a distributor is clearing their own ageing inventory. FIFO tells you to dispense the older delivery first; the newer delivery quietly expires behind it.
  • Multiple batches live side by side. A reorder lands before the previous batch is finished. Two batches of the same drug, two expiry dates, one shelf — and “first in” no longer identifies the one that needs to move.
  • Transfers and returns scramble arrival order. Stock moved from a second branch, or pulled back from the surgery-room float, re-enters the dispensary with an arrival date that says nothing about its expiry.

FEFO cuts out the proxy: always dispense the batch with the nearest expiry date, regardless of when it arrived. When deliveries happen to arrive in expiry order, FEFO and FIFO agree. When they don’t — and short-dated deliveries guarantee they eventually won’t — FEFO is right and FIFO is waste.

What the difference costs

Expiry write-offs are one of the largest controllable losses in a clinic pharmacy — the inventory expiry deep-dive puts industry-estimated losses at 8–12% of pharmaceutical inventory annually and walks through the full protocol for cutting them. A meaningful slice of that waste is specifically FIFO failure: stock that was physically present, actively being sold, and still expired — because the dispensing order followed arrival dates while a nearer-dated batch sat unnoticed. That’s the most galling kind of write-off. It isn’t over-ordering or a demand miss; the demand existed. The clinic sold that drug all month. It just sold it from the wrong batch.

And each write-off is worse than its purchase price: pharmaceutical disposal has its own cost, the capital was locked up until the loss crystallised, and the pharmacy’s margin — often a large share of clinic profitability, as covered in the pharmacy margin breakdown — absorbs the hit directly.

A tale of two cartons

An illustrative example, with round numbers. In March your clinic receives 30 vials of an injectable, expiring the following January. Demand runs hot, so in June you reorder — and the distributor, clearing their own shelf, ships 30 vials expiring in September. Under FIFO, the rule on the cupboard door says: finish the March delivery first. Your team obediently dispenses through the January-dated batch across July and August while the September-dated carton waits its turn at the back. Come October, the March batch is finally finished — and 20-odd vials of the June delivery are past date. At even a few hundred rupees per vial, that single incident is a five-figure write-off, plus disposal, on a drug you were actively selling the entire time. FEFO inverts the story: the September-dated batch jumps the queue the day it arrives, sells through by August, and the January-dated stock — with months of life left — covers the rest of the year. Same purchases, same demand, zero waste. The only thing that changed was the sort key.

Why clinics don’t already run FEFO

Because FEFO has an entry requirement FIFO doesn’t: batch-level visibility. FIFO can be done blind — put new stock at the back, take from the front. FEFO demands that you know, for every SKU, which batches you hold and when each expires, and that this information is present at the moment of dispensing. A clinic that tracks inventory only at SKU level (“24 vials of amoxicillin”) literally cannot run FEFO; there’s nothing to sort by. That’s the real reason the inferior rule persists — it’s the only one a batch-blind system can execute.

Running FEFO in practice

  1. Record batch number and expiry at goods-in. Every unit, every delivery, no exceptions. This is the foundation everything else stands on — and for Indian clinics, the same batch numbers are what the Schedule H1 register requires when restricted antibiotics are dispensed.
  2. Refuse or flag short-dated deliveries. Set a minimum acceptable shelf life at receiving — if a delivery arrives with an expiry closer than your typical sell-through time, negotiate or send it back.
  3. Sort the shelf by expiry, not arrival. Nearest-expiry batch at the front, and label it. The physical arrangement should make the right choice the lazy choice.
  4. Make dispensing software enforce the order. The reliable version of FEFO is the one where the system, not memory, picks the batch. CliniCore tracks batches and expiry dates and dispenses nearest-expiry-first by default — the FEFO decision happens automatically at the point of sale, which is the only place it can’t be forgotten.

If you’re not sure whether your current setup is leaking here, a quick test: pick your five fastest-moving drugs and check whether you can name each batch on the shelf and its expiry without opening the fridge. If you can’t, your pharmacy is running on FIFO-by-default — and the 14-day trial will let you see batch-tracked, FEFO-enforced dispensing against your own stock list before you commit to anything. The rule fits on a label either way: dispense by the date the drug dies, not the date it arrived.

Worked examples in this article are illustrative scenarios based on industry-reported benchmarks and published research — not CliniCore client case studies.

See what your clinic is leaking

Most clinics lose 5–10% of revenue to unbilled work. Find your number in 60 seconds — or start plugging the leaks today.