AWRA OpsHub Search

FEFO vs FIFO: Which Stock Rotation Method and When

FIFO issues the oldest stock first; FEFO issues whatever expires soonest — they sound interchangeable and are not. Which rotation method fits which stock, and where FIFO quietly fails.

Inventory Insights Washingtone Aura Updated 6 min read

FIFO (First-In, First-Out) issues stock in the order it was received: the oldest delivery leaves the shelf first. FEFO (First-Expired, First-Out) issues stock by expiry date: whatever expires soonest leaves first, regardless of when it arrived. For stock without expiry dates the two behave identically — which is exactly why teams assume FIFO is enough, right up until a newer delivery with a shorter shelf life expires at the back of the store.

Where FIFO fails and FEFO doesn't

Deliveries do not arrive with uniform remaining shelf life. A supplier clearing their own warehouse can deliver today a batch that expires before the batch you received last month. Under FIFO, last month's batch (longer-dated) issues first and today's short-dated batch waits — and expires. Under FEFO, the short-dated batch jumps the queue. The difference is invisible in the ledger and very visible in the disposal drum.

Dimension FIFO FEFO
Issue rule Oldest receipt first Earliest expiry first
Data required Receipt date per batch Expiry date per batch — captured at receiving
Right for Non-perishables: hardware, spares, stationery, textiles Anything dated: pharma, food, cosmetics, chemicals, reagents
Failure mode it prevents Old stock aging into obsolescence In-date stock expiring while newer stock sells
Cost of running it Low — natural shelf order usually suffices Batch-and-expiry capture at receiving, plus system-guided picking

What FEFO requires in practice

  • Batch and expiry captured at receiving — the non-negotiable foundation. Stock without an expiry recorded cannot be rotated by expiry; see why batch tracking is the entry ticket.
  • System-recommended picking: under time pressure, humans grab the nearest box. The dispensing or picking screen must name the batch to take.
  • Physical arrangement that agrees: short-dated stock front-and-visible. The system recommends; the shelf should not argue.
  • A shelf-life floor at receiving: refuse or renegotiate deliveries below your minimum remaining shelf life — FEFO manages what you accepted, but receiving discipline decides what you accept.

Accounting note: rotation ≠ valuation

FIFO is also an inventory valuation method in accounting — a different concept sharing the name. You can physically rotate stock by FEFO while valuing inventory by FIFO or weighted average in the books. Rotation is about which physical unit leaves; valuation is about which cost the ledger recognizes. Conflating them confuses both conversations.

Choosing per item, not per warehouse

The method is an item-level property: the same store can run FEFO on dated stock and FIFO on everything else. A pharmacy runs FEFO on the dispensary and FIFO on gloves and syringes; a supermarket runs FEFO on dairy and FIFO on detergent. What matters is that the rule is explicit per item class and enforced by the system rather than remembered by the picker — the expiry horizon report then tells you whether rotation is actually working.

How far FEFO actually goes here

What AWRA OpsHub does today

  • Batch and expiry tracking per item — batch and lot numbers, expiry date, manufacture date, supplier and the receiving purchase order.
  • FEFO depletion. When stock is issued, the system consumes the nearest-expiry batch first. That ordering is automatic, not a report someone consults.
  • Nearest-expiry-first allocation, applied to every issue. When stock is allocated the system takes the batch closest to expiry, in every allocation path. It is not a per-item switch you have to remember to turn on — for stock with no expiry date recorded, the ordering simply has nothing to act on.
  • A Batch Expiry report showing expired batches, those expiring within 30 days, and the value at risk in each.
  • Quality status and recall status on a batch, so a suspect lot can be held rather than issued.
  • Expiry alerting, on by default — shipped 2026-08-01. A daily scan emails the 30/60/90-day horizon with the value at risk, bucketed so the urgent batches lead, and fires a `Batch expiring` workflow event per batch so you can automate on it: raise a task, notify a pharmacist, start a supplier return. Batches whose stock has already been issued are excluded — an alert about stock that is not there is how an alert gets muted. Cadence and opt-out sit with the other notification settings.

More we can add to your workspace

  • Scanning at the pick. The system depletes the nearest-expiry batch in the records; whether the hand at the shelf reaches for that batch is a discipline question, and scanning is what settles it.
  • A per-item override. FEFO is how allocation works today rather than a policy you can turn off for a specific item — if you need a particular batch instead, pick it explicitly on the issue. There is a per-item FEFO setting on the item record, but nothing reads it; treat it as inert rather than as a setting.
  • Automatic quarantine of an expired batch. The expired status exists and the alert names the batch; moving it out of available stock is a person's action today.
  • An automatic write-off on expiry. An expired batch sits there until somebody adjusts it out, which is deliberate — the write-off should be a decision with a name on it.

