Skip to content

Pharmacy and Agrovet Stock: Handling Batches and Expiry

For pharmacies and agrovets, batch and expiry tracking is both a compliance duty and a profit protector. Here is how to handle batches, FEFO and recalls without losing money.

By Karani Geoffrey, Founder & CEO, Upeosoft
In short

Pharmacies and agrovets should track stock by batch, each with its own expiry date, and sell first-expiry-first-out. That way expiring stock is used before it becomes worthless, recalls can be traced to the exact batch and customers, and expiry alerts warn you in time to act. Batch and expiry tracking is both a compliance requirement and a real defence against loss.

Key takeaways
  • Track stock by batch, with an expiry date recorded against each batch.
  • Sell first-expiry-first-out (FEFO), not just first-in-first-out.
  • Expiry alerts give you time to discount, return or move stock before it dies.
  • Batch records make recalls traceable to specific stock and customers.
  • Expired stock is both a financial loss and a regulatory and safety risk.
  • Accurate batch data supports compliance with pharmacy and agrovet regulations.

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.

Frequently asked questions

What is batch tracking and why do pharmacies need it?

Batch tracking means recording stock in the batches it was manufactured in, each with its own batch number and expiry date. Pharmacies and agrovets need it because products expire and can be recalled. Without batch records you cannot tell which stock is near expiry or trace a recalled batch, which is both a financial and a compliance problem.

What is FEFO and how is it different from FIFO?

FEFO means first-expiry-first-out: you sell the stock that expires soonest, regardless of when it arrived. FIFO sells the oldest arrival first. For pharmacies and agrovets, FEFO is safer because a newer delivery can sometimes have an earlier expiry than older stock. Selling by expiry date, not arrival date, is what prevents avoidable write-offs.

How do expiry alerts help reduce losses?

Expiry alerts warn you that a batch is approaching its expiry date while you still have time to act - discount it, prioritise it, move it to a busier branch or return it to the supplier if terms allow. Without alerts, you usually discover expired stock only when you go to sell it, by which point it is already a total loss.

Why does batch tracking matter for recalls?

When a manufacturer or regulator recalls a product, they name a specific batch. Batch tracking lets you identify exactly which of your stock is affected, remove it, and where records allow, trace which customers received it. Without batch data you either miss affected stock or have to pull everything, both of which are costly and risky.

Is batch and expiry tracking a legal requirement in Kenya?

Pharmacy and agrovet trades are regulated, and handling of medicines and veterinary products carries record-keeping and safety obligations. Beyond the specifics, selling expired products is a serious risk to customers and to your licence. Accurate batch and expiry records are the practical foundation for meeting those responsibilities and passing inspections calmly.

Karani Geoffrey
Karani Geoffrey
Founder & CEO, Upeosoft

Karani Geoffrey is the Founder & CEO of Upeosoft, a software and automation company rooted in Kenya. He builds custom software, AI systems, and production-grade ERPNext for businesses across East Africa, and writes about the Kenyan realities - eTIMS, M-Pesa, SHIF, unreliable internet and power - that make or break real systems.

Next step

Want this working in your business?

Upeosoft builds and hardens the systems behind this article - for real Kenyan operations, with eTIMS, M-Pesa and offline realities handled.

Keep reading

Retail and TradeBuyer's guide

The Best Retail Management Software for Kenyan Shops in 2026

A practical, Kenya-first guide to choosing retail management software in 2026 - what actually matters, what to ignore, and the mistakes that cost shopkeepers money.

6 min readRead article →
Retail and TradeBuyer's guide

How Much Should Retail Management Software Cost in Kenya?

An honest breakdown of what retail management software costs in Kenya - the real price drivers, the fees suppliers hide, and how to judge value instead of just price.

6 min readRead article →
Retail and Trade

How to Manage Stock and Sales Without Losing Money

The everyday leaks that quietly drain a Kenyan shop's profit - unrecorded sales, spoilage, over-ordering, weak reconciliation - and a practical routine to plug them.

6 min readRead article →