Batch rotation, explained

FIFO asks "what came in first." FEFO asks "what expires first." They're not always the same answer.

Most of the time the oldest-received lot is also the soonest to expire, so FIFO and FEFO agree and the distinction doesn't matter. The cases where they disagree are exactly the cases that cause real spoilage losses.

The two rules, precisely

  • FIFO (First In, First Out) — sell or ship the lot that was received earliest, based on receiving date. No expiry data needed; works for any product.
  • FEFO (First Expired, First Out) — sell or ship the lot that expires soonest, based on its individual expiry date, regardless of when it arrived. Requires per-batch expiry data to be recorded at all.

Prerequisite and limit

FEFO needs a separate expiry date for every lot. A SKU-level expiry field, a guessed shelf life or a receiving date alone cannot establish which batch expires first. When those dates are absent or unreliable, report the gap and use the available receiving/order information only within its stated limits.

FEFO answers which observable lot should be considered first; it does not prove demand, prevent spoilage or replace a merchant's quality and fulfillment controls. Connect the rotation question to the expiry-aware reorder explanation, then test the numbers in the free calculator.

Where they diverge

FIFO and FEFO give the same answer whenever lots are received in the same order they'll expire — which is the common case, since most suppliers ship in production order and shelf life is fairly consistent batch to batch.

They diverge when that assumption breaks. A concrete example: Lot A arrives on March 1 with a 12-month shelf life (expires March 1 next year). Lot B arrives on March 15 but was manufactured in a rush run with only a 6-month shelf life (expires September 15). FIFO says sell Lot A first — it arrived earlier. FEFO says sell Lot B first — it expires six months sooner. Following FIFO here would leave the shorter-dated lot sitting while the longer-dated one sells, which is exactly backwards from what avoids waste.

Why this matters more than it sounds

This isn't a rare edge case for categories with real batch variability: supplements and cosmetics frequently see shelf-life differences across manufacturing runs (a reformulation, a different production line, a delayed shipment that ate into remaining shelf life before it even reached your warehouse). See supplements and cosmetics for category-specific detail. Food and beverage sees this constantly with variable ingredient sourcing. See food and beverage.

The practical requirement FEFO imposes: expiry data has to be recorded per batch, not per SKU. A SKU-level "this product expires in 12 months" field can't support FEFO at all — it collapses every lot into the same assumed date, which defeats the purpose.

How this connects to reordering

FEFO by itself only answers "which lot to sell first" — it doesn't touch the reorder decision. That's a separate, related mechanism: see expiry-aware inventory for how Foreshelf factors expiry risk into how much to reorder, not just which lot to sell first.

See the reorder math on your own numbers

Free, no signup.