+20 11 00 289 896|+966 53 646 4828|info@extramile-egy.com
← All articles

Tracking Expiry Dates and Batch Numbers in Your Pharmacy

Tracking Expiry Dates and Batch Numbers in Your Pharmacy

Short answer: Expiry control in a pharmacy rests on three habits that the system must enforce: record the batch and expiry date on every item received, sell the batch that expires first (FEFO), and review a near-expiry report every week so items can be returned, transferred or promoted before they become a loss. Odoo handles all three with lot and expiry tracking, and adds the ability to find every unit of a recalled batch in seconds.

Expired stock is one of the most visible losses in a pharmacy, and one of the most avoidable. This article explains how to set up expiry control so it works every day, not only at the annual count.

The four parts of expiry control

1. Capture batch and expiry at receipt

When the distributor's delivery arrives, each line is recorded with its batch number and expiry date. If this step is skipped, nothing after it can work. Odoo can make batch and expiry mandatory for medicines, so a receipt cannot be validated without them.

2. Sell first-expiry, first-out (FEFO)

The system should decide which batch leaves the shelf, not the cashier. With FEFO removal, each sale takes stock from the batch that expires first. The shelf arrangement should follow the same rule.

3. Watch what is coming

A weekly near-expiry report per branch, for example items expiring in the next 90 days, gives time to act:

  • Return to the distributor if the agreement allows near-expiry returns.
  • Transfer to a branch that sells the item faster.
  • Prioritise the item at the counter.

4. Handle recalls quickly

When a regulator or manufacturer recalls a batch, you must find every unit of it: which branch, how many, and which have already been sold. With lot tracking this is a single search.

Setting it up in Odoo

Setting it up in Odoo
ItemPurpose
Lots and serial numbers enabledTrack each batch separately
Expiration dates enabledStore expiry, best-before and alert dates per lot
Product tracked "by lots"Forces batch entry for that medicine
Removal strategy FEFOPicks the earliest-expiring batch automatically
Alert date per productFlags lots a set number of days before expiry
Scheduled reportSends the near-expiry list to each branch manager weekly

Common mistakes

  • Entering one "general" batch for everything to save time at receipt.
  • Importing opening stock without batches and expiry dates.
  • Allowing cashiers to override the batch at sale.
  • Reviewing expiry only at the annual stock count.

Frequently asked questions

What about items sold by strip?

Strips come from a box with a known batch, so the batch follows the strip. Stock is kept in both units correctly.

Can we import our current stock with expiry dates?

Yes, if your current system or a physical count provides batch and expiry per item. This is worth doing carefully at go-live.

Does this help with regulators?

Yes. Batch-level records make it much easier to respond to recalls and inspections, and they are the base for track-and-trace requirements.

See expiry control in a real pharmacy flow

ExtraMile's pharmacy solution on Odoo includes batch, expiry and FEFO control for single pharmacies and chains.

Book a pharmacy demo or message us on WhatsApp: Egypt · Gulf

This article was drafted with AI assistance and reviewed and edited by the ExtraMile implementation team.