Looks like you're in India. Switch to Asli Pharma ERP India →
Guide · UAE

FEFO vs FIFO in a pharmaceutical warehouse

FIFO (first in, first out) ships the stock you received first. FEFO (first expired, first out) ships the batch that expires first, whenever it arrived. Pharmaceutical distributors should use FEFO: WHO good storage and distribution practice says the FEFO principle should be followed, and EU GDP requires documented exceptions. FIFO only works when receipt order matches expiry order.

Use FEFO (first expired, first out) for medicines. FEFO ships the batch with the earliest expiry date first, regardless of when it arrived. FIFO (first in, first out) ships the oldest receipt first. The two give the same result only when every new delivery expires later than the stock already on the shelf, and in pharmaceutical distribution that is often not the case.

What do the guidelines say?

The World Health Organization's Good storage and distribution practices for medical products (WHO Technical Report Series 1025, Annex 7, 2020) states: "Stock should be appropriately rotated. The 'first expired/first out' (FEFO) principle should be followed."

The EU Good Distribution Practice guidelines (2013/C 343/01), section 5.5, say stock should be rotated according to FEFO and that "exceptions should be documented". Section 6.3 adds that returned products put back into saleable stock should be placed so FEFO operates effectively.

These documents are widely used as reference points for good distribution practice. For your own licence, check current guidance from the Emirates Drug Establishment and your emirate's health authority.

Why does FIFO fail for medicines?

Receipt order and expiry order drift apart all the time in pharma supply chains:

  • A supplier sends a short-dated batch after a long-dated one, for example from a different production run or another warehouse.
  • Customer returns come back with older expiry dates than current stock.
  • Stock transferred from another branch arrives "new" to this warehouse but was made months ago.
  • Emergency or parallel purchases bring in batches with a different expiry profile.

Under FIFO, the short-dated batch sits behind the longer-dated one until it is too close to expiry to sell. That becomes a write-off, an expiry claim against the supplier, or a rejected delivery at the customer.

FEFO vs FIFO at a glance

QuestionFIFOFEFO
Picking ruleOldest receipt date firstEarliest expiry date first
Data needed per batchReceipt dateBatch number and expiry date
Handles short-dated late deliveriesNoYes
Handles returns and transfersPoorlyYes, once they are back in saleable stock
Expiry write-off riskHigher when receipt and expiry order differLower
Fit with WHO and EU GDP guidanceNot the stated principleStated principle
Typical useGoods without expiry datesMedicines, medical devices with expiry, food supplements

When should you override FEFO?

FEFO is the default, not an absolute rule. Legitimate reasons to pick a later-expiring batch include:

  • Customer shelf-life rules. Hospitals and tenders often require a minimum remaining shelf life, such as a percentage of total shelf life or a number of months. If the earliest batch does not meet that rule, pick the next batch that does.
  • Stock not released. Batches in quarantine, awaiting quality release, on hold or under recall must be skipped, whatever their expiry.
  • Batch-specific orders. Some contracts name a batch, for example to match a previous supply.
  • Physical constraints. A full pallet may be picked instead of splitting one, if the customer accepts the dating.

Follow the EU GDP principle: document each exception. Record the order, the batch FEFO suggested, the batch actually picked, the reason and the person who approved it. Review overrides monthly; frequent overrides for the same customer or product usually point to a purchasing or shelf-life problem.

How do you set up FEFO in a warehouse?

  1. Capture batch and expiry at receipt. Record batch, manufacturing date and expiry for every line on the goods receipt. Scanning the GS1 DataMatrix, which encodes batch (AI 10) and expiry (AI 17) under the UAE barcoding guide, avoids typing errors.
  2. Keep batches separate. Do not mix batches in one bin unless your system tracks each batch per location.
  3. Put away by status. Keep only released stock in pick locations. Quarantine, rejected, damaged, returned and recalled stock go to separate, labelled areas.
  4. Let the system choose the batch. When a sales order or pick list is created, allocate the earliest-expiring released batch that meets the customer's shelf-life rule.
  5. Confirm by scan. The picker scans the batch; if it does not match the allocation, the system asks for a reason or blocks the pick.
  6. Handle returns properly. Inspect returns, then either reject them or release them back into stock in the correct expiry sequence.
  7. Watch near-expiry stock. Run a report of stock by expiry band (for example 0–3, 3–6 and 6–12 months) each month and act on the shortest band first.

What about cold-chain products?

FEFO applies to 2–8°C products the same way, but the cold room adds constraints. Space is tight, so batches are often stacked and harder to reach. Clear location labels and system-directed picking matter even more, because every minute spent searching with the door open affects temperature. Keep temperature records alongside the stock, and hold any batch with an unresolved temperature excursion until it is assessed.

How do you measure whether FEFO is working?

  • Expiry write-offs as a percentage of cost of goods sold, tracked monthly.
  • FEFO compliance rate: picks that used the suggested batch, divided by total picks.
  • Override count by reason, to separate customer rules from picker error.
  • Customer rejections for short dating.
  • Value of stock within six months of expiry, by supplier, to support returns and expiry claims.

How Asli Pharma ERP helps

Asli Pharma ERP records batch, manufacturing date and expiry at goods receipt, including by GS1 DataMatrix scan, and allocates released stock by FEFO on sales documents. Overrides are allowed but logged with a reason. Stock status buckets keep quarantined, rejected, damaged, returned and recalled stock out of allocation, and cold-chain zones with temperature logs cover 2–8°C products.

Frequently asked questions

What is the difference between FEFO and FIFO?

FIFO picks stock in the order it was received. FEFO picks stock in the order it expires. They give the same result only when every later delivery has a later expiry date, which is often not true for medicines.

Is FEFO mandatory for UAE pharma distributors?

WHO good storage and distribution practices, widely used as the international reference, state that the FEFO principle should be followed. Check your licence conditions and current Emirates Drug Establishment or emirate-level guidance for the exact wording that applies to your establishment.

When is it acceptable to override FEFO?

Common reasons are a customer's minimum remaining shelf-life requirement, a batch on hold, or a tender that specifies a batch. EU GDP guidance says exceptions should be documented, so record the reason and who approved it.

Does FEFO apply to returned stock?

Yes. EU GDP guidance says returned products placed back in saleable stock should be positioned so that FEFO works effectively. Returns should go through inspection first, then back into the normal expiry sequence.

Can FEFO be run manually?

It can in a small store, but it depends on staff reading expiry dates on every pick. With many batches and locations, system-directed picking by expiry is more reliable and leaves an audit record.

Sources

  1. WHO TRS 1025, Annex 7: Good storage and distribution practices for medical products (2020)
  2. EU Guidelines on Good Distribution Practice of medicinal products for human use (2013/C 343/01)
  3. ECA Academy: FIFO, FEFO, LIFO - what is the meaning?
  4. MOHAP GS1 barcoding reference guide (Tatmeen)
  5. Emirates Drug Establishment
Asli Pharma ERP · UAE

See batch, expiry and recall control on your own data.

Book a live demo →