Until 2026-08-01 this section said the expiry warning was a workflow rule you had to build yourself. It is now default behaviour. The distinction that still matters in a pharmacy or a cold room: we guarantee the record follows FEFO, not the hand. Anyone who tells you their software enforces physical rotation without scanning at the point of pick is describing a wish.

More we can add to your workspace

Anything above that you need, we can build for you

Everything listed above as something we can add describes what ships in the standard product today — it is a starting point, not a limit on what AWRA OpsHub can do for your organisation. Kenya's eTIMS integration and its maintained payroll engine are both in the product because clients needed them and commissioned them; neither appeared by itself, and the same door is open for whatever you just read about. One qualification so this is worth what it claims: a small number of things on this blog we deliberately leave to a specialist rather than build — a statutory ledger we will not sign our name to, a rule that would decide a tax question for you, a clinical or member-funds record that belongs in a regulated system — and where that is true the post says so in those words. Everything else is a scope, a timeline and a price.

The operational work, which is what most commissions actually are

An extra approval stage in a chain that does not match the standard one, a custom field set on employees or assets that only your sector needs, an expiry that has to block an order rather than send an email, a report your board asks for in a shape nothing produces, or a scanner or weighbridge feeding the goods-in door. These are the commissions we are asked for most often and the smallest ones we quote — and unlike a revenue-authority pipeline, none of them waits on a regulator.

The module-shaped additions, which are the ones readers ask for most often

A price list with real discount authority, a customer-facing quotation that expires, a bill of materials or recipe costing, a staff advance that is issued, acquitted and chased, a member or unit ledger, a matching rule that holds a payment. Each of these is a build rather than a setting, and each has been quoted before — a bigger piece of work than a custom field, with a written spec and a date instead of a roadmap slide.

The report, document or pack nothing currently produces

The board pack in the shape your board actually asks for, a donor or funder layout, an invoice or receipt template carrying what your regulator or your customer expects, a dataset the report builder cannot reach yet. Usually the fastest thing on this list to deliver, because the data is already in the system.

Systems, rails and hardware you already run

The accounting package, CRM, online store, core banking or custom database you intend to keep — connected through our API so a fact is entered once and appears everywhere it is needed. Plus the physical edge: a scanner, a scale, a weighbridge or a till peripheral feeding the door it belongs to.

How it works: you describe the requirement, we return a written scope, timeline and cost, and once agreed it is built into your environment and maintained as part of the product. Nothing here waits on a regulator or a published specification, which is why operational builds are the ones we quote fastest. Tell us the requirement that would otherwise rule us out — that is a better first conversation than a demo.

Tell us what your operation needs

Rotation is only one of the controls that decide whether your recorded stock matches the shelf. The full set, and the order to fix them in, is in stock control in Kenya.

Rotate by the date that matters

Batch-and-expiry tracking with FEFO depletion and a batch expiry report showing what is expiring and the value at risk.

See FEFO in AWRA

Frequently asked questions

Is FEFO always better than FIFO?

No — FEFO is strictly better only for stock with expiry or use-by dates, and it costs more to run (batch capture, guided picking). For non-perishables, FIFO delivers the same rotation benefit with less overhead. Match the method to the item, not the fashion.

What about LIFO — last-in, first-out?

As a physical rotation method LIFO is almost always a mistake (it guarantees old stock ages at the back). It exists mainly as an accounting valuation convention, and even there it is disallowed under IFRS. If your store physically runs LIFO, it is running "whatever is nearest" with a name.

How do we start FEFO with existing unbatched stock?

A one-time exercise: count the store, capture expiry dates onto batches as you count (items without visible dates get a conservative estimate or a flag), and start enforcing at receiving from that day. The first expiry-horizon report will be alarming and useful in equal measure.

Does FEFO apply to raw materials in production?

Absolutely — issuing the shortest-dated raw material batches to production first is the manufacturing version, and the batch consumed is recorded for traceability whichever way you issue it. Note that issuing *against a recipe* is not something this system does — there is no bill of materials — so the batch discipline is real but the quantity is the one your team decided on, not one the system expected. Dated inputs, from flour to reagents, rotate by expiry like anything else.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center