07 — Expiry-date tracking & report
What this screen is for
Track when perishable stock expires (milk, yoghurt, medicines, etc.), get warned before selling expired items, and print a list of what's expired or expiring soon.
Before you start
- You are logged in.
- Products that perish have an Expiry Date (and optionally a Batch/Lot) set on them.
Step-by-step
1. Set expiry when adding/editing a product
In Inventory → Add/Edit product, fill the Expiry Date (calendar) and Batch/Lot fields, then Save. See 05 — Products.

2. Open the Expiry Report
Go to Inventory and click ⏳ Expiry Report.

3. Read the report
The report lists items already expired and items expiring within 30 days, with their batch and date. Use it to pull stock from shelves or run a promotion.

4. The sell-time warning
If a cashier tries to sell an expired batch on the POS, a warning appears before the item is added so they can decide per your store policy.

Real example (using the demo data)
- The demo data includes a few items already near/after expiry (e.g. a yoghurt batch).
- Inventory → ⏳ Expiry Report → you see those items flagged with their dates.
- Go to POS Terminal, scan that yoghurt → a ⚠️ expired warning appears before it's added.
If something goes wrong
| You see this | What it means | How to fix it |
|---|---|---|
| Report is empty | No products have expiry dates set. | Edit perishable products and set their Expiry Date. |
| Item not flagged though it's old | Its Expiry Date field is blank. | Set the Expiry Date on that product and re-run the report. |
| No expiry warning at POS | The product has no expiry date, or it isn't past today. | Confirm the date is set and is in the past. |
FAQ
Q: How many days ahead does "expiring soon" look? A: 30 days by default.
Q: Does it stop me selling expired stock? A: It warns; selling is allowed if your policy permits, so you stay in control.
Q: Can I track batches/lots? A: Yes — use the Batch/Lot field next to Expiry Date.
