Guide · Expiry control

FEFO vs FIFO: which stock to issue first

FEFO (first expired, first out) means you issue the batch with the earliest expiry date first, even if it arrived later. FIFO (first in, first out) means you issue the oldest delivery first. The two give the same pick until a later delivery has an earlier expiry date, and then FIFO lets stock expire on the shelf. For anything with a shelf life, follow FEFO.

The difference in one table

FIFOFEFO
Issue firstthe delivery received firstthe batch that expires first
Date it readsreceipt date (GRN date)expiry or best-before date
Use it forgoods without an expiry date: packaging, spare parts, hardwarefood, drinks, medicines, cosmetics, chemicals, adhesives, anything with a shelf life
What it preventsold stock ageing at the back of the storestock expiring on the shelf while newer stock is issued
What it needsa receipt date on each pallet or binbatch number and expiry date recorded at receiving and on every label

Worked example: FIFO loses 50 units, FEFO loses none

A store has two batches of the same item, 100 units each. The second delivery came from a supplier who sent older stock, so it expires first.

BatchReceivedExpiryQty
A1 March30 June100
B5 March15 May100

From 6 March the store issues an even 15 units a week (about 2.1 a day), and no new stock arrives.

FIFO: A first, then BFEFO: B first, then A
First batch used upA, about 22 AprilB, about 22 April (before its 15 May expiry)
Second batchB from 22 April; only about 50 units are used by 15 MayA from 22 April; all 100 used by about 8 June (before 30 June)
Expired and written offabout 50 units of Bnone

The same 200 units, the same demand, the same dates. The only difference is which batch the picker took first. The working: 100 units at 15 a week last 100 ÷ 15 × 7 ≈ 47 days, so the first batch runs out on about 22 April; from 22 April to 15 May is 23 days, enough for about 49 units, so about 50 are left to expire.

How to run FEFO in a warehouse

  1. Record batch and expiry at receiving. Write both on the goods received note for every line, as dates, not as text. A batch without an expiry date cannot be issued by FEFO. See the goods received note guide.
  2. Label every pallet and bin. Put the expiry date in large print on the side the picker sees. Do not mix two batches in one location unless your records hold both.
  3. Slot so the earliest expiry is easiest to reach. When a new pallet arrives with a later expiry, it goes behind or above the existing one, never in front.
  4. Tell the picker which batch to take. Sort the pick list by expiry date, so the choice is not left to whichever pallet is nearest.
  5. Review near-expiry stock every week. List every batch expiring in the next 30, 60 and 90 days and act early: sell or use it first, move it to a faster site, or return it to the supplier if your agreement allows.
  6. Block expired stock. Move it to a quarantine or damaged location so it cannot be picked, and record the write-off.
  7. Check the customer’s shelf-life rule. Many customers only accept goods with a minimum remaining shelf life. Stock below that limit cannot be sent to them even before it expires.

FEFO in an Excel stock sheet

Keep one row per batch with its item code, batch number, expiry date and quantity on hand. With the expiry date in column D, add two columns:

ColumnFormula (row 2)
Days left=IF(ISNUMBER(D2),D2-TODAY(),"No date")
Status=IF(NOT(ISNUMBER(D2)),"CHECK DATE",IF(D2<TODAY(),"EXPIRED",IF(D2-TODAY()<=30,"NEAR EXPIRY","OK")))

Sort the sheet by item code, then by expiry date, oldest first. The first row of each item is the batch to issue. “CHECK DATE” catches expiry dates typed as text, the most common reason FEFO fails in a spreadsheet.

Common mistakes

  • Using the receipt date as if it were the expiry date. A later delivery can expire first, as in the example above.
  • Putting the new pallet in front. The older batch behind it is forgotten until it expires.
  • Expiry dates typed as text. Excel cannot sort or compare a date typed as text; check that the column holds real dates.
  • Different date formats. 05/03 is 5 March in most of the world and 3 May in the US. Use one format on labels and in your records, such as 05-Mar-2026.
  • Counting expired stock as available. It stays in the balance until it is moved and written off, so reorder figures look better than they are.
Related tools. The inventory aging report finds slow and old stock from a pasted list, the GRN form records batch and expiry at receiving, and the stock count sheet checks what is really on the shelf.

Written and checked by a warehouse supervisor with about 15 years of hands-on experience. Last updated: November 2026. See the methodology.

Scroll to Top