Pharmacy Inventory Management: Why FEFO Is Non-Negotiable
Learn why FEFO is the correct inventory method for pharmacies: batch tracking, expiry management, and why FIFO misses the cases that matter most.
Every pharmacist knows the rule. You put new stock at the back and pull from the front. It is so basic it feels like common sense and it is. But the moment your pharmacy starts managing hundreds of product lines across multiple suppliers, multiple batch numbers, and multiple delivery dates, "put new stock at the back" stops being a practical system.
This is where inventory management methods come in. And for a pharmacy specifically, one method matters more than the others: FEFO.
First, the Three Methods
If you have ever studied pharmacy management or worked in a dispensary, you have seen these acronyms. Here is what they actually mean in practice.
FIFO: First In, First Out
The oldest stock gets dispensed first. You sell what arrived earliest before touching newer deliveries.
FIFO is the standard method in most retail businesses. It makes sense for products with stable shelf lives. If you bought a product six months ago and another batch last week, you sell the older purchase first.
In pharmacy terms: if you received 100 units of Paracetamol 500mg in January and another 100 in March, FIFO says dispense from the January batch first.
LIFO: Last In, First Out
The newest stock gets dispensed first. You sell the most recent delivery before touching older stock.
LIFO is almost never used in pharmacy. It makes sense in certain warehouse or raw material contexts where handling older stock is impractical. In a dispensary, it would mean your oldest batches sit at the back indefinitely getting closer to expiry while you dispense newer ones. That is exactly the wrong outcome.
FEFO: First Expired, First Out
The batch with the earliest expiry date gets dispensed first, regardless of when it arrived.
This is the gold standard for pharmaceutical inventory management.
Why FEFO Is the Right Method for Pharmacy
The critical difference between pharmacy inventory and general retail inventory is shelf life risk.
A supermarket can absorb a FIFO mistake on a tin of tomatoes. The consequence is a write-off of a few hundred francs. A pharmacy dispensing an expired medicine to a patient is an entirely different category of problem, it is a patient safety issue, a regulatory liability, and a professional reputation risk.
FEFO addresses the core vulnerability: what if a newer delivery has a shorter remaining shelf life than an older one?
This happens more often than you might think. Consider:
- You order Amoxicillin 500mg from two different suppliers. Supplier A delivers in January with expiry December 2026. Supplier B delivers in March with expiry August 2026. Under FIFO, you dispense the January batch first, but the March batch (Supplier B) expires first.
- Your supplier sends a batch that was already several months into its shelf life at the point of manufacture. Arrival date tells you nothing reliable about expiry date.
- You receive a cold chain product that was delayed in transit. The delivery date is recent but the expiry is close.
In all three scenarios, FIFO would have you dispensing the wrong batch. FEFO finds the shortest runway and makes sure that batch goes out the door first.
What FEFO Looks Like in Practice
When a pharmacist or dispensary assistant processes a sale under FEFO, the system automatically allocates stock from the batch with the nearest expiry date that still has available quantity.
The staff member does not need to remember which batch to pick. The system picks it.
This matters most when:
A product has multiple open batches. If you have three batches of Metformin 500mg open simultaneously, perhaps from different supplier orders. FEFO ensures the one expiring soonest is always consumed first, automatically.
You receive a partial delivery. If a new delivery adds a batch with a shorter expiry than stock already on the shelf, FEFO immediately moves that new batch to the front of the queue.
Your dispensing volume is high. In a busy pharmacy dispensing hundreds of lines per day, no pharmacist can manually track which of twelve open batches of a product should be dispensed next. FEFO removes the cognitive load entirely.
The Batch Number Is the Unit of Tracking
Under FEFO, the batch (lot number) is the fundamental unit your inventory system works with not the product.
A product is just a name: Amoxicillin 500mg Capsule. A batch is a specific manufactured quantity with a specific expiry date, a specific supplier, and a specific cost price. Your system needs to track at batch level because:
- Expiry dates vary by batch, not by product
- Regulatory recalls are issued by batch number, not product name
- Your cost of goods may differ between batches if purchase prices changed
- Insurance invoices like the RSSB Facture des Médicaments require the batch number and expiry date on every dispensed line. It is a mandatory field on the receipt
If your system tracks only product-level stock (a single number that goes up and down), it cannot implement FEFO correctly. It has no way to know which physical units carry which expiry date.
Expiry Management Beyond Dispensing
FEFO is the dispensing side of expiry management. But a complete pharmacy inventory system also needs to handle what happens to stock that is approaching or has reached its expiry date before it reaches the patient.
Near-expiry alerts
The system should notify you when a batch is approaching expiry while still holding significant quantity. A typical threshold is 30 to 90 days before expiry, depending on the product category and your dispensing volume. The alert gives you time to:
- Prioritise dispensing of that batch (FEFO will handle this automatically)
- Contact your supplier about a return or swap if the batch was received in near-expiry condition
- Apply a promotional discount on near-expiry stock if your commercial policy allows it
Expiry disposal
When stock reaches expiry without being dispensed, it must be removed from your active inventory. This is not simply a deletion, it is a formal stock movement that must be recorded:
- The expired quantity is removed from the batch
- An expiry disposal transaction is logged
- If you are RRA-compliant in Rwanda, this triggers a stock movement report to RRA (stock out type: discarding)
- The financial impact is recorded as a write-off against your cost of goods
A pharmacy that manages this process correctly always knows its actual value of saleable stock, not a theoretical number inflated by expired units still sitting in the system.
FEFO and FIFO Are Not Mutually Exclusive
In most well-run pharmacies, FEFO and FIFO produce the same result most of the time. When batches arrive in normal sequence from a reliable supplier, the oldest batch typically also has the earliest expiry. FEFO and FIFO agree on which batch to dispense first.
The divergence happens in the edge cases described earlier cross-supplier orders, transit delays, manufacturer batch variations. These edge cases are exactly when the consequences of getting it wrong are greatest.
This is why FEFO is the safer default for pharmaceutical inventory. It handles the common case identically to FIFO, but it correctly handles the exceptions that FIFO misses.
A Practical Scenario
A pharmacy in Kigali stocks Artemether/Lumefantrine 20/120mg (a first-line antimalarial) from two suppliers. In April, Supplier A delivers 500 packs with expiry March 2027. In May, Supplier B delivers 300 packs with expiry November 2026, the batch was manufactured earlier and sat in the supplier's warehouse.
Under FIFO, the system dispenses from the April delivery first (it arrived first). The November 2026 batch sits untouched. By September 2026, you have 300 packs expiring in two months with no chance of dispensing them all. Write-off.
Under FEFO, the system immediately starts dispensing from the November 2026 batch (it expires first). The March 2027 batch waits. By the time you work through the November batch, your March 2027 stock still has months of usable shelf life remaining.
The financial difference on a single product can easily be tens of thousands of francs. Across a full formulary, FEFO versus FIFO is the difference between a well-managed pharmacy and one that writes off inventory every quarter.
What to Look for in a Pharmacy Management System
When evaluating software for your pharmacy, the FEFO question reveals a lot about how seriously the system was built for pharmaceutical use. Ask:
Does it track inventory at batch level? If the answer is no, if the system only shows you a total stock number per product. FEFO is not possible. Walk away.
Is FEFO the default method, or do you have to configure it? A system that defaults to FIFO and requires configuration to enable FEFO is a system built for general retail first and pharmacy second.
Does it record the batch number and expiry date on every dispensed item? This is required for some insurance invoices in some countries, but it is also just good pharmaceutical practice globally. If a recall is issued, you need to know which patients received which batch.
Does it alert you to near-expiry stock in time to act? An alert the day before expiry is useless. You want 30 to 90 days' notice.
Does it handle expiry disposal as a formal transaction? Removing expired stock should leave a permanent audit trail, not a silent deletion.
Summary
FEFO, First Expired, First Out is non-negotiable in pharmacy inventory management because:
- Expiry dates vary by batch, not by product. Arrival date is unreliable as a proxy.
- Dispensing an expired medicine is a patient safety issue, not just a financial one.
- FEFO handles the edge cases that FIFO misses: cross-supplier orders, delayed batches, manufacturer variation.
- Batch-level tracking is a prerequisite for FEFO and also a requirement for insurance billing, regulatory recalls, and compliance audits.
- Near-expiry management and formal expiry disposal complete the picture.
A pharmacy that manages inventory at batch level under FEFO does not discover expired stock on the shelf. It knows, weeks in advance, which batches need attention and it has already dispensed most of them.
Rexolia tracks pharmacy inventory at batch level with FEFO as the default method. Near-expiry alerts, expiry disposal, and batch-level dispensing records are built in, not optional extras. See how it works →