
FIFO means first in, first out: what arrived first leaves first. FEFO means first expired, first out: what expires first leaves first. They look identical and they are not, and the difference is paid for in expired goods or quality claims. Neither of them, moreover, is a matter of intention: either the geometry of the racking guarantees it, or the software guarantees it, or it is not guaranteed at all.
What each one means, without jargon
FIFO stands for first in, first out. The rule orders dispatch by date of entry into the warehouse, and it serves when what matters is that goods do not grow old forgotten at the back of the rack. FEFO stands for first expired, first out. It orders by expiry date, not by entry date. And those two dates do not always coincide: a batch that arrived yesterday may expire before one that arrived three months ago, because it left the factory earlier or because it has a shorter shelf life. That is the trap. A warehouse applying FIFO impeccably will dispatch expired products as soon as it receives batches with different shelf lives. On goods with an expiry date, FIFO is not an approximation of FEFO: it is simply the wrong rule.
Which goods call for FIFO and which call for FEFO
FEFO is mandatory when goods carry an expiry date and that date is a commitment: food, medicines, medical supplies, cosmetics, veterinary products, chemicals with a declared shelf life. It is also advisable for anything that degrades without formally expiring, such as adhesives, batteries or certain plastics, and for anything the customer audits by batch. FIFO is enough when the product does not expire but ages commercially: electronics, seasonal apparel, spare parts with successive revisions, packaging whose artwork changes. Here the enemy is not expiry but obsolescence and packaging deterioration. There is a third case worth naming: goods with no expiry, no obsolescence and no degradation, such as metal inputs or stable bulk materials. Forcing FIFO there adds movements that contribute nothing. The correct criterion may simply be accessibility, and it is better to say so than to apply a rule out of habit.
How is FIFO guaranteed in the warehouse?
There are two ways, and only one works without depending on nobody making a mistake. By geometry: the racking has a loading face on one side and an unloading face on the other, so the only possible exit respects the order of entry. That is the case of gravity flow racking, where the pallet advances along an inclined plane of rollers, and of automated systems with through access. There FIFO is not honoured because somebody respects it: it is honoured because there is no other physical option. By software: the warehouse management system (WMS, the program that decides what is stored where and what leaves first) assigns the outbound location and the operator follows the instruction. It works well, but it depends on every movement being recorded and on nobody taking from the front for convenience. In ordinary selective racking the order is always imposed by software or by shift discipline.
When the rule depends on software rather than racking
Single-entry accumulation systems, where loading and unloading happen through the same face, work in LIFO by geometry: last in, first out, meaning the last thing in is the first thing out. If your goods call for FIFO or FEFO, that geometry works against you and the rule rests entirely on software and on channel rotation. With an automated system the software stops being a recommendation and becomes the only route: the operator does not choose the location, the equipment does. The management system knows the batch and expiry date of every load unit and orders dispatch by whichever date applies. There FEFO genuinely becomes guaranteeable, because no manual access remains to bypass it. The condition is that the data enters correctly. If batch and expiry are not captured at receiving, the system will order dispatch by entry date while believing it is ordering by expiry, and nobody will find out until the customer complains.
When the rule holds on its own, without any system
There are three situations where you need neither special racking nor software to sustain the rule, and it is worth recognising them before buying anything. First: one item per location and one batch at a time. If every position is emptied completely before being replenished, the order of exit is the order of entry by construction. Second: shelf life far longer than dwell time. If goods expire in two years and nothing stays more than three weeks, expiry will never be the deciding criterion, and formal FEFO is paperwork. Third: a single supplier with steady deliveries and consecutive expiry batches. When entry date and expiry date always follow the same order, FIFO and FEFO coincide and applying the first is enough. If you are in any of those three cases, investing in batch traceability to guarantee FEFO will return nothing.
Typical errors that break the rule unnoticed
The most common is replenishing on top of the old stock. New goods are loaded at the front because that was the convenient spot, and the previous batch is buried at the back of the position. In selective racking this happens every day and leaves no trace in the system, because the total quantity remains correct. The second is the pallet built from two batches: when stock is consolidated to complete a position, the system records one load unit with a single batch and the other disappears from control. The third is the return: goods that left, were not delivered and came back; if they are re-entered without their original batch, they enter as new and end up leaving last. The fourth is measuring compliance by sampling dispatches instead of auditing by location: a dispatch can be perfect while the position behind it has been broken for months.
When automating for FEFO is worth it and when it is not
Payback is calculated using the full investment and your operation’s net savings. Separate genuine expense reductions from capacity available for growth; freeing space or time does not automatically save cash.
How to decide in your own warehouse
Start with the goods, not with the racking. If they expire, the rule is FEFO and the expiry data has to be captured at receiving, without exception. If they do not expire but age commercially, FIFO is enough. If neither applies, do not force a rule out of habit. Then look at how it is guaranteed today: by geometry, by software, or by the goodwill of the shift. If the answer is the third, you already know where the risk sits, and fixing it almost never starts with buying equipment.
Frequently asked questions
FIFO orders dispatch by date of entry into the warehouse: what arrived first leaves first. FEFO orders by expiry date: what expires first leaves first. When batches with different shelf lives arrive, the two dates stop coinciding, and applying FIFO to perishable goods ends up dispatching expired products.
Racking loaded on one side and unloaded on the other. In gravity flow racking the goods advance along an inclined plane of rollers and can only exit at the opposite end, so the order is enforced by geometry. Automated systems configured with through access work the same way: there is no physical way to skip the order.
Not reliably. FEFO orders by expiry date, and that date travels with the batch: if it is not captured at receiving and not linked to the load unit, the system has nothing to prioritise with. Without that data, the most you can sustain is FIFO, which on perishable goods is not enough.
It guarantees it if the expiry data enters correctly. Since the operator does not choose the location and every movement is made by equipment, no manual access remains to skip the order. But if the batch is not captured at receiving, the system will order by entry date while believing it is ordering by expiry.
When entry date and expiry date always follow the same order. That happens with a single supplier making steady deliveries with consecutive batches, or when shelf life is far longer than dwell time in the warehouse. In those cases FIFO is enough and setting up formal FEFO adds work without returning anything.
