Working day to day
Rotating dated stock
Sell the oldest first, know what is about to turn, and write off what did.
On this page
Turn tracking on, then date what arrives
Switch on expiry tracking for the products that need it and Inventory starts grouping their quantities into dated lots, one set per location. Stock already on hand keeps its quantity but carries no date, which is the honest record: nobody wrote one down at the time.
From then on, receiving through the stock dialog asks for a date, and you can leave it blank when the item genuinely carries none. Receiving against a purchase order does not ask, so those units arrive undated. If the dates matter, receive dated goods through the stock dialog instead: a recount cannot supply a date afterwards, because a count does not know one.
Removals take the earliest date first
Suppose a location holds three lots of the same product.
| Lot | Units |
|---|---|
| Expires 2 March | 12 |
| Expires 15 March | 20 |
| No date recorded | 8 |
Removing 15 units takes all 12 from the 2 March lot and 3 from the 15 March lot, leaving 17 units dated 15 March and the 8 undated units untouched. Undated stock is always last in line, because a date you know beats a date you do not.
When reality differs, the remove dialog lets you take from a named lot instead, and it spills into date order only if that lot runs out. Moving stock between locations carries the dates with it. A recount that finds more adds the extra as undated stock, because a count cannot know a date; a recount that finds less takes from the earliest.
Watch what is about to turn
Overview lists products with stock expired or expiring within 30 days, worst first: anything already expired outranks anything merely due, and within each group the money at stake decides. The Products page gains an Expiring soon filter once any product tracks dates, and a product’s own page lists its lots in date order.
Use the window to act while the stock is still worth something: move it to where it sells, discount it, or build it into something that will go faster. A lot you deal with before the date is not shrinkage.
Write off with the right reason
When stock does turn, remove it with the reason Expired. That keeps it out of the demand figures, so a bin of yoghurt does not read as a bestseller and raise the reorder point, and it puts the loss in the shrinkage report where it can be seen and reduced.
The dashboard’s expiry rows take you straight to a removal already tagged as expired. Add a note saying where it was found: a pattern of the same product expiring in the same room is usually a rotation problem, not a buying problem.