
Uganda · Pharmacy
A pharmacy till that knows its batches
A pharmacy's stock is not interchangeable. Two boxes of the same product with different batch numbers and different expiry dates are different stock, and treating them as one number is how expired product ends up dispensed.
Then there is how it is actually sold. A customer buys six tablets, not a box of thirty. The shelf holds boxes; the counter sells strips and tablets; and the stock figure has to survive both.
On top of that, a Ugandan pharmacy is a licensed business under the National Drug Authority with a filing obligation through EFRIS — so what it can prove about its stock and its sales matters more than it does in general retail.
What you get
What a pharmacy in Uganda actually needs
Batch numbers and expiry dates
Stock held per batch with its own expiry. The oldest batch is the one that sells, so short-dated product leaves the shelf in time rather than becoming a write-off.
Expiry reports with a horizon
What expires in 30, 60 and 90 days, ranked by value. A return-to-supplier or a clearance decision made with three months' notice recovers most of the cost; made on the day, it recovers nothing.
Dispensing by strip or tablet
Buy in boxes, sell in strips or units, and have the stock figure stay correct in both. The unit conversion lives on the product rather than in somebody's head.
Multiple names for one product
Generic name, brand name and the name the customer actually asks for, all finding the same item at the counter — because a locum who does not know your shelf still has to serve the queue.
Customer history
What a returning customer was given and when, for repeat purchases and for the conversations that follow them.
EFRIS-ready sales detail
Every sale held as lines with units and tax treatment, buyer TIN where an invoice is needed, and exports per period — the data an EFRIS document is raised from.
NDA licensing, EFRIS, and what your records have to show
A pharmacy in Uganda operates under National Drug Authority licensing, and the licence carries expectations about what you stock, how it is stored and what you can account for. The practical consequence for a POS is not that the software is regulated — it is not — but that the business has to be able to answer questions about specific product, in specific batches, that a general retail stock figure cannot answer.
Separately, if the business is VAT-registered it issues through EFRIS, and the filing wants lines rather than totals: the item, the quantity, the unit and the tax treatment. Pharmacy makes the unit question harder than most trades, because the unit you buy in and the unit you sell in are routinely different.
sell.ke keeps batch and expiry on the stock itself, keeps a unit conversion on the product, and holds every sale at line level with its tax category. It does not transmit to URA and it is not an NDA system of record — Kenya's eTIMS is the only revenue-authority integration the platform ships. What it gives you is the ability to answer the question precisely, whoever is asking.
- Stock identifiable by batch and expiry, not just by product
- Purchase and dispensing units reconciled on the product
- Line-level sales with tax treatment, ready for an EFRIS document
- A named, timestamped audit trail on adjustments and write-offs
A short-dated batch, caught in time
A Kampala pharmacy receives 40 boxes of an antibiotic at UGX 18,500 each — UGX 740,000 of stock — and the delivery includes two batches, one expiring in five months and one in fourteen.
Received by batch, the short-dated 16 boxes are flagged the moment they arrive. They sell first by default, because the till picks the oldest batch. At 90 days out, nine boxes remain and appear on the expiry report at a value of UGX 166,500: still early enough to move them with a modest discount, or to raise a return with the supplier while a return is still a conversation rather than a favour.
Without batch tracking, the same delivery is 40 boxes of one product. The newest boxes sit at the front, the short-dated ones migrate to the back of the shelf, and the loss is discovered on the day the stock becomes unsellable — a full UGX 166,500 written off, plus the disposal, plus the risk that somebody dispensed from the wrong box in the meantime.
The six-tablet sale works the same way: a box of thirty is held as thirty units, so dispensing six takes six off that batch and leaves twenty-four. The shelf, the system and the invoice agree.
Questions
Pharmacy in Uganda — questions
Can it track batch numbers and expiry dates?
Yes — that is the core of it. Stock is held per batch with its own expiry date, the oldest batch is dispensed first by default, and expiry reports show what is coming due at 30, 60 and 90 days, ranked by value. Write-offs are recorded as write-offs with a name against them, so your stock position stays defensible.
We sell by the strip and the tablet but buy by the box. Does that work?
Yes. The conversion lives on the product, so a box of thirty is held as thirty units and dispensing six leaves twenty-four. You buy in the unit the supplier invoices and sell in the unit the customer asks for, and the stock figure stays right in both.
Does sell.ke file my EFRIS invoices?
No. It holds every sale at the line detail an EFRIS document needs — item, quantity, unit, price, tax treatment, buyer TIN — and exports it per period, so raising the document is a transfer of data rather than a reconstruction. KRA eTIMS in Kenya is the only revenue-authority integration the platform ships.
Can a locum find a product they do not know?
Products can carry a generic name, a brand name and the name customers actually use, all searching to the same item. It matters most on the counter nobody senior is standing behind, which is exactly when a slow search becomes a lost sale or a wrong product.
What if the internet goes down?
The till keeps dispensing. Sales, receipts and stock movements all continue offline and sync when the connection returns. The batch logic runs locally too, so an offline sale still comes off the correct batch.
Do I need internet?
Not to keep selling. Offline mode lets the till take sales, print receipts and reserve stock while the connection is down, then syncs everything when it returns. You do need connectivity for the parts that are inherently online: an M-Pesa STK push, an eTIMS submission and the online shop all need a live link.
How long does setup take?
A single-counter duka is usually selling the same day. The work is the product list, not the software: import a CSV or let Amina create products from a supplier invoice or a photo of your price list. A multi-branch business with thousands of SKUs, opening stock counts and an eTIMS enrolment should plan a week and run the old system in parallel for a fortnight.
Can I stop staff from giving discounts or deleting sales?
Yes. Discounts, voids and refunds sit behind a manager PIN, and every one of them records who authorised it and when. Staff accounts carry role permissions, so a cashier can sell without seeing cost prices, editing products or opening reports. A void that reverses stock is a movement in the audit trail, not a gap in it.
Other trades in Uganda
Supermarket POS (Uganda)
Two rails at every till, thousands of SKUs, and an EFRIS filing that wants the lines.
Restaurant POS (Uganda)
Orders to the kitchen, recipes that deduct stock, and a MoMo split bill that still reconciles.
Hardware shop POS (Uganda)
Contractors on credit, cement by the bag, and a B2B invoice that needs a TIN on it.
The features this leans on
Each one goes deeper than this page does.
Stock you can trust
Batch and expiry, serial numbers, reorder levels, stock takes and the formulas behind them.
Selling at the counter
Split payments, held orders, manager-gated discounts and a drawer count that reconciles.
Customers and loyalty
Credit accounts that do not go missing, loyalty that returns, and a debtor list you can actually chase.
Reports and real accounting
Double-entry books — trial balance, P&L, balance sheet — not a CSV export to somebody else's software.
Pharmacy POS in other markets
Pharmacy POS (Tanzania)
Batch and expiry for a TMDA-regulated shelf, dispensing by unit, fiscal receipt at the counter.
Pharmacy POS (Rwanda)
Batch and expiry, insurance-split payments, and a stock position EBM can be reconciled against.
Pharmacy
Batch numbers and expiry dates, the expiry report, dispensing by strip or tablet.
What this actually fixes
The problems underneath, and the rails and revenue authority you deal with.
Dead stock and expiry
The shelves are full and the bank is empty. That is not a coincidence.
Stock takes that close the shop
Counting everything on a Sunday finds the loss months late. Count less, far more often.
Stock going missing
Why shrinkage is almost never one big theft, and what actually closes the gap.
EFRIS and your POS (Uganda)
Every sale held at the line detail a URA e-invoice needs, before you go to file it.
MTN MoMo at the till
Every MoMo payment attached to the sale that earned it, instead of a statement you read at night.
Try it in your Uganda shop
Fourteen days, no card, no hardware to buy. Your prices, stock, costs and reports all run in UGX.