Pick stock by expiry, not just arrival date
Agree which lot leaves first when arrival and expiry dates differ. Define removal dates, missing-label handling and eligible stock before warehouse-system sign-off.
Rootscratch ·
For stock with shelf-life limits, the order of arrival is only part of the picking decision. Agree which lot should leave first, which date controls that choice and what staff should do when a label is missing.
Odoo 19 distinguishes FIFO (first in, first out), based on incoming date, from FEFO (first expiry, first out), based on removal date.[1][2] That distinction matters when a newer delivery expires sooner than stock already on the shelf.
Consider two fictional lots of sealant cartridges. Lot A arrives first and expires on 31 July 2027. Lot B arrives later but expires on 30 April 2027. If both lots are eligible and their removal dates match their expiry dates, an expiry-based pick should suggest Lot B first. These dates are illustrative, not supplier specifications or Rootscratch product terms.
Agree which date controls the pick
Odoo's FEFO strategy prioritizes the nearest assigned removal date.[2] That date can fall before expiration.[2] Do not treat the date printed on a carton and the system's removal deadline as interchangeable without checking the rule.
Decide whether stock must leave storage before its expiry date, and how any buffer is calculated. Odoo separates expiration, best-before, removal and alert dates.[3] Keep the fields your workflow needs clearly named rather than hiding several meanings behind one "date" column.
The pick task should show the chosen lot and the reason for its priority. In the simplified sealant example, that means Lot B and its earlier expiry, not just the product's total available quantity.
Capture the date against the lot
In Odoo, expiration information requires products tracked by lots or serial numbers.[3] Its receipt workflow can populate expiration from product configuration or allow manual entry when those date settings are absent.[3] Those are platform-specific behaviors, not a promise about every warehouse system.
Where a supplier provides an expiry date, ask staff to verify the saved lot record against that label and the agreed source of truth. Do not let an unreviewed receipt-plus-duration default silently replace it.
Define what happens when the date is missing, unreadable or disputed. For example, route the receipt to review and keep that lot out of normal picking until an authorized person resolves the record. Preserve the original value and reason for any correction.
Define eligibility separately from priority
Agree how expired, damaged or held stock is excluded from available picks. Do not assume that selecting FEFO also implements your complete release policy.
If staff may choose a different lot, define who can do so and what explanation is recorded. The completed movement should retain the lot actually picked, rather than only the lot originally suggested.
Test a later arrival with an earlier expiry
Use the two-lot example during acceptance testing. Check the suggested lot on the pick task, then the lot saved on the completed movement. Repeat with a missing date, equal removal dates and a lot that your policy makes ineligible. Agree a tie-break rule instead of leaving staff to guess.
Rootscratch's Inventory & Warehouse Management Systems service covers receiving, storage and fulfillment workflows.[4] Bring representative lot labels and your date rules to the scope discussion. Expiry-based picking should be an explicit requirement with testable behavior, not an assumption attached to an inventory dashboard.
Sources
[1] https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies.html — Odoo 19: inventory removal strategies [2] https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/shipping_receiving/removal_strategies/fefo.html — Odoo 19: FEFO removal and removal dates [3] https://www.odoo.com/documentation/19.0/applications/inventory_and_mrp/inventory/product_management/product_tracking/expiration_dates.html — Odoo 19: expiration dates and lot tracking [4] https://rootscratch.com/services/inventory-warehouse-management — Rootscratch: Inventory & Warehouse Management Systems