Skip to main content
Menu
Guide12 minJuly 22, 2026

Pharmacy Inventory Management in Kenya: What Actually Works Behind the Counter

Manage pharmacy inventory in Kenya without losing money: batch and expiry tracking, reorder levels, M-Pesa reconciliation, eTIMS and surviving power cuts.

By Grace Wanjiru

Retail & POS specialist — Nairobi, Kenya

Illustration: pharmacy inventory management in Kenya

A chemist lives or dies by what sits on its shelves

Thursday evening, just after the matatus start filling up. A mother walks into your chemist with a prescription for amoxicillin syrup for her daughter. You have it, good. You reach for the bottle, and out of habit you glance at the expiry printed on the box. Two months left. The one behind it has fourteen. If you had picked the back one first, that front bottle would have quietly died on the shelf, and its cost would have come straight out of your pocket.

Multiply that small moment by six hundred products, three distributors, a fridge with insulin in it, an M-Pesa till, a cash drawer, and two attendants who serve customers when you are away. That is pharmacy inventory in Kenya. It is not paperwork. It is the whole business.

Most chemists in Nairobi, Mombasa or Nakuru lose money in two silent ways: stock-outs that send a patient across the road, and expired medicine discovered too late, thrown away at full cost. Both are inventory problems, and both are fixable. This guide walks through what actually works: batches and expiry dates, reorder levels, shrinkage, cold-chain items, M-Pesa reconciliation, eTIMS, and what to do when Kenya Power takes the lights.

Batches and expiry dates come before everything else

People think they are buying a till. In a pharmacy, you are buying batch tracking, and the till comes free with it.

Every pack of medicine on your shelf belongs to a batch with its own expiry date. When goods arrive from the distributor, a proper system records the batch number and expiry for each line. From then on it guides you to dispense the earliest-expiring batch first. Pharmacists call this FEFO: first expired, first out. It sounds obvious. Almost nobody does it consistently by hand, because when the queue is long, whoever is serving grabs the nearest box.

The payoff is direct. Without batch tracking, an expiry is discovered when the stock is already worthless. With it, the system warns you weeks in advance, while you can still push the product, return it to the supplier, or pull it from the shelf. That is how digabloPos handles lots, and it is the first thing to test in any system you are considering. If the software cannot record a batch with its expiry date, stop the demo there. It was built for a duka, not a chemist.

Reorder levels are the cheapest insurance in this trade

Nothing damages a chemist’s name faster than not having paracetamol. Or an antimalarial during the long rains. Or the ARV refill a chronic patient has collected from you every month for two years. That patient does not come back next week to check. They find another chemist, and they stay there.

A reorder level fixes this quietly. For each product you set a minimum, and the system alerts you when stock drops below it, while there is still time to order. Set the levels from real sales, not from feeling: a fast mover needs a deep buffer, a product you dispense twice a year needs almost none. Ten minutes of setup per shelf, and the embarrassing question at the counter, do you have this, gets answered yes far more often.

Fast movers, slow movers, and the cash trapped between them

Overstocking is the quieter twin of the stock-out, and in a pharmacy it hurts twice. Money sitting on a shelf is money you cannot use to restock what actually sells, and medicine that sits too long walks steadily toward its expiry date.

A sales report that ranks your products tells you which group each one belongs to. Painkillers, antimalarials, cough syrups, antacids: these carry your turnover and deserve volume, which often also gets you a better price from the distributor. The slow movers deserve small, cautious orders, however persuasive the sales rep is about the carton discount.

The discipline is simple to state and hard to keep: stock deep on what moves, stock lean on what sleeps. A chemist who buys from numbers instead of memory almost always finds cash they did not know they had, sitting in slow stock bought a year ago.

The monthly expiry report

Once a month, print or open the list of batches expiring in the next ninety days. Decide product by product: dispense it first, return it to the distributor while the return window is open, or move it to quarantine. Thirty minutes, once a month.

Do this and expiries stop being an ugly year-end surprise. For most small pharmacies, cutting expiry losses adds more to the bottom line than any amount of chasing new customers, because every shilling saved there is pure margin.

Insulin, vaccines and the fridge

Some of your most expensive stock cannot survive a warm afternoon. Insulin, certain vaccines and a few biologicals must stay cold, and blackouts make that a genuine business risk, not a theoretical one.

