ERP & Odoo
Pharmacy stock software in Cameroon: batches, expiry and FEFO
Batches, expiry dates, FEFO versus FIFO, stock counts, returns and expired stock: what pharmacy software must handle in Cameroon, with a buyer’s checklist.
Contents (9 sections)
- Why can’t a pharmacy be run like a shop?
- Batches and expiry dates: what do you record at receiving?
- FEFO or FIFO: which rule should decide what goes out first?
- Stock counts: why count by batch, not just by product?
- Returns and expired stock: why a separate path?
- Which alerts actually matter?
- Checklist: which questions should you ask before choosing software?
- How can Nematek help?
- Frequently asked questions
A customer hands over a prescription. The software says there are twelve boxes in stock. On the shelf there are three, and two of them expired last month, hidden behind a newer delivery. The customer leaves without their treatment, and the pharmacy has just discovered, by chance, a loss it could not see.
This is not a tidiness problem. It is an information problem: stock was tracked by product, not by batch, and nobody knew which boxes would expire first.
This guide explains what pharmacy software really has to handle, from receiving goods to removing expired stock, and ends with a checklist to use before you buy anything.
Why can’t a pharmacy be run like a shop?
In a shop, one bag of sugar is as good as another. In a pharmacy, two boxes of the same medicine can belong to two different batches with two different expiry dates. Four requirements follow:
- Never dispense an expired product. That is a health issue before it is a money issue.
- Find a batch quickly, for instance when a product is recalled.
- Limit losses to expiry, which come straight off the margin.
- Control prices, discounts and stock adjustments, so that every movement has someone accountable for it.
Generic point-of-sale software rarely covers the first three, and often handles the fourth poorly. Pharmacy software has to cover all of them.
Batches and expiry dates: what do you record at receiving?
It all starts at receiving. For each line delivered, you record the batch number and the expiry date printed on the box or the delivery note. If this is done later, or “when there is time”, the whole system is built on sand.
Once batches are recorded, stock is known by product and by batch. Good software adds two dates calculated from the expiry date:
| Date | What it triggers |
|---|---|
| Alert date | The batch appears on the list of products to watch |
| Removal date | The batch must leave sellable stock |
| Expiry date | The batch can no longer be dispensed |
In Odoo, for example, these dates are set per product, as a number of days before expiry, once lot tracking and expiration dates are switched on.
FEFO or FIFO: which rule should decide what goes out first?
Two rules compete to decide which batch leaves first.
- FIFO (first in, first out): sell first what arrived first.
- FEFO (first expired, first out): sell first what expires soonest.
The difference sounds subtle. It is not. Take two batches of the same product, with dates chosen for the example:
| Batch | Received | Expires |
|---|---|---|
| Batch A | 10 January | 31 March of the following year |
| Batch B | 5 February | 30 September of the same year |
Under FIFO, batch A goes first because it arrived first. Meanwhile batch B, which arrived later but has a shorter life, edges towards expiry. Under FEFO, batch B goes first: it has the least time left, so it has the best chance of selling before it expires.
The World Health Organization’s good storage and distribution practices for medical products call for stock to be rotated on the FEFO principle. In Odoo, the FEFO removal strategy automatically picks the batches with the nearest removal date.
One part stays human: the software can point to the right batch, but the shelf has to follow. The boxes that expire soonest go at the front, at every delivery.
Stock counts: why count by batch, not just by product?
The annual count is not enough. It finds discrepancies too late to understand their cause. The most effective method is a rolling count: every week you count part of the stock, starting with products that are expensive, fast-moving or short-dated.
For a count to be worth doing:
- Count by batch: product, batch number, expiry date, quantity.
- Count blind, without seeing the expected quantity, so it cannot sway you.
- Recount discrepancies with a second person before correcting anything.
- Approve every adjustment with a reason: breakage, receiving error, suspected theft, sales error.
- Review the reasons every month. The same gaps on the same products point to a process problem.
Who can adjust stock? As few people as possible, and never the person who did the count. Every adjustment must stay on record, with its author and date.
Returns and expired stock: why a separate path?
A product that leaves the normal flow must never end up back in sellable stock by mistake. The answer is a separate quarantine location that the software excludes from sale.
Returns from patients. WHO good practices say that returned products should be placed in quarantine on receipt, and destroyed unless it is certain that their quality is satisfactory. A medicine brought back does not go back on the shelf without assessment by a qualified person.
Returns to suppliers. Some suppliers take back short-dated products under the terms agreed with them. The software must record that return against the batch concerned, so that stock and the supplier invoice stay correct.
Expired stock. The batch leaves sellable stock on its removal date, goes into quarantine, then is destroyed under the applicable procedure. Keep the records for every disposal: product, batch, quantity, date, person responsible.
Track the value of expired stock every month, too. It is the most direct measure of how well you buy and rotate.
Which alerts actually matter?
Software that sends fifty alerts a day sends none: nobody reads them. Four alerts are enough, provided someone acts on them.
- Expiry approaching: the batches that have reached their alert date, reviewed weekly with a decision for each.
- Stock-out and reorder point: a minimum per product, based on actual consumption rather than gut feeling.
- Overstock: products whose stock far exceeds what you sell over the period you choose.
- Unusual movements: adjustments, discounts and cancellations out of the ordinary, by user.
Checklist: which questions should you ask before choosing software?
- Does receiving require the batch number and expiry date?
- Does the software apply FEFO when stock goes out?
- Can alert and removal dates be set per product?
- Is there a quarantine location excluded from sale?
- Are counts done by batch, blind, with a reason for each adjustment?
- Can you find all the stock of a given batch within minutes?
- Are permissions set by role: who changes a price, gives a discount, adjusts stock?
- Does the till keep working during an Internet outage?
- Do reports show the value of expired stock, the margin and the movement history?
- Can your data be exported if you ever change systems?
- Is training planned for every role, in French or English?
How can Nematek help?
Nematek One Pharmacy, our pharmacy management software, covers products, units, batches and expiry dates, batch receiving, FEFO and stock counts, the till with returns, discounts and controlled pricing, expiry, stock-out and overstock alerts, and roles and audit reporting. Nematek provides the management tool: you remain responsible for the authorisations, pharmacy procedures and regulatory obligations that apply to your premises.
Our pharmacies page sets out the problems we address in this trade, and our Odoo ERP services page explains how we run a project. To get started, describe your pharmacy in a free assessment request.
Frequently asked questions
What is the difference between FEFO and FIFO?
Under FIFO, the first batch to arrive is the first to go out. Under FEFO, it is the batch that expires soonest. For medicines, FEFO prevents a batch that arrived later, but with a shorter life, from expiring on the shelf.
Do we have to enter the batch number at every sale?
It depends on the setup: the software can suggest the batch under FEFO, or ask for it to be scanned. Either way, the batch must be recorded at receiving, or no removal rule can work.
How often should we count stock?
A rolling count every week on part of the stock, starting with expensive, fast-moving or short-dated products, plus the full count your accountant requires.
What should we do with expired medicines?
Remove them from sellable stock on their removal date, put them in quarantine, then follow the applicable disposal procedure and keep the records. The software should trace every step.
Does software guarantee regulatory compliance?
No. Software gives you the traceability you need to demonstrate your practices. Authorisations, pharmacy procedures and regulatory obligations remain the pharmacy’s responsibility.
Update history
- Odoo documentation links moved to version 20 after checking expiry dates and the FEFO strategy; WHO references rechecked.
Only a change of substance moves the update date; a re-read with nothing to change moves only the “Checked” date. Something looks out of date? Tell us.
Sources
Sources checked
- expiration dates odoo.com
- good storage and distribution practices for medical products who.int
- FEFO removal strategy odoo.com
Become a Nematek ambassador — free application and free training. You present Nematek One solutions and follow each customer through to the signed contract; your commission is paid once the solution is deployed and the customer has paid.
