FEFO, first expired, first out, is the rule that the batch with the earliest expiry date leaves first, whatever order it arrived in. It differs from FIFO only when a later delivery expires sooner than stock you already hold. In food, medicine and cosmetics, deliveries arrive with different dates left, and FIFO can leave the shorter-dated batch to expire.
This guide shows that gap in a Kampala pharmacy's numbers, in Uganda shillings. It sets out the rule for each kind of dated goods and how to run FEFO every day, in ArmPOS too.
What is FEFO (first expired, first out)?
FEFO is a rule for picking stock: of the batches of one product, the one with the earliest expiry date goes out first. WHO's good storage and distribution practices give the formal definition. Stock "with the earliest expiry date" goes out before "an identical stock item with a later expiry date".
The rule compares batches of the same product, never milk with bread. A batch is one delivery, or one production run, with its own expiry date.
Two yoghurt batches show it. One expires in 10 days and the other in 20, so the 10-day batch goes first, even if it arrived after the 20-day batch.
FEFO vs FIFO: what is the difference?
FIFO sends out the stock that arrived first, and FEFO the stock that expires first. When every delivery arrives with the same shelf life left, both rules pick the same batch.
They split when a later delivery expires sooner. That happens when a distributor clears older stock, or when an import waits weeks at Mombasa or Dar es Salaam before it reaches you.
| FEFO | FIFO | |
|---|---|---|
| Decides by | The expiry date on each batch | The date each delivery arrived |
| Suits | Food, medicine, cosmetics, reagents: anything with a date | Goods without a date, such as hardware, phones and clothes |
| Needs | A batch number and expiry date for each delivery | New stock placed behind old |
| Stops | A short-dated batch expiring behind a longer-dated one | Old stock ageing at the back of the shelf |
| In the accounts | Nothing: it is a shelf rule only | Also a costing method, separate from the shelf |
A pharmacy uses FEFO so the medicines expiring soonest are sold first. A hardware shop uses FIFO to sell cables in the order they arrived, because cables don't expire.
For example: two batches of syrup in a Kampala pharmacy
For example, a pharmacy in Kampala sells 20 bottles a week of a paracetamol syrup. Each bottle costs UGX 4,000 and sells for UGX 6,000. The figures are an illustration, not a real pharmacy's.
In week 0, batch A arrives: 200 bottles that expire in week 26. In week 2, batch B arrives from another distributor: 150 bottles that expire in week 14.
| Rule | Order of sale | Bottles sold | Bottles expired | Revenue | Gross profit |
|---|---|---|---|---|---|
| FIFO | All of batch A by week 10, then batch B until it expires in week 14 | 280 | 70 | 1,680,000 | 280,000 |
| FEFO | 40 of batch A, then all of batch B by week 9.5, then the other 160 of batch A by week 17.5 | 350 | 0 | 2,100,000 | 700,000 |
Both rules bought the same 350 bottles for UGX 1,400,000. FIFO wrote off 70 bottles, UGX 280,000 at cost, and earned UGX 420,000 less gross profit.
FIFO also ran out of syrup in week 14 instead of week 17.5. Had batch B arrived with more weeks left than batch A, both rules would have sold the same bottles in the same order.
Why FEFO matters for food, medicine and cosmetics
Wherever a date decides whether a product is safe or works, FEFO is the rule. Each trade below has its own rule or figure for it.
| Goods | What an expired batch means | The rule or the figure |
|---|---|---|
| Medicines and vaccines | It may no longer work as stated, and should not be supplied | WHO: stock should be rotated, and FEFO "should be followed" |
| Food and drinks | It is unsafe after its use-by date, or loses quality after best before | UNEP: 1.05 billion tonnes of food wasted in 2022, 131 million tonnes of it in retail |
| Cosmetics | It can irritate the skin, and customers complain | EU: a date on anything that keeps for 30 months or less |
| Reagents and chemicals | Some lose strength and give wrong results | The maker's expiry or retest date on each lot |
Pharmacies
For a pharmacy, FEFO is a written rule, not a tip. WHO's guidance on storing medical products says stock should be "appropriately rotated", and that FEFO "should be followed".
Start with the lines that carry the shortest dates and the highest cost. They lose the most when a batch expires.
Food shops and supermarkets
The world wasted 1.05 billion tonnes of food in 2022, 19% of the food available to consumers, according to UNEP's Food Waste Index Report. Retail alone accounted for 131 million tonnes.
Dairy, bread, meat and ready meals carry the shortest dates. Rotate them daily, and face only the earliest batch on the shelf.
Beauty and personal care
Many cosmetics carry no expiry date at all. Under the EU cosmetics regulation, a product that keeps for more than 30 months needs no date.
It shows instead how long it stays safe after opening, usually an open jar with a number of months, such as 12M. Rotate dated creams and serums by FEFO, and the undated ones by arrival.
How to run FEFO every day
FEFO works when the date is visible at every step, from the van to the till. Seven habits keep it running.
- Record each delivery's batch number and expiry date when it arrives. Refuse a delivery that is too close to its date: shelf life management shows how to work out the limit.
- Write the expiry date on every carton in large figures with a marker, where the printed date is small or hidden.
- Store the earliest date where it is easiest to reach. New stock goes behind, unless it expires sooner.
- Open one batch at a time. Finish the earliest carton before you open the next.
- Check the dates at every count, and list what expires in the coming weeks.
- Move expired goods to a marked spot away from stock you sell, the same day.
- Use the same rule in every place you keep stock: the store room, the shop floor and each branch.
Batch numbers do more than rotation: they let you find every unit of a recalled lot. Serial and lot numbers covers tracking by lot.
Common FEFO mistakes, and how to fix them
Most FEFO failures start at receiving or on the shelf, not in the rule. The five below cause most of them.
| Mistake | What happens | The fix |
|---|---|---|
| No date recorded at receiving | Staff fall back on arrival order or pick at random | No delivery goes on the shelf until its date is recorded |
| Two batches mixed on one shelf | The longer-dated batch sells first by chance | One batch per shelf position, earliest in front |
| Customers reach to the back | Later dates leave and earlier ones stay | Face only the earliest batch; keep the next in the store room |
| Picking by habit | A short-dated late delivery waits behind older stock | Show staff the syrup example, and check rotation at each count |
| Expired stock left among good stock | It is sold by mistake | A marked spot for expired goods, emptied every week |
How to run FEFO in ArmPOS
ArmPOS, an inventory management and point of sale system, runs FEFO through batches. The till lists the earliest expiry first, while the check on expired stock stays with you.
- Track the product by batch. On its Edit page, under Pharmacy Settings, switch on Track batches & expiry. Stock you already hold gets its batches through Assign Batches, or the till can't sell it (Batches and expiry dates).
- Receive each batch with its date. On a purchase, a batch-tracked line opens a Batches table for the Batch No and Expiry Date. The batches are made when the purchase is received (Record a purchase).
- Pick at the till. In the cart, Choose batch shows each batch's expiry date and quantity, with "the one expiring first at the top". Pay Now waits until every batch line is chosen.
- Adjust by batch. An adjustment takes from the batch you pick, or from the one expiring first (Count and adjust stock).
- Watch what expires. Reports › Expiry Report counts the batches expired, near expiry and valid, with their value. The Batch Register lists every batch with its purchase and supplier (Stock reports).
One limit matters. In the guide's words, "ArmPOS doesn't stop you selling a batch past its expiry date, and doesn't mark it expired by itself".
Check the Expiry Report often. Set each expired batch to Quarantined, or use Write Off for what is left of it. ArmPOS posts nothing in Accounting, so book the value as an inventory write-off.
Frequently asked questions
What does FEFO stand for?
First expired, first out. Of a product's batches, the one with the earliest expiry date is sold or used first.
What is the difference between FIFO and FEFO?
FIFO sends out the oldest delivery first, and FEFO the earliest expiry date. They differ only when a later delivery expires sooner than stock you already hold.
When should you use FIFO instead of FEFO?
For goods without an expiry date, such as hardware, phones or clothes. FIFO keeps them from ageing at the back, and needs no dates.
Is FEFO a costing method?
No. FEFO decides which batch leaves the shelf, while FIFO or weighted average decides the cost your books charge. FIFO vs LIFO covers the costing side.
Does ArmPOS apply FEFO by itself?
It lists the batch expiring first at the top at the till, and the cashier picks it. It doesn't block the sale of an expired batch, so check the Expiry Report and quarantine what has expired.
Find one product whose last two deliveries carry different dates, and check which batch sits at the front. To see every batch's expiry date at the till, create a free ArmPOS account.