FIFO and FEFO answer different warehouse questions. FIFO asks which stock arrived first. FEFO asks which stock expires first. When receipt order and expiry order are the same, the two rules can produce the same pick. When they diverge, FEFO vs FIFO becomes a commercial decision about which date should drive the warehouse.

For short-life products, the useful discipline is not simply to turn on FEFO. The expiry date has to be captured correctly at goods-in, remain attached to the batch through picking and movement, and stay visible enough for the warehouse to act on stock that is becoming short-dated. A picking rule cannot repair missing or unreliable batch data.

FIFO and FEFO answer different questions

Imagine two batches of the same yoghurt. Batch A arrived on Monday and expires next Friday. Batch B arrived on Tuesday but expires this Thursday. FIFO prefers Batch A because it arrived first. FEFO prefers Batch B because it expires first.

Neither rule is inherently “better” for every product. FIFO is a receipt-order rule. FEFO is an expiry-order rule. The right choice depends on how shelf life affects the product and the promises you make to customers.

For food products, date marks do not all mean the same thing: FSA guidance distinguishes use-by dates used where expiry creates a safety risk from best-before dates used for durability and quality. Your rotation rule still has to follow the actual product and customer requirement.

FIFO

Batch A arrived Monday → Batch B arrived Tuesday → pick A first

FEFO

Batch A expires Friday → Batch B expires Thursday → pick B first

FIFO follows receipt order. FEFO follows expiry order. They only produce a different answer when those two sequences diverge.

Work the batches, not the acronym

The example below is illustrative. It shows why a warehouse can follow FIFO perfectly and still leave the shortest-life stock behind.

BatchReceivedExpiryCases on handFIFO priorityFEFO priority
A Monday Friday 24 1 2
B Tuesday Thursday 18 2 1
C Wednesday Following Wednesday 30 3 3

If today's order needs 20 cases, FIFO would begin with A. FEFO would clear all 18 cases of B first and then take two cases from A. The difference is not theoretical: one method protects receipt rotation, while the other protects expiry rotation.

FEFO is only as good as goods-in data

The warehouse cannot select the earliest expiry if the date never entered the system. For every product that requires batch and expiry control, define the capture chain before defining the pick rule.

  1. Receive the batch identity. Record the supplier batch or lot reference and the expiry information used by your operation.
  2. Keep the batch attached to stock movements. Transfers and returns should not turn dated stock back into anonymous stock.
  3. Confirm the batch at pick. The picker needs to know which batch the instruction expects and confirm what was actually taken.
  4. Preserve the batch to delivery. Where traceability is required, the delivered batch should stay tied to the customer visit rather than ending at the warehouse door.

This chain matters even if the warehouse never has two competing batches. FEFO is a rotation rule; batch identity is the evidence that the rule was followed.

Where food traceability is part of the operating requirement, the FSA/FSS traceability, withdrawal and recall guidance is the external authority to check alongside your own procedures.

Life on receipt can still make the plan impossible

A warehouse can run FEFO correctly and still receive stock with too little remaining life for the customer promise. That is why short-life control needs an inbound decision as well as a picking decision.

Set an internal acceptance rule for the product or customer segment where remaining life matters. The rule might be expressed as a minimum number of days, a percentage of original shelf life or another commercial standard agreed with suppliers and customers. The exact threshold is yours. What matters is that goods-in can identify an exception while there is still time to challenge or segregate the receipt.

Customer shelf-life promises sit above FEFO

FEFO chooses the earliest-expiring suitable batch. It does not automatically decide whether that batch has enough life for a particular customer. If one account requires more remaining life than another, the commercial promise needs to be understood separately from the warehouse rotation rule.

Start by writing the promise in operational language. For example: this customer will not accept a product below the remaining-life threshold agreed with them. Then decide where that exception is checked and who can approve a deviation. Do not hide a customer-specific shelf-life promise inside an informal picker note if it affects whether stock can be shipped.

This is one reason to review the batch position before the stock becomes urgent. If the earliest-expiring batch cannot satisfy the next customers' requirements, the issue needs a sales, purchasing or stock decision; a warehouse rule alone cannot solve it.

FEFO improves the sequence of suitable stock. It does not guarantee that every batch will sell before expiry. Demand can change, a customer can reject the remaining life, a product can become overstocked or a supplier can deliver more short-dated stock than the business can reasonably move.

That is why the warehouse needs a visibility loop around the picking rule. Review batches by remaining shelf life, identify quantities that are moving into a risk zone defined by your own policy and decide the commercial action early. That action might be to change purchasing, rebalance stock between locations, prioritise an appropriate sales channel or stop accepting similar short-life receipts. The warehouse should not invent those decisions at the pick face.

Returns and multi-site stock can break the chain

Short-life stock can come back from a customer, move between warehouses or be removed from sale. Those movements should preserve the batch identity and expiry information. Otherwise the stock re-enters the warehouse as a quantity with no reliable place in the FEFO sequence.

Keep returned or questionable stock outside the normal pick path until its condition and disposition are clear. If it returns to saleable stock, restore it with the correct batch and expiry. If it is written off or otherwise removed, record the movement so the batch-level inventory still explains what happened.

If stock can move between depots or onto van stock, make sure the batch identity survives the move. A warehouse can run perfect FEFO internally and still lose control if transferred or returned stock becomes an undated quantity at the next location.

Include one transfer in the implementation test. Move part of a batch to another warehouse or vehicle, confirm that the quantity remains tied to the same batch and expiry, then return or sell part of it. The batch-level position should still explain where the stock is. This is especially important when several locations share the same product and the business uses transfers to solve shortfalls during the week.

Use exceptions to improve the rule

Once the basic pick rule is working, inspect the cases that still create write-offs or customer complaints. Short-dated stock may be concentrated in one supplier, one product family or one branch. Returns may re-enter stock with less life than the warehouse expects. A sales team may continue taking orders that create a difficult shelf-life promise for the available batch.

Use a simple review rather than adding more rules immediately.

From receipt date to delivered batch

RouteMagic Batch Management records batch numbers and expiry from receipt to delivery. For batch-tracked products, capture points are enforced across the back office and mobile workflows. The product supports FIFO auto-selection and FEFO enforcement at picking.

For visibility, the Remaining Shelf Life Report provides a shelf-life view, while the Product Batch Inventory Report and Product Batch/Variant Inventory Report provide batch-level inventory visibility. Those reports support the operational review; they do not replace the goods-in policy that decides what life you are willing to accept.

On the inventory-management side, the useful implementation test is simple: receive two batches whose receipt order and expiry order deliberately conflict, then confirm which batch the warehouse is instructed to pick under the configured rule.

Conclusion

FIFO and FEFO are easy to define and easy to confuse in practice. FIFO protects receipt order. FEFO protects expiry order. If those two sequences diverge, a short-life distributor needs to know which one the warehouse is actually following and why. The pick rule is only the final step. Reliable FEFO starts when batch and expiry are captured at goods-in, preserved through movements and returns, confirmed during picking and retained through the delivery trail where required. It also needs an inbound shelf-life policy, because correct rotation cannot make a short-dated receipt longer. A good test is to create two batches whose receipt dates and expiry dates point in opposite directions. If your team can predict the pick, explain the rule and trace the batch afterwards, the process is working. If not, fix the capture chain before adding more warehouse complexity.