Pharma · 25 July 2026
FEFO Inventory Management for Medicine Distributors
How First-Expiry-First-Out differs from FIFO, how automatic batch selection works, and why earliest-expiry stock should move first.
FEFO versus FIFO
FIFO (first in, first out) ships the oldest receipt first by arrival time. FEFO (first expiry, first out) ships the lot that expires soonest — even if a newer receipt arrived yesterday with an earlier expiry. For medicines, expiry risk usually beats “which carton landed first.”
How automatic batch selection works
In a FEFO system, when you add a product to a sale the software looks for batches that are saleable (available quantity, not expired) and sorts them by expiry ascending. It proposes the top batch. Staff can override when needed; good systems record that override for audit.
Why earliest-expiry stock should move first
Pharmacies and clinics reject short-dated stock. If you keep selling long-dated lots while short-dated ones sit, you convert working capital into write-offs. FEFO is not bureaucracy — it is cash protection.
ProDistro FEFO
On pharma sales, ProDistro suggests the earliest-expiry saleable batch. Learn more on the pharma distribution software Pakistan page, or the medicine inventory software overview for distributors worldwide.
How expired batches are prevented from sale
Saleable FEFO pools exclude batches whose expiry has already passed (and typically those not marked available). That stops “we still have 40 units” from quietly including dead stock. Pair this with batch and expiry tracking at purchase time.

What a sale line actually checks
On a pharma sale in ProDistro, the suggestion is not “the carton nearest the door.” The line looks for batches that still have quantity, are marked saleable, and whose expiry is still in the future. It then offers the earliest of those expiries. If the counter needs a different batch, an authorised person can override it, and that override is stored on the sale. The point of the record is so a later argument (“why did we sell the long-dated lot?”) has an answer other than memory.
FIFO still has a place for goods that do not expire, or that expire so far out that arrival order is the useful rule. FEFO is the rule when a pharmacy will refuse short-dated stock and the short-dated lot is the one quietly losing value. A warehouse can use both ideas: FEFO on the medicine profile, ordinary stock movement on book or general wholesale items that were never given a batch.
Near-expiry is a buying and selling problem
Waiting until a batch is already expired turns a sales decision into a write-off. The useful moment is earlier: a list of saleable batches ordered by expiry, with quantity still on hand, so a collector or a salesman can push the short-dated lot to a customer who will accept that date. ProDistro’s pharma profile is built for that visibility. It does not, by itself, phone the customer or invent a discount. Someone still has to make the offer.
Purchases are where the dates enter the system. If the receipt has no batch and no expiry, FEFO has nothing honest to sort. That is why batch capture belongs on the purchase, not as a cleanup project the night before an audit. The same receipt is also what later explains a return: which lot came back, and whether it can be sold again.
A walkthrough you can demand in a demo
Ask for three batches of one product: one inside a month, one inside a quarter, and one already expired. Sell a quantity smaller than the short-dated lot. The suggestion should come from the short-dated saleable batch, and the expired batch should not be in that suggestion. Then override once, complete the invoice, and open the sale again so the override is visible. If the demo cannot do those steps with your own product names, the feature is a slide, not a workflow.
After that, record a partial customer payment against the invoice and confirm the outstanding balance moved by that amount only. Medicine wholesale is still credit wholesale. FEFO does not replace receivables. The customer receivables page is the other half of the same day.
What FEFO will not do for you
It will not choose a customer, set a discount, or file a return on its own. It will not treat a missing expiry as “far in the future.” A batch with no date cannot be sorted honestly, so the purchase line is the place to refuse a blank expiry if your shop’s rule is that every medicine receipt has one. Staff still walk the shelf. The software’s job is to stop the invoice from preferring the freshest lot while an earlier lot sits unsold.
Keep a short weekly habit: open the batches that expire inside the next 30 and 90 days, note the quantity still saleable, and decide which accounts will take them. Write the decision down in the same place you record collections. A list nobody acts on is the same as no list. Pair that review with the purchase history for the product, so you can see whether you keep buying a lot that the previous receipt has not finished selling.
How do you pick the batch that expires first?
When two saleable batches of the same medicine are on the shelf, the picker takes the one with the earlier expiry, as long as that date is still in the future. The longer-dated lot stays. An expired lot is not a candidate, even if it is closer to the door. If the customer will not accept the earlier date, an authorised person overrides the suggestion and the sale keeps that override. The next person to pick the same product should still see the earlier valid batch first. Walking past it because the carton is heavier, or because it was loaded first, is how the short-dated lot becomes a write-off while the fresh lot is already on a van.
When you train a new counter person, use one product and make them say the expiry out loud before they save the line. The suggestion is a default, not a lock, except that an expired batch should not be offered as saleable. If your process allows an override, the person who overrides should be the one whose name is already allowed to do it. That is the whole control: earliest valid batch first, exception written down, expired stock held back.
Do this once a week with the person who buys. Take the five products that moved the most units, list every saleable batch, and mark the one the next invoice should prefer. If the preferred batch is not the one on the invoice from yesterday, ask why. Sometimes the reason is a customer who will not accept that date, and the override should already say so. Sometimes the reason is that the short-dated carton is still in the vehicle. Either way you learn it on Friday, not when the batch is already unsaleable. The same review is a good moment to stop a repeat purchase of a product whose earlier batch has not cleared. If the buyer and the seller disagree on which lot should move, the sale record is the referee, not a second spreadsheet of “what we meant to do.” Write the week’s exceptions in one note: customer refused the date, batch still on the van, or override without a reason. The third one is the only item that needs a conversation. The first two are normal wholesale.
Read the product pages that match the workflow: pharma distribution software, pharma inventory management, and how distributors cut expiry losses. For a named book customer rather than a medicine example, see Taj Company Rawalpindi.
A realistic example
You hold Panadol batch A (expires in 40 days, 80 units) and batch B (expires in 8 months, 200 units). A pharmacy orders 50 units. FEFO allocates from batch A first. Without FEFO, staff might open the fresher carton because it is closer to the counter — and batch A becomes a write-off three weeks later.
Related reading: reducing medicine expiry losses.