guide

What Is FEFO Dispensing? A Guide for Hospital Pharmacies

First-Expiry-First-Out dispensing in plain language — why it matters, how it differs from FIFO, and how to implement it without driving your pharmacy team mad.

By CareHubOS team

If your pharmacy still works on a "grab whatever's closest to the front of the shelf" basis, you are quietly burning money — and occasionally putting patients at risk. FEFO is the fix. This guide explains what it is, why it matters, and how to get it working in a real hospital pharmacy without making your team's life miserable.

What FEFO actually means

FEFO stands for First-Expiry-First-Out. When you have multiple lots (batches) of the same medication on the shelf, FEFO says: dispense the one that expires soonest.

The contrast you usually hear is with FIFO — First-In-First-Out — where you dispense whichever lot arrived first. FIFO works fine for canned beans and printer paper. It's the wrong default for medication.

Here's why: the order in which a lot arrives doesn't necessarily match the order in which it expires. A wholesaler can send you a brand-new shipment with shelf life that's already half-gone. If your team grabbed that "newer" arrival first because their last truck came in yesterday, they'd be working their way through soon-to-expire stock without realising — and the older arrival (with the longer remaining shelf life) sits there ageing on the shelf.

FEFO ignores arrival order entirely. It looks at the expiry date of every lot of a given drug and picks the soonest. That's it.

Why this matters for hospital pharmacies

Three concrete reasons, in increasing order of severity:

  1. Wastage. Expired stock is dead stock. Even a small chain pharmacy carrying a few thousand SKUs can write off five or six figures a year on expiry alone. FEFO doesn't eliminate the wastage of slow-moving drugs — that's a separate stocking problem — but it eliminates the avoidable wastage of fast-moving drugs that simply got picked in the wrong order.

  2. Insurance and regulator scrutiny. Many insurance scheme audits and pharmacy-board inspections check for evidence of expiry control. "We dispense by expiry date" is a verifiable claim if your system enforces it, and an awkward conversation if you can't show how.

  3. Patient safety. Expired medication shouldn't reach a patient. Most won't cause acute harm — efficacy drops gradually for most drugs — but a few classes (some antibiotics, insulin, biologics) deteriorate badly and can cause real injury. FEFO is the cheapest possible insurance against an avoidable safety event.

What FEFO requires

Operationally, FEFO is simple to describe and brutal to do manually:

  • Every lot of every drug needs an expiry date recorded.
  • When dispensing, the pharmacist needs to know which lot has the soonest expiry.
  • The system (or the pharmacist) needs to pull from that lot, not whichever one happens to be closer to the counter.

In a small single-pharmacy practice, a pharmacist who knows the shelf can probably get this right by memory. In a multi-site hospital chain dispensing 500+ prescriptions a day, memory isn't going to cut it. You need the system to do it.

How CareHubOS handles FEFO

When a pharmacist starts a dispense in CareHubOS, the system:

  1. Pulls every lot of the prescribed medication that currently has stock at the dispensing branch.
  2. Filters out lots that are already expired (won't show up in the picker).
  3. Sorts by expiry date ascending and picks the soonest.
  4. Surfaces that lot as the suggested lot in the dispense modal, with the expiry date visible.

The pharmacist can override the suggestion (sometimes there are genuine reasons — a customer wants a brand they recognise, a different lot is in a more appropriate pack size) but the default is FEFO, and overrides are audit-logged.

This is one of those features that costs almost nothing to implement once the data model is right — every lot is already tracked, every stock movement is already linked to a lot — and saves enormous operational pain over time.

Common pitfalls

A few things that catch teams out when they switch to FEFO:

  • Lots without expiry dates. If your historical data doesn't carry expiry information for every lot, you have to backfill before FEFO works correctly. We've helped facilities do this against the manufacturer's records — slow but worth doing once.
  • Receiving without locking expiry. If receiving clerks can save a goods-receipt without entering the lot's expiry date, you'll get gaps. Make the field required at receipt time.
  • Partial dispenses against multiple lots. A 30-tablet prescription where the oldest lot only has 12 left should split across two lots — the FEFO logic needs to handle this, not throw up its hands.
  • Returns and exchanges. When a patient returns medication, the system needs to not re-introduce it into FEFO rotation if the expiry has already passed since dispense. Use a quarantine status.

When NOT to use FEFO

There are a handful of edge cases:

  • Controlled substances sometimes have additional first-in / first-out rules layered on top of FEFO for chain-of-custody reasons.
  • Compounded preparations with batch-specific stability data may need to be dispensed from a specific lot regardless of expiry order.
  • Recalls — a recalled lot gets pulled from the system entirely, not just deprioritised.

FEFO is the right default, not the only rule.

Bottom line

FEFO is one of the lowest-effort, highest-impact changes a hospital pharmacy can make. It assumes you have lot-level inventory tracking. If you don't, that's the prerequisite — and once it's in place, FEFO follows almost for free.

If your current pharmacy software treats inventory as a single bucket per SKU ("we have 230 units of amoxicillin"), it can't do FEFO. That's the conversation to have with your software vendor before anything else.

Want to see this in your branches?

A 30-minute walkthrough tailored to your group's size and module mix.

Book a demo