Inventory and stock

Batch & expiry tracking

Track stock by batch (lot) number and expiry date so you always sell or dispense the earliest-expiring stock first, and can see at a glance what is about to expire. Essential for pharmacies, food, chemicals, and anything date-sensitive.

Before you start

  • The item must be marked "Manage expiration" in its setup (Products & Services → open the item → tick Manage expiration / batch tracking). Only those items ask for a batch when stock moves; everything else behaves as before.
  • Drugs turn this on automatically. Any item you give a drug schedule (OTC / POM / Controlled) — including everything imported through the AI Drug Catalog — is set to Manage expiration for you. You can still untick it on a specific item.
  • Batch balances are calculated from stock movements, not typed in — you can trust the on-hand shown against each lot.
  • The same report is reachable from Inventory → Batch Expiry Report and from Pharmacy → Expiry & Batch Report — it's one report in two places.

Steps — reading the Batch Expiry Report

  1. Open Inventory → Batch Expiry Report (/inventory/expiry).
  2. Pick a Department (or leave All departments) and a Horizon — the next 30, 60, or 90 days, or All dated lots.
  3. The grid lists every lot with stock on hand that is expired or approaching expiry, with a coloured status pill:
    • Expired (red) — remove from sale immediately.
    • ≤ 30 / 60 / 90 days — plan a discount, promotion, or return to supplier.
  4. The top-right shows a count of expired lots on hand. Sort by Expiry to work oldest-first, or use the search box to find a specific item or batch.

Steps — entering batches when stock moves

When you add or remove stock for a batch-tracked item, the quantity cell shows a "⋯ lots" button instead of a plain number. Click it to open the batch panel:

  • Receiving stock (purchases, opening/added adjustments, customer returns): add one row per lot — batch number, expiry date, manufacture date, quantity. The line quantity is the sum of the lots you enter.
  • Issuing stock (sales invoice, consumption, transfers out): the panel lists available lots earliest-expiry-first. Click Auto FEFO to fill the requested quantity automatically, or type the quantity to draw from each lot. Expired lots are blocked and cannot be dispensed.
  • Returning stock to a supplier (return outward): pick the lot(s) you are sending back. Here expired lots CAN be selected — returning expired stock for credit is a normal reason to do a supplier return.

Press Apply — the total flows back into the line, and the lot breakdown is saved with the document.

At the POS / till — it's automatic

You don't pick lots at the till. When a batch-tracked drug is sold on the POS, the system silently draws the earliest-expiring stock (FEFO) for you, so the sale stays fast. If the only stock that could cover the sale is expired, the sale is blocked — clear or write off the expired lot first. (Selling through the full Sales Invoice screen still gives you the "⋯ lots" panel if you want to choose lots by hand.)

Tips

  • FEFO = First-Expiry-First-Out. Auto FEFO always drains the lot that expires soonest, so nothing sits long enough to expire when it didn't have to.
  • Lots with no expiry date are used last (they never expire).
  • Batch tracking never changes your stock balances or accounting — it only records which lot each movement used. Your on-hand and ledger stay exactly as they were.

Common problems

  • "No stock lots available for this item in this department." → There is no on-hand batch to issue from. Receive stock first (purchase or opening adjustment) so a lot exists.
  • A lot is greyed out / marked EXPIRED. → It is past its expiry date and cannot be dispensed. Remove it via a stock adjustment (supervised write-off).
  • The "⋯ lots" button doesn't appear. → The item isn't marked Manage expiration. Open the item in Products & Services and enable it; existing stock keeps working, new movements will ask for a batch.
  • Auto FEFO says "Only N available." → Non-expired on-hand is less than the quantity you asked for. Reduce the quantity, or receive more stock. Any expired quantity is shown separately and is deliberately excluded.

See it working on your own business

Start a 45-day free trial — no card needed — and follow this guide in your own practice company.