FEFO vs FIFO: which batch should your pharmacy sell first?
FIFO sells what arrived first. FEFO sells what expires first. A worked example with two batches of the same syrup shows why the difference matters in a medical store, and what your shelves and records need to get it right.
Most shops sell old stock before new stock, and for soap or biscuits that is good enough. Medicines are different, because what matters is the date printed on the pack, not the day the carton arrived. This post explains FEFO in pharmacy terms, shows with a simple example where FIFO goes wrong, and covers what your shelves and records need so the right batch goes out every time.
FIFO and FEFO in plain words
FIFO means first in, first out. The oldest delivery is sold first. FEFO means first expiry, first out. The batch with the nearest expiry date is sold first, whenever it arrived.
Most of the time the two give the same answer, because a new delivery usually has a later expiry than the stock already on the shelf. They split when a delivery arrives with an earlier expiry than what you already hold. That can happen when:
- the distributor sends stock from an older lot in its godown;
- you buy the same product from two distributors, and their stock was made at different times;
- during a short supply, you take a few boxes from a neighbouring medical store;
- a scheme offer is used to clear a distributor's older stock.
A worked example: two batches of the same syrup
Say you sell 6 bottles of a cough syrup every month. Two deliveries come in:
| Batch | Arrived | Bottles | Expiry |
|---|---|---|---|
| CS-114 | 1 June 2026 | 24 | 31/05/2027 |
| CS-097 | 1 August 2026 | 24 | 31/12/2026 |
The August delivery expires five months before the June one.
With FIFO
June and July: 12 bottles sold from CS-114. August and September: the other 12 bottles of CS-114, because it arrived first. October to December: 18 bottles from CS-097. On 31 December, 6 bottles of CS-097 are still on the shelf, and they expire.
With FEFO
June and July: 12 bottles from CS-114, the only batch. From August, CS-097 goes first because it expires first. August to November: all 24 bottles sold, a month before their date. December and January: the last 12 bottles of CS-114, which is good until May 2027. Nothing expires.
Same shop, same customers, same stock. The only difference is which bottle was handed over the counter. If each bottle cost you Rs. 150, FIFO put Rs. 900 in the bin on one product. A medical store carries hundreds of products, and the same thing can happen quietly on any of them.
Why FEFO is the right rule for medicines
- Expiry is what ends a medicine's value. The arrival date means nothing once the pack is out of date.
- Less expired stock on the shelf means less risk. When old batches are sold in time, fewer out-of-date packs sit waiting to be handed over by mistake. A near-expiry cut-off, covered below, goes one step further.
- Fewer returns to chase. Batches that would have expired are sold instead, so there is less to send back.
- FIFO is not wrong, just incomplete. When delivery order matches expiry order, FEFO and FIFO give the same result. When they do not, FEFO is the one that saves the stock.
What FEFO needs: batch and expiry at receipt
You cannot sell by expiry if you do not know the expiry. FEFO starts when the delivery arrives, with the batch number and expiry date of every purchase line. A few details decide whether the order comes out right:
- The same batch number with a different expiry date is a different batch. Keep it separate.
- Check the year. A batch typed as 2062 instead of 2026 goes to the back of the queue and is never flagged.
- On the day you start, three sealed boxes of one batch and forty loose tablets of an older one are two lines, not one. Lump them together and the loose tablets lose their place in the queue.
Arrange the shelf to match
Records are half the job. The other half is the hand that takes a pack off the shelf.
- Nearest expiry in front, on the rack and in the fridge. New stock goes behind the old.
- Check dates when you unpack. Whoever puts a delivery away compares its expiry with what is already on the shelf. If the new batch expires sooner, it goes in front, even though it just arrived.
- Write the expiry large on the box end. A marker note such as "11/26" lets the counter staff see the order without turning every pack.
- One product, one place. Splitting a product across two racks makes it easy to sell from the wrong batch.
Loose strips and tablets
FEFO usually breaks at the open box.
- Open one box at a time. Finish the box with the earliest expiry before you cut into the next one.
- Keep loose strips in their own box. A drawer of mixed loose strips has no order, and nobody can tell which batch a strip came from.
- Keep the printed part for last. When you cut a strip, the batch and expiry are often printed in one place only. Sell the other tablets first, so the last piece still shows its date.
- Customer returns go back to their own batch. If a customer brings back a strip, put it with the box it came from, not with the newest one.
How MediPOS applies FEFO for you
MediPOS keeps stock by batch. Every purchase line and opening stock line creates a batch, or adds to one, with its batch number, expiry, cost and MRP. At the counter, the cashier adds the medicine in any unit, box, strip or tablet, and completes the bill. MediPOS then:
- looks at the batches with stock in the Main Store and leaves out any that are blocked;
- sorts them by expiry, earliest first, with batches that have no expiry last;
- takes the quantity from the first batch, and the rest from the next one if the first runs short.
Say one batch of a tablet has 4 left and the next batch has 60. A customer buys 6. MediPOS takes 4 from the first batch and 2 from the second, and the invoice records both batches and the cost of each, so the profit on that bill is exact. With Print batch & expiry on receipts turned on, both batch numbers print on the receipt.
Stock is kept in base units, so selling 5 loose tablets from an open box reduces stock exactly. The line is priced from the MRP of the batch going out first. When a company raises the MRP, you enter the new price on the new stock, and the older batch keeps its old price and usually sells first.
Expired batches are never sold. A batch can be sold up to and including its expiry day, and is blocked from the next day. If you would rather not sell short-dated stock at all, a near-expiry cut-off in Settings → POS & receipts skips batches within a set number of days of their date, and billing moves on to the next batch.
The cashier never picks a batch on the POS screen. That is on purpose, and it is why your shelf should follow the same order. None of this works unless every batch is its own record: a system that only knows a product's total can bill fast, but it cannot choose which strip goes out. FEFO and expiry blocking are part of every MediPOS plan. See how they fit into billing on our pharmacy POS software page.
Common questions
Is FIFO ever fine in a pharmacy?
For items with no expiry, such as shopping bags or some general goods, the order hardly matters. For anything with a date on it, use FEFO.
A customer wants a fresher pack. What should the cashier do?
MediPOS always bills the earliest expiry first. If the front batch is too close to its date, raise the near-expiry blocking days or move that batch to Quarantine. Handing over a different pack from the one billed makes the records wrong.
What if staff take packs from the back?
The bill records the batch MediPOS chose, so the shelf and the records drift apart. A stock count by batch will then show one batch short and another over by the same amount. That is a shelf problem, not theft.
What happens to batches with no expiry date?
They are sold last. In MediPOS these are items set not to track expiry, such as general goods. A medicine that tracks expiry cannot be bought in without a date.
Related reading
Founder & CEO, Innobrains Technologies
Arshad Ali is the founder and CEO of Innobrains Technologies, the company that makes MediPOS: pharmacy POS and management software built for medical stores in Pakistan.
Run your pharmacy on MediPOS
Billing, batch and expiry stock, distributor schemes, udhaar and reports — on your shop PC without internet, or in the cloud. Free for 14 days, no card needed.
Related articles
Why medical stores lose money on expired medicines, and a routine that stops it
Expired stock is cash thrown in the bin. Here is why medicines expire on the shelf, a weekly and monthly routine that catches them in time, and why batch records at purchase are what make returns to the distributor possible.
25 Sep 2026 · 8 minHow to do a stock count in your medical store without closing the shop
You do not need to pull the shutter down for a day to count stock. Plan the count rack by rack, count in tablets, keep billing safely while you count, then post the differences and chase the shortages with a clear trail.
25 Sep 2026 · 8 minManaging udhaar in a pharmacy without losing money or customers
Udhaar keeps regular customers coming back, but unrecorded credit quietly eats your cash. A practical guide to limits, records, statements, polite collection and old balances.
25 Sep 2026 · 8 min