Skip to content
Innovialabs

Pharmacy Inventory Software: Tracking Batches and Expiry Dates

Practice4 min

In short

A pharmacy needs stock tracked per batch with its own expiry date, not just per product; the software dispenses whatever expires first (FEFO), warns about short-dated stock early and helps return or move it before it becomes a write-off.

The short answer: why batch-level stock matters

Basic inventory answers "how many packs of paracetamol are in stock". That is not enough for a pharmacy: the same item arrives in different batches (lots) with different expiry dates, purchase prices and suppliers. If the system only sees the total quantity, expired packs are discovered on the shelf, when it is too late to return or sell them.

Batch-level tracking keeps the balance of every lot separately. That lets the software:

  • tell staff which pack to dispense first;
  • show what expires in the coming weeks;
  • calculate exact cost and margin for each sale;
  • find and block a lot quickly when the manufacturer recalls it.

What a batch record contains

Every batch should carry at least:

  • the manufacturer's lot number;
  • the expiry date (a real date field, not free text);
  • supplier and receiving document number;
  • purchase price and retail price;
  • storage location (warehouse, shelf, fridge for temperature-sensitive drugs);
  • status: available, reserved, blocked, quarantined.

A batch is created at goods receipt. Ideally it comes from the supplier's electronic invoice or a barcode scan of the pack, not manual entry: a typo in the date at receipt breaks every rule that follows.

FEFO: what goes out first

For products with a shelf life, FIFO (first in, first out) is not always right: a batch received later may expire sooner. Pharmacies use FEFO instead: First Expired, First Out.

RuleWhat is dispensed firstWhen it fits
FIFOThe batch received earliestGoods without a shelf life
FEFOThe batch with the nearest expiryMedicines, supplements, cosmetics, baby food

In practice the POS or picking terminal deducts stock from the nearest-expiry batch automatically and tells the pharmacist which pack to take. If a different lot is handed over, it is best confirmed by a scan so that batch balances keep matching the shelf.

Expiry alerts

Good software does not wait for stock to expire; it works with a horizon:

  1. Early threshold, for example several months ahead: time to agree a return with the supplier or move the batch to a branch where the item sells faster.
  2. Middle threshold: move the item to a visible spot or include it in a promotion where that is allowed for the category.
  3. Critical threshold: pull it from sale, block the batch and prepare a write-off.

Thresholds are set per category: fast movers need a short horizon, slow movers a long one. Alerts are more useful when they reach a named person directly, for example in Telegram, not only in a report.

Write-offs and supplier returns

Even with good tracking some stock has to leave circulation. The system should support separate documents:

  • Supplier return, linked to the original invoice and lot, within the contract's terms for short-dated returns.
  • Transfer between branches, keeping the lot and expiry rather than moving "anonymous" stock.
  • Write-off with a reason (expired, damaged, defective, recall) and the responsible person.
  • Lot block when a recall or rejection notice arrives; the POS will refuse to sell a blocked batch.

A write-off report broken down by reason and supplier shows where purchasing consistently runs ahead of demand.

How the software prevents losses

Expiry losses are almost always a result of buying by gut feeling. That is why batch tracking pays off most when combined with automatic reordering: the system calculates the sales rate per branch and suggests order quantities that can sell through before the critical threshold. Other helpers:

  • stocktaking by lot, not only by quantity;
  • separate cold-chain tracking for drugs that require refrigeration;
  • access rights defining who can edit expiry dates and post write-offs.

Common mistakes

  • Expiry dates typed by hand at receipt: date typos become "unexpected" expired stock.
  • Tracking by product instead of by batch: FEFO and lot blocking become impossible.
  • Alerts exist but nobody acts on them: each threshold needs an owner and a clear action.
  • Branch transfers happen outside the system: batch balances drift away from reality.
  • No link to accounting: write-offs and returns are re-entered manually.

How to choose or extend a system

Check whether the solution can store stock per lot and expiry, apply FEFO at the POS, import electronic invoices, configure alert thresholds per category, block a lot across the whole chain and export data to the accounting system. If ready-made software misses a few of these, it is usually extended with integrations rather than replaced.

FAQ

FIFO dispenses stock in order of arrival, FEFO in order of expiry. FEFO is the right rule for medicines because a later delivery can have a shorter shelf life.

We can help with this

If you'd rather get the result than figure it all out yourself — this is what we do every day.

Discuss a project

Read next

Have an idea or a task? Tell us about it

We'll reply within one business day and propose a solution. The consultation is free.