Your software does not control the fridge, but your inventory habits protect what is inside it. Keep cold-chain quantities small and order more often. Watch these expiries tighter than anything else. Know exactly what is in the fridge, how many, expiring when, so that if the power stays off past what your fridge can hold, you know in one glance what is at risk and what it is worth. A backup plan, whether a small generator, an inverter, or an agreement with the chemist next door who has one, costs far less than one spoiled box of insulin pens.

Where does stock disappear to?

Every pharmacy owner eventually faces the uncomfortable count: the shelf says forty, the book says fifty-two. Shrinkage has three usual suspects: theft, sloppy recording, and expiry nobody logged. You cannot fix what you cannot see, and a paper system shows you nothing until stocktaking day.

When every sale is recorded against a product and a batch, the expected quantity is always known, and a gap between the system and the shelf becomes a number with a date on it, not a vague suspicion. Give each attendant their own PIN so that every sale, discount and cancellation carries a name. Then restrict the sensitive actions: attendants sell, but only you void a transaction, change a price or open the sales reports.

This is not about distrusting your staff. It is the opposite. When the count is short, the honest employees are the first to want the record that clears them.

Count the shelf, not just the screen

Even a good system drifts from reality if nobody checks it against the physical shelf. The fix is a rolling count: one shelf or one category per week, plus spot checks on high-value items like the cold-chain products.

Small, regular counts beat the giant annual stocktake every time. They catch problems while they are days old instead of months old, and they keep every other number honest. Your reorder alerts, expiry reports and margins are only as good as the stock figure underneath them.

Order from distributors with numbers, not memory

Most chemists buy from two or three distributors, prices shift, and cash is always tight. Two habits make ordering saner.

First, order from the sales history. The system already knows what left the shelf in the last four weeks, which is a far better guide than walking the aisles with a notebook and a feeling. Second, record purchase prices when goods arrive. Margins become visible per product, and so does the distributor who has been nudging prices up a few shillings at a time, hoping you would not notice.

When the delivery comes in, receive it into the system with each batch and its expiry date, and the stock updates itself. The order stops being a gamble and becomes a routine you could hand to someone else.

Every sale must touch the stock: M-Pesa and cash together

Inventory only stays true if every single sale reduces it. The moment the till and the stock book are two separate things, they start disagreeing, and the disagreement always grows.

In Kenya that means one system recording everything: the customer paying cash, the one paying on your Lipa na M-Pesa till number, the one splitting between the two. Record M-Pesa and cash as separate payment methods, never lumped together. At closing, the system tells you what should be in the drawer and what should be on the M-Pesa statement, and you compare each against reality. A shortfall shows up the same evening, on the right channel, instead of dissolving into the month’s totals.

One practical tip: put your till number on a card at the counter. Shouting it over the queue at lunchtime gets old fast.

eTIMS is easier when the records were clean all along

KRA requires most businesses to issue electronic invoices through eTIMS, and chemists are not exempt where they qualify. Confirm your exact obligations with your accountant, since they depend on your registration and turnover.

Here is the part that surprises people: if your sales system already records every transaction properly, eTIMS stops being frightening. The same clean history that runs your stock control is the history that satisfies an audit. Pharmacies that struggle with compliance are almost always the ones running on paper and memory, reconstructing figures after the fact. Treat clean records as one asset serving two masters: your stock and your taxman.

When Kenya Power takes the lights

A blackout hits, the router dies, and a patient is standing at your counter with a prescription. They will not come back when the network does. You dispense now or you lose the sale and maybe the patient.

So the software question to ask before any other: does it work fully offline? The right answer is that sales and stock movements are saved on the device itself, without internet, and sync on their own when the connection returns, losing nothing. digabloPos was built this way precisely because blackouts are not an edge case in this region; they are Tuesday.

Ask the vendor directly: if I have no internet for two days, what do I lose? If the answer contains any hesitation, keep looking. And keep the tablet on the same inverter as the fridge. Both are protecting your stock.

Recalls, quarantine and the PPB

Now and then the Pharmacy and Poisons Board recalls a batch, or a distributor flags one as defective. This is where batch tracking earns its keep a second time. Because the system knows which batches you received and which you dispensed, you can find the affected stock in seconds and see whether any of it already went out to patients. Compare that with searching shelf by shelf while customers wait.

Keep a physical quarantine spot, a labelled box or shelf away from sellable stock, for anything recalled, damaged or expired, and record those items out of stock in the system so nobody can dispense them by mistake. This is patient safety first, regulatory protection second, and both matter more in this trade than in any other kind of shop.

Three kinds of software, one honest question

The market splits into three groups. The big international pharmacy suites are complete on paper, priced for hospital chains, usually dependent on stable internet, and blind to M-Pesa and eTIMS. The generic tills and billing apps print a decent receipt but track no batches and no expiries, which for a pharmacy is disqualifying on its own. Then there are offline-first Android systems, digabloPos among them, built around exactly the problems described in this article: batches and FEFO, reorder alerts, M-Pesa and cash kept separate, and dispensing that continues through a blackout.

The honest question is not which software has the longest feature list. It is: which one tracks my batches, reconciles my M-Pesa, and keeps selling when the power goes? Everything else is decoration.

The mistakes that cost real money

The first mistake is buying a till without batch tracking, then discovering the gap when the first carton expires. The second is setting no reorder levels and finding out from a customer’s face that the amoxicillin is finished. The third is overbuying short-dated stock because the carton price looked good. The fourth is never counting, so shrinkage compounds in the dark for months. The fifth is choosing online-only software in a country where the power grid has opinions of its own.

Each of these has appeared earlier in this guide with its fix. None of the fixes is expensive. All of them are cheaper than the mistake.

What this costs in Kenya shillings

Start with hardware, because it is the honest cost. An Android tablet that runs a POS well costs somewhere around KES 15,000 to 25,000, and many chemists simply start on the phone already in their pocket. A thermal receipt printer runs a few thousand shillings. A barcode scanner, around KES 4,000 to 6,000, is worth every cent in a pharmacy where boxes all look alike and a dispensing mistake is the one error you cannot afford. Add a small inverter for the blackouts.

On software, an opinion: a chemist doing modest daily sales has no business paying KES 4,000 or 5,000 every month for a subscription before it has proven anything. Over a year that is the price of the tablet itself. The saner model is to start free on the essentials, selling, stock, batches, M-Pesa, and add paid modules one by one only when a real need shows up, at roughly KES 1,300 to 2,000 per module per month, cancellable any time. That is how digabloPos prices it. Put your first money into the scanner and the inverter, not into a subscription.

Where to start this week

Do not try to load six hundred products in one weekend. You will burn out on product forty and abandon the whole thing.

Start with your fifty fastest movers. Enter each with its current batches and expiry dates, one quiet evening, maybe two. Sell through the system for two weeks, keeping your exercise book running alongside if that reassures you. Then add the rest of the stock shelf by shelf, set reorder levels on the essentials, and give each attendant a PIN. Within a month the pharmacy is running on real numbers, and the monthly expiry report becomes a habit instead of a project.

The trial costs you nothing but those evenings. The carton of expired amoxicillin at the back of the store already cost you more.

Frequently asked questions

How do I track medicine expiry dates in my pharmacy?

Record every batch with its expiry date when goods arrive, and use a system that dispenses the earliest-expiring batch first (FEFO) and warns you weeks before a date falls due. Review the expiry report once a month so you can push, return or quarantine stock while it still has value.

How do I stop running out of common medicines?

Set a reorder level for each product based on its real sales, and let the system alert you when stock drops below it. Keep deeper buffers on fast movers like painkillers and antimalarials, especially ahead of the rainy seasons, and thin buffers on products that rarely move.

Can a pharmacy system record M-Pesa payments?

Yes, and it should record them separately from cash, not lumped into one total. At closing you compare the drawer against the expected cash and the M-Pesa statement against the expected M-Pesa, channel by channel, so a shortfall shows up the same evening.

Does it work during power cuts?

An offline-first system keeps selling with no internet: sales and stock movements are saved on the device and sync automatically when the network returns, with nothing lost. Keep the tablet charged or on the same inverter as your fridge.

Can I start for free?

Yes. digabloPos is free to start and covers the essentials a chemist needs: stock by batch and expiry, reorder alerts, and M-Pesa and cash recorded separately, all on an ordinary Android phone or tablet. Paid modules are optional and added only when you need them.

Try it in your pharmacy, free

Track batches and expiry dates, get reorder alerts, reconcile M-Pesa and cash, and keep dispensing through every blackout. digabloPos starts free on the Android device you already own.

Try for free