IEMSuite
Inventory & stock control7 min read

Lot & expiry tracking

Track stock by lot with expiry dates, set a per-product expiry-alert threshold, and watch expiring lots on Inventory Analytics.

Tracking stock by lot and expiry

For anything perishable, the lot and its expiry date are the whole game. Two pallets of the same product are not interchangeable if one expires in three weeks and the other in eleven months. IEMSuite tracks every batch as its own lot with its own expiry, drives FEFO rotation from that date, and flags stock before it turns into a write-off.

Step 1 - Give the product a shelf life

On the product, under Inventory → Product Catalog, set two fields:

  • Shelf life (days) - used to calculate a lot's expiry date at receipt, so nobody has to do date arithmetic on a loading dock
  • Expiry alert threshold - how many days ahead of expiry the lot should start being flagged

Pick the threshold from how long it takes you to do something about it. If moving slow stock means a promotion that takes a month to run, a seven-day warning is not a warning, it is a notification of a loss. See Creating a product.

Step 2 - Capture expiry when you receive

When you log an inbound receipt under Inventory → Inbound Log, each lot gets an expiry date, either typed in or calculated from the shelf life. From that moment the lot is tracked to its date.

This one field is what the rest depends on. Without it the product allocates FIFO, and a batch expiring next month will happily sit behind one expiring next year.

Step 3 - Watch what is aging

Inventory Analytics shows stock aging and an expired products panel listing lots that have passed their date, including how long ago, so you can pull them and write them off. Lots inside their alert threshold are surfaced too.

What happens automatically

You do not have to police any of this by hand:

  • Products with dated lots switch to FEFO, so the soonest-to-expire lot is always picked first
  • Expired lots are excluded from allocation entirely and cannot be shipped or consumed, by suggestion or by manual override
  • Every consumption records which lot it came from, so traceability survives

Expiry and shelf life are not the same thing

Worth separating, because mixing them up causes real waste:

TermWhat it is
Shelf lifeA property of the product: how long it lasts from production
Expiry dateA property of the lot: the actual date this batch goes off
Alert thresholdHow far ahead you want to be told

A product has one shelf life. Every lot of it has its own expiry date, and those dates do not arrive in the same order the stock did, which is exactly why FEFO exists.

A short example

You carry a cream with a 12-month shelf life and a 60-day alert threshold.

  • Lot A received in January expires the following January
  • Lot B received in March, but manufactured much earlier by the supplier, expires that September

Lot B is the one at risk, even though it arrived later. FEFO ships it first automatically, and 60 days before September it shows up as approaching expiry, giving you time to move it while it is still worth something.

Tips

  • Record an expiry on every inbound line for perishable products. A single blank pushes that lot behind every dated one.
  • If a lot looks wrong, put it on hold rather than shipping it and hoping. See Holding and releasing stock.
  • Match the alert threshold to your slowest realistic response, not to your fastest.

FAQ

Is there a separate expiry alerts screen?

No. Expiry shows up where you already work: aging and expired products in Inventory Analytics, and the stock picture on the dashboard. The product's expiry alert threshold controls how early a lot is flagged.

What if two lots have different expiry dates?

That is what lot tracking is for. Each lot keeps its own date and FEFO uses the earliest first.

Can I ship a lot that expires tomorrow?

Yes. Only lots already past their date are blocked. Whether one day of remaining life is acceptable is a commercial decision, not a system one.

What happens to stock that does expire?

It is excluded from allocation and listed as expired so you can write it off. It stays in the record for traceability.

Do I need expiry dates on products that do not expire?

No. Leave the field empty and the product allocates FIFO.