Walk any food distribution centre, pharmaceutical wholesaler or cosmetics warehouse and you will find the same quiet tension near the shipping dock: pallets that are perfectly saleable today but will be worthless in six weeks, sitting behind newer stock that happens to be easier to reach. Every unit that ages out is cash that was spent and never recovered, and in regulated categories it is also a batch that must not, under any circumstances, ship to a customer. Expiry date management is the discipline that keeps that from happening, and it belongs firmly inside the broader warehouse automation story. If you have not read it yet, start with the complete guide to warehouse automation, because expiry control is one of the clearest examples of automation paying for itself: the system, not the picker, decides what leaves first.
The message up front: expiry management is not primarily a warehouse-floor problem, it is a data and rules problem. If the expiry date is captured accurately at receiving, the shelf-life rules are configured correctly, and the WMS enforces first-expiry-first-out at the pick face, waste and compliance exposure fall dramatically. Where organisations lose money is not the picking, it is the missing or wrong date, the disabled rule, and the alert nobody acted on.
1. Why expiry management matters
Expiry management earns its place for two reasons that pull in the same direction: financial loss and regulatory risk. The financial loss is straightforward. A unit that passes its expiry date in the warehouse cannot be sold at full price and in most regulated categories cannot be sold at all. It becomes a write-off, and a write-off is not a discount, it is the entire cost of that unit gone, plus the cost of disposing of it, plus the working capital that was tied up in it for its whole shelf life. In a perishable category running on thin margins, a few percentage points of expiry write-off can be the difference between a profitable quarter and a loss.
The regulatory risk is sharper still. In pharmaceuticals, shipping an expired product is not a customer-service embarrassment, it is a compliance breach that can trigger recalls, regulatory action and reputational damage far larger than the value of the stock itself. In food, expiry and use-by control sits at the centre of safety regimes and audit expectations. In cosmetics, period-after-opening and best-before dates carry both legal and brand consequences. In all three, an auditor who finds expired stock available for picking, or finds no systematic control preventing it, has found a systemic failure, not an isolated slip.
The reason I frame this as a data problem is that both failure modes trace back to the same root causes. Stock ages out because the warehouse shipped newer product ahead of older product, which means the system either did not know the true expiry dates or did not use them to direct picking. Expired product reaches a customer because nothing physically or logically prevented it from being picked. Neither of those is a labour problem you solve by asking pickers to be more careful. They are control problems you solve by making the system enforce the right behaviour every time, which is exactly what a well-configured WMS does.
2. FEFO in practice
First-expiry-first-out, universally abbreviated to FEFO, is the rule that the stock nearest to its expiry date should be shipped first, regardless of when it arrived. It is a close cousin of first-in-first-out, but the distinction matters: FIFO ships the oldest received stock first, which is usually but not always the nearest to expiry. When you receive product with varying remaining shelf life, for example a later delivery that happens to have an earlier expiry date than stock already on hand, FIFO and FEFO diverge, and in expiry-critical categories FEFO is the correct rule. For the full comparison of these rotation strategies and when each applies, see FEFO vs FIFO vs LIFO.
In a manual warehouse, FEFO depends on pickers reading dates off cartons and choosing correctly, which is exactly as reliable as it sounds. In an automated warehouse, FEFO becomes a system behaviour. Every unit is tracked with its expiry date at the location or lot level, and when an order needs picking, the WMS allocates from the nearest-to-expiry stock and directs the picker to that location. The picker does not decide rotation; the system does, and the picker simply goes where the screen or the light says. The diagram below shows the logic: incoming stock is dated at receiving, the system sorts available stock by expiry, it directs the picker to the nearest-to-expiry location first, it raises alerts as dates approach, and anything past expiry is diverted into a quarantine location where it cannot be picked.
The key insight in that flow is that FEFO is only as good as the data feeding it and the enforcement at the pick face. If the expiry date is missing or wrong at receiving, the sort is meaningless. If the WMS allows a picker to override the directed location and grab whatever is convenient, the rule collapses. Automation makes FEFO reliable precisely because it removes both discretionary points: the date is captured and validated at receiving, and the allocation is system-directed at picking. That is the whole value proposition in one sentence.
The honest limitation: FEFO optimises rotation, it does not create shelf life. If you are buying more than you can sell before expiry, or your supplier is delivering product with too little remaining shelf life, no rotation rule will save you. FEFO minimises the waste caused by poor rotation; it cannot fix the waste caused by over-buying or short-dated inbound stock. Those are purchasing and supplier-agreement problems, and treating a FEFO configuration as the cure for them will only disguise the real cost until year-end.
3. Expiry management practices
Expiry control is not a single feature, it is a small set of practices that work together. Each one closes a different gap, and a program that implements one or two while neglecting the rest tends to leak somewhere. The table below sets out the core practices and what each of them actually does in an automated warehouse.
| Practice | What it does |
|---|---|
| FEFO enforcement | Directs allocation and picking to the nearest-to-expiry stock first, removing picker discretion so the oldest-dated units always ship before newer ones. |
| Shelf-life rules | Define, per item or category, the total shelf life, the minimum remaining life required at inbound, and the minimum life required at outbound to a customer, so short-dated stock is caught rather than shipped. |
| Expiry alerts | Flag stock as it approaches its expiry threshold, giving the team lead time to sell, transfer, discount or return it before it becomes a write-off. |
| Quarantine | Moves expired or failed stock into a blocked location that the system will not allocate from, physically and logically separating it from saleable inventory pending disposal or return. |
| Markdown | Applies a discount or diverts near-expiry stock to a secondary sales channel to recover some value before the date passes, turning a partial recovery into a better outcome than a total write-off. |
None of these practices is exotic, and all of them are standard capabilities in a mature WMS. The difference between a warehouse that controls expiry and one that does not is rarely the software; it is whether these features are configured, enabled and audited, or bought and left switched off. I have walked into more than one operation where the WMS supported every one of these controls and none of them was turned on, because the implementation project treated them as optional and the go-live pressure meant they never got revisited.
4. Capturing and enforcing shelf life
Everything downstream depends on the expiry date being captured correctly at the moment stock enters the building. This is the single highest-leverage point in the whole process, and it is where most expiry programs quietly fail. If the receiving clerk scans a carton and the system does not demand an expiry date, or accepts any date without validation, then every FEFO decision, every alert and every quarantine action afterward is built on a guess. Capturing shelf life well means the WMS makes the expiry date a mandatory, validated field at receiving, tied to the lot or batch so that the date travels with the stock through every subsequent movement.
Shelf-life enforcement then layers rules on top of the captured date. A well-configured item master carries the total shelf life for the product, a minimum-remaining-life-at-receipt rule that rejects or flags inbound stock arriving with too little life left, and a minimum-remaining-life-at-shipment rule that prevents allocation of stock that would reach the customer too close to its date. That last rule matters more than people expect: a distributor may have a contractual obligation to deliver product with, say, at least seventy-five percent of its shelf life remaining, and shipping short-dated stock breaches the agreement even though the product has not technically expired. The system should know that threshold and enforce it automatically. Because expiry travels with the lot, this whole mechanism depends on solid lot and batch identity, which is why expiry management and lot and batch tracking are really two views of the same underlying data.
The practitioner's point here is that shelf-life rules should be maintained as master data, not as tribal knowledge in a supervisor's head. When the rule lives in the item master, it applies consistently to every receipt and every shipment regardless of who is on shift. When it lives in a person's memory, it applies inconsistently and disappears when that person is on leave. Moving expiry rules from people into the system is the same principle that runs through all warehouse automation: encode the policy once, enforce it every time.
5. Alerts, quarantine and markdown
Capturing and enforcing shelf life prevents bad shipments, but on its own it does not prevent waste. Stock still ages, and the question is what happens in the window before it expires. That window is where alerts, quarantine and markdown do their work, and together they form the recovery side of expiry management.
Expiry alerts are the early-warning system. The WMS watches every lot against its expiry date and raises a flag when stock crosses a configured threshold, for example thirty, sixty or ninety days out depending on the category and the sales velocity. The purpose of the alert is lead time: it gives the commercial team a chance to do something with the stock while it still has value, whether that is pushing it through a promotion, transferring it to a location with higher demand, offering it to a customer who can move it quickly, or returning it to the supplier under a returns agreement. An alert that fires the day before expiry is almost useless; the threshold has to be set far enough ahead that action is still possible. The same real-time visibility that makes these alerts trustworthy is covered in real-time inventory tracking, because an alert is only as good as the freshness of the stock position it is based on.
Markdown is the value-recovery response to those alerts. When near-expiry stock cannot be sold at full price in time, discounting it or routing it to a secondary channel recovers part of its value, which is strictly better than the total loss of a write-off. The discipline is to treat markdown as a managed decision triggered by the alert, not a panic reaction at the loading dock. A warehouse that marks down systematically, on a schedule tied to remaining shelf life, recovers far more than one that only discovers its short-dated stock when it is already too late to sell.
Quarantine is the control for stock that has crossed the line. When a lot expires, or fails a quality check, or is recalled, it must be moved out of saleable inventory immediately and decisively. In a WMS this means transferring it to a blocked location that the allocation engine will never pick from, so there is no path by which expired stock can reach a customer even by mistake. Quarantine is both a physical separation, the stock is moved to a defined area, and a logical one, the system marks it unavailable. The two together give you an auditable guarantee: expired stock is not merely discouraged from shipping, it is structurally prevented from it, and every quarantine movement is recorded for the audit trail that regulators will eventually want to see.
6. Reducing waste and write-offs
Put the pieces together and a clear hierarchy of outcomes emerges for any unit of perishable stock, from best to worst. Best is that the unit sells at full price well before its date, which good FEFO rotation and healthy demand deliver. Next best is that an early alert lets the team move or promote it at full or near-full value. Below that, markdown recovers partial value from stock that would otherwise have aged out. Worst is quarantine and write-off, where the unit is a total loss and carries disposal cost on top. Every practice in this article is about pushing units up that hierarchy, from write-off toward full-price sale.
Reducing waste, then, is not a single lever, it is the compounding effect of getting each stage right. Accurate date capture makes rotation trustworthy. Trustworthy FEFO rotation means the nearest-to-expiry stock actually ships first, so fewer units drift toward their dates unnoticed. Early alerts catch the units that do drift, while there is still time to act. Markdown recovers value from the ones that cannot be sold at full price. Quarantine contains the genuine failures and keeps them out of shipments. A weakness at any stage pushes more units down toward write-off; strength at every stage keeps the write-off rate low.
The number I would watch is expiry write-off as a percentage of throughput for each perishable category, tracked over time. It is the single cleanest measure of whether the whole system is working, and unlike activity metrics it cannot be gamed by looking busy. If write-off is falling as volume holds or grows, the controls are working. If it is flat or rising, something upstream is broken, and the usual culprits are the unglamorous ones: dates not captured at receiving, FEFO enforcement overridden on the floor, or alerts that fire too late to act on. Chase the write-off number back to its cause and it almost always lands on one of those three.
7. Expiry management in the WMS and ERP
Expiry data does not live in one system, and understanding the division of labour between the WMS and the ERP keeps you from expecting the wrong tool to do a job it was never designed for. The WMS is where the physical, location-level, lot-level reality lives: which specific lots are in which locations, what their exact expiry dates are, how FEFO allocation runs, where the quarantine location sits, and which units have been blocked. It is the system of execution, and it is where the day-to-day enforcement happens at the speed of the warehouse.
The ERP is where the financial and commercial consequences land. Write-offs post as inventory adjustments against the general ledger. Markdowns flow through as pricing and margin adjustments. Batch and expiry attributes carry into purchasing, so reorder decisions can account for shelf life, and into sales, so order promising can respect minimum-remaining-life rules. In a platform like Microsoft Dynamics 365 Business Central, item tracking by lot with expiry dates, and the posting of expired stock as a valuation adjustment, are native capabilities, which is why expiry control and Business Central inventory management overlap so heavily in practice. The ERP does not run the pick path, but it is where the cost of getting expiry wrong becomes visible on the balance sheet.
The integration between the two is where expiry programs succeed or fail at scale. The WMS must pass lot and expiry attributes up to the ERP so financial postings and purchasing decisions reflect the real state of the stock, and the ERP must pass item-level shelf-life rules and customer contract requirements down to the WMS so enforcement at the pick face matches commercial policy. When that link is clean, expiry is managed once and reflected everywhere. When it is broken, the warehouse and the finance team hold two different versions of the truth, and the gap between them is exactly where uncounted losses hide. This is the same warehouse-to-enterprise integration challenge that runs through the whole warehouse automation guide, and expiry is one of its most unforgiving test cases, because a synchronisation gap here does not just distort a report, it can put an expired unit on a truck.
8. References
- World Health Organization, Good Storage and Distribution Practices for Medical Products, guidance on stock rotation and expiry control in the pharmaceutical supply chain.
- GS1 General Specifications, standards for encoding batch, lot and expiry date data in barcodes and the identification keys used across warehouse systems.
- Codex Alimentarius, Food and Agriculture Organization and World Health Organization, general standard for the labelling of prepackaged foods, covering date marking and use-by conventions.
- Microsoft, Dynamics 365 Business Central documentation, item tracking with lot numbers and expiration dates, and inventory revaluation.
- APICS / ASCM, CSCP and CPIM bodies of knowledge, inventory management and rotation practices including FEFO and FIFO.
Fighting expiry write-offs?
Independent advisory on FEFO configuration, shelf-life rules, expiry alerting and quarantine control, and the WMS-to-ERP integration that keeps the warehouse and finance on one version of the truth. 22+ years across ERP, EAM, CAFM and enterprise integration in regulated, perishable and high-volume operations. No WMS vendor margins, no reseller arrangements.
Book a conversationRead the pillar: expiry management is one thread in a much larger fabric. For how it connects to slotting, automation, inventory accuracy and the rest of the warehouse, read the complete guide to warehouse automation.
Final thoughts
Expiry date management looks like a warehouse-floor problem and is almost entirely a data and rules problem. The units age out on the floor, but the reason they age out is upstream: a date that was not captured, a rule that was not configured, an alert that fired too late, or an enforcement that was quietly overridden. Fix those and the floor takes care of itself, because the system directs the picker to the right stock every time and refuses to ship what it should not.
The practical sequence is unglamorous and reliable. Make expiry a mandatory, validated field at receiving. Hold shelf-life rules as master data in the item master, not in a supervisor's memory. Let the WMS enforce FEFO at the pick face so rotation is never a discretionary choice. Alert early enough that markdown and transfer are still possible. Quarantine expired and failed stock so it is structurally incapable of reaching a customer. Keep the WMS and ERP synchronised so the warehouse and the finance team see the same reality. Do that and expiry write-offs fall, audit findings disappear, and the tension near the shipping dock quietly goes away, because the system, not the picker, is now in control of what leaves first.
Related reading: The complete guide to warehouse automation, FEFO vs FIFO vs LIFO, Lot and batch tracking, Business Central inventory management, Real-time inventory tracking.
Muhammad Abbas
CMMS / CAFM Manager & Enterprise Integration Specialist · 22+ years across ERP, EAM, CAFM and enterprise integration.
Work with me