Skip to content
User Manual · Chapter 5 — Inventory

Lots, expiry, and FEFO — picking the right batch

Some stock has a memory of when it arrived and a date by which it must be used: feed, food, chemicals, medicine. For those products — flagged lot-tracked on the product record, with the company's Advanced tier on — stock is held in lots.

A lot is born at receipt. Each goods-receipt line creates one lot, named by its lot code and carrying its manufacture and expiry dates (an expiry can default from the product's shelf life). Two deliveries of the same product are two lots; two lots on one receipt are two receipt lines. A lot's dates are its identity: receive the same lot code again with different dates and the receipt is refused by name — the system will not let one lot be two ages at once.

The remainder. Stock received before the flag was set, or with lots off, belongs to no lot. It is held as the unattributed remainder, derived rather than stored, and the books always reconcile: on-hand = the lots, plus the remainder. Nothing is ever stranded between the two worlds.

FEFO: first to expire, first out. When a lot-tracked product is issued — a delivery, a feeding, a work-order issue — the system proposes the split across lots in FEFO order: earliest removal date first, where the removal date is the expiry date minus your product's buffer of removal days (the margin that says "stop issuing this while it is still safe, not on its last day"). Lots past their removal date are not proposed; any shortfall falls to the remainder; the issue is written as one movement per lot, so every quantity out names the batch it came from.

Expired is a wall, not a warning. An expired lot can never be issued for use — not by accepting the proposal, not by naming it yourself; the posting refuses and names the lot, its expiry and the product. Two honest exits remain open, because expired stock still has to leave somehow: it can be written off by adjustment, or returned to the supplier through a receipt reversal. Both travel paths that cannot be mistaken for use.

Overriding the proposal. Sometimes the right batch is not the earliest — a customer asked for a specific lot, a nearer shelf holds another. You may store a different split on the document before posting. If it departs from the FEFO proposal, a reason is required, and the reason is kept — stored on the split and written into the movements' own narrative, so a later reader of the ledger sees not just that the order was overridden, but why.

Snapshot: portal-v0-2026-11-10