Batch & Expiry

Recording a batch number and expiry date when stock arrives, reading the expiry alerts, and the important things batch tracking does not do.

5 min read · Updated 10 Sep 2026

On this page

If you sell anything perishable, you want to know what is about to go off before your customers do. Kassly lets you tag incoming stock with a batch number and an expiry date, and reports on what is close to the line.

Read the limits section on this page before you build a process around it. What Kassly does here is narrower than most people assume from the words "batch tracking".

What Needs an add-on?
Recording a batch number and expiry when stock arrives No. Free on every plan.
The Expiry Alerts page and the daily notification Yes — Inventory Pro

Expiry Alerts needs the Inventory Pro add-on (₱400 per branch each month), or any bundle that includes it. Recording the dates does not.

Recording a batch

Batch details are captured when stock comes in, and only then.

Where Batch fields
Stock Adjustment → Stock In (add inventory) Batch Number, Manufacture Date, Expiry Date
Bulk Stock-In, both the table and the Excel template Batch number and expiry per row
Receiving a purchase order, in the web app Batch number and expiry per line
Receiving a purchase order on the POS app Not offered
Field Notes
Batch Number Up to 100 characters. Free text — Kassly does not generate it.
Manufacture Date Recorded, but not used by any report.
Expiry Date Must not be earlier than the manufacture date. This is the field everything keys off.

The panel is headed Batch & Expiry Tracking (optional) and appears only when the adjustment type is Stock In. There is nothing to switch on per product; you either fill the fields in for a delivery or you do not.

The Expiry Alerts page

Open Inventory → Expiry Alerts. Four counters across the top:

Counter What it counts
Expired Batches Batch lines already past their date
Expired Units The quantity sitting on those lines
Expiring Soon Batch lines due within the window
Critical (7d) Of those, the ones due within a week

Below that, a View toggle between Expiring and Expired, a Days Ahead box (30 by default) and a search across product, SKU and batch number.

The table shows Product, Batch, Location, Qty, Expiry Date and a Status badge:

Days until expiry Badge
Already past Expired nd ago
0 Expires today
1–7 nd left, red
8–14 nd left, amber
15–30 nd left, yellow
More than 30 nd left, plain

Location is a branch or a warehouse — batches are reported from both, so a delivery received into a central warehouse shows up here too. See Warehouses.

The daily alert

Every morning at 08:00 Manila time Kassly checks for batches expiring within seven days and sends one notification to every Owner and Manager: "3 product batches expiring within 7 days." It is a nudge to open the page, not a list.

The seven days here are fixed and separate from the Days Ahead box on the page. See Notification settings.

What batch tracking does not do

This is the part that matters.

A sale never picks a batch. Selling an item deducts from the branch's single on-hand figure. It does not choose the oldest batch, the nearest-expiry batch, or any batch at all — the sale's movement carries no batch number.

There is no FEFO or FIFO picking. Kassly does not rotate stock for you and will not warn a cashier that the item they are ringing up belongs to a batch that expires tomorrow. Rotation is a shelf discipline; Kassly's contribution is telling you what to go and look at.

A batch's quantity is what you received, not what is left. Kassly works out a batch's figure by adding up every movement carrying that exact batch number. Because only incoming movements ever carry one, that figure does not go down as you sell.

In practice this means an expired batch line does not clear itself, and there is currently no screen that can clear it. The batch fields appear only on Stock In, and Stock In only adds — so a batch you have thrown away will keep appearing on the Expired list at its original quantity.

Record the write-off as an ordinary Adjustment with a note naming the batch. Your total stock will then be right, which is what the valuation and your books depend on. The Expired line will remain, so treat that list as a running record of what has expired rather than a live picture of what is still in the bin.

Nothing carries a batch between locations. A transfer moves quantity only, so a batch received at the main branch and sent to a second branch is still reported at the first. See Stock transfers.

Getting value out of it anyway

Given the above, the way to use this feature is:

  • Fill the expiry date in on deliveries of perishables, and give the batch a name you will recognise — the supplier's lot code, or just the delivery date.
  • Work the Expiring list, not the Expired one. Its whole purpose is the fortnight before something becomes a loss: discount it, use it in a special, or move it to the branch that will sell it.
  • Write off with an Adjustment and a clear note, so the money side and Stock consumption stay honest.
  • Do not use batch quantities as a stock figure. The figure to trust is the one on Stock levels.

Where to go next