Expiry and FEFO

Track best-before dates by lot, see what's expired or expiring soon at a glance, get near-expiry alerts, and sell oldest-first (FEFO) to cut waste.

For anything with a shelf life — drinks, food, medication, cosmetics — Nkapio tracks a best-before date per lot so you can sell oldest-first (FEFO) and catch stock before it expires. It's built for the people who live with that risk day to day: the store manager who has to write off spoiled goods, the pharmacist who can't dispense out-of-date medication, the bar owner watching a crate of drinks creep toward its date. Find it under Inventories → Expiry (available when expiry tracking is enabled).

How expiry tracking works

Expiry is a property of a product's tracking type. When you mark a product as perishable, its stock isn't just a running quantity — it's received in lots, and each lot carries the best-before date for that batch. Two different deliveries of the same product become two lots with two dates, tracked separately.

From there, Nkapio does two things automatically:

  • FEFO picking (first-expiry-first-out) — when you sell or dispense a perishable product, Nkapio draws from the soonest-expiring lot first, so the stock most at risk always leaves first. You don't have to pick the batch by hand.
  • A near-expiry alert window — each lot gets an alert date, worked out as the best-before date minus a warning period set on the product (14 days by default, adjustable per product). Once a lot crosses that date it counts as expiring soon.

The expiry dashboard

Inventories → Expiry (/inventories/expiry) shows every lot with a best-before date and stock still on hand. The headline counts lots in stock, split into expired, expiring soon and OK. A lots-by-time-to-expiry chart buckets them (expired, ≤7 days, 8–30 days, 31–90 days, 90+ days), and the lots by expiry table lists each one — product, lot number, store, quantity, best-before date, days left, and a status badge (red for expired, amber for expiring soon, green for OK). Lots are ordered soonest-first, so your highest-risk stock sits at the top.

The expiry dashboard — lots by time to expiry, with status per lot

Near-expiry alerts

You don't have to keep checking the dashboard. Nkapio runs a daily scan and sends a notification when a lot approaches its best-before date (it enters the alert window) and again when a lot has expired. Each lot raises each alert once, so you get a timely heads-up without a flood of repeats. These alerts sit alongside your other stock notifications — see Stock alerts and logs.

Before you start

  • Expiry tracking must be enabled for your workspace. If you don't see Inventories → Expiry, it isn't switched on for your plan yet.
  • You need inventory access. The dashboard follows your product permissions — if you can view products, you can view the expiry report.
  • Products must be set to perishable. A product tracked as plain quantity has no lots and no dates, so nothing shows here. Set the tracking type to perishable, then receive against it.
  • Dates come in at intake. Expiry only works if goods are received against a lot with a best-before date — see Add products and track stock.
  • Expired stock is held back from sale. By default, once a lot passes its best-before date Nkapio stops it being sold, so out-of-date goods don't slip onto an invoice by accident.

Tips

  • Sell oldest-first (FEFO) — Nkapio already picks the shortest-dated lot for you; the days-left column tells you what to push on the shop floor.
  • Act on "expiring soon" before it turns red — discount, bundle or return stock while it still has value, rather than writing it off later.
  • Tune the warning period per product — give slow sellers a longer lead time and fast movers a shorter one, so alerts land when you can still act on them.
  • Record lots accurately at intake — the whole picture depends on each batch arriving with the right best-before date.

FAQ

A product with a shelf life isn't showing up. Why? It's most likely not set to perishable, or its stock was received without a best-before date. Only lots that have a best-before date and still hold stock appear on the dashboard.

What happens to a lot once it expires? It stays visible with a red Expired badge so you can clear it, and by default it's blocked from being sold. Remove the remaining quantity with a stock adjustment once you've discarded or returned it.

Does Nkapio pick the batch for me when I sell? Yes. For perishable products it draws from the soonest-expiring lot in stock first — that's FEFO — so you don't have to choose manually.

What's next