Why batches and expiry make this trade different
A pharmacy or agrovet is not just a shop; it handles products that expire and that can be recalled, where selling the wrong item is a safety and licensing risk, not merely a lost sale. That raises the stakes on stock control well above ordinary retail.
The two ideas that define the trade are the batch and the expiry date. Get those right and you protect both your customers and your margin. Get them wrong and you face write-offs, failed inspections and, worst of all, the risk of dispensing something you should not have. Everything else in this guide builds on those two foundations.
Track stock by batch, not just by product
In most shops, a product is a product. In a pharmacy or agrovet, the same product arrives in distinct batches, each manufactured at a different time with its own batch number and its own expiry date.
Tracking at the batch level means you always know not just how much of an item you hold, but which batches, and when each expires. This is the detail that ordinary stock systems miss and that this trade cannot do without. Without batch-level records, your stock figure is just a total that hides the one thing that matters most: how close each portion of it is to being unsellable.
Sell first-expiry-first-out, not just oldest-first
Ordinary retail teaches first-in-first-out - sell the oldest arrival first. Pharmacies and agrovets need something stricter: first-expiry-first-out, or FEFO.
The difference matters because a newer delivery can carry an earlier expiry date than stock you already had. If you simply sell oldest-arrival-first, you can leave a soon-to-expire batch sitting while you sell one with months left. FEFO always reaches for the batch that expires soonest, which is the only reliable way to use stock before it becomes worthless. Arrange your shelves and your system so the earliest expiry is always the first to go.
Use expiry alerts to act in time
The whole point of tracking expiry is to act before the deadline, not to discover it afterwards. Expiry alerts turn a static date into a timely warning.
When a batch approaches expiry, an alert gives you options while they still exist: discount it to move it, prioritise it at the counter, transfer it to a branch that will sell it faster, or return it to the supplier if your terms allow. Discovered too late, expiring stock is simply a write-off. Flagged in time, much of it can still be turned back into cash. Alerts are what make batch data actionable rather than just historical.
Make recalls fast and traceable
Recalls are a fact of life in regulated products, and when one happens, the manufacturer or regulator names a specific batch. Your ability to respond depends entirely on your records.
- Identify exactly which of your stock belongs to the recalled batch.
- Remove that stock quickly without pulling unaffected batches.
- Where records allow, trace which customers received the batch.
- Document the action for regulators and your own protection.
- Avoid the cost and disruption of a blanket product withdrawal.
Expired stock is a loss and a risk at once
In most trades, expired or dead stock is a financial problem. In pharmacy and agrovet, it is that and more: dispensing an expired medicine or veterinary product can harm a customer or an animal and put your licence at risk.
That double exposure is why this trade cannot treat expiry casually. Every expired unit is money written off, but a single expired product reaching a customer is a far more serious matter. Rigorous batch and expiry control is not bureaucracy here - it is the routine that keeps both your margin and your reputation intact, and it is what lets you face an inspection without anxiety.
Keep records that support compliance
Pharmacies and agrovets operate under regulation, with obligations around how regulated products are stored, recorded and dispensed. Accurate batch and expiry records are the practical backbone of meeting those obligations.
Good records mean you can show what you hold, prove you are not carrying expired stock, respond correctly to a recall, and answer an inspector's questions without scrambling. Compliance stops being a periodic panic and becomes a by-product of running the shop properly day to day. The same records that protect your margin also protect your standing with the regulator.
How Upeosoft supports pharmacies and agrovets
Batch numbers, expiry dates, FEFO discipline and recall traceability are more than a manual system can reliably carry. Upeosoft builds retail management on ERPNext and Frappe with batch and expiry tracking, so every batch has its own expiry, stock moves first-expiry-first-out, and alerts warn you before a batch turns into a write-off.
Recall tracing, expiry reporting, and eTIMS and M-Pesa are handled in the core, so compliance and everyday trade run on the same records. If you run a pharmacy or agrovet and want batch and expiry handled properly, the retail page is where to start a grounded conversation about setting it up for your regulatory reality.
