Software Guides

How to Track Drug Expiry and Lot Numbers Without Losing Stock to Waste

Learn how FEFO stock rotation, batch/lot tracking, and configurable expiry alerts stop expired-drug write-offs from eating your pharmacy's margin in Nigeria.

Back to Intelligence
Share This Dispatch

Every pharmacy owner has done the walk down the shelf with a torch or a phone light, checking expiry dates one pack at a time, only to find a batch that quietly went bad three weeks ago. That stock isn't just unsellable — it's a straight write-off against a margin that was already thin to begin with. Spreadsheets and memory work fine at ten SKUs; they fall apart at a thousand, across multiple shelves, with new deliveries arriving weekly and staff turnover eating institutional knowledge. And in Nigeria specifically, expired or improperly tracked drugs aren't just a financial problem — they're a NAFDAC compliance and patient-safety issue that can put your license at risk.

Quick Answer

The fix is structural, not a stricter checklist: track every product at the batch/lot level (not just SKU level), enforce FEFO — first-expire-first-out — stock rotation so older-expiring batches always sell before newer ones regardless of when they arrived, and run configurable expiry alerts (typically at 90/60/30 days out) so staff act before stock goes bad, not after. Batch-level tracking also means that if a specific lot is recalled, you can isolate exactly which units are affected instead of pulling an entire product line. Software that ties FEFO, lot tracking, and NAFDAC-number records together at the point of sale removes the manual date-checking that inevitably breaks down as a pharmacy scales past a shelf a person can personally inspect every morning.

What Expired Stock Actually Costs a Pharmacy

Pharmaceutical retail already runs on comparatively thin margins — commonly cited in the 20-35% gross margin range — which means waste doesn't just dent revenue, it eats directly into what's left over after cost of goods. Every expired pack is inventory you already paid for, in cash that's now gone twice: once when you purchased the stock, and again as lost shelf space that could have held something that actually sold. Unlike a slow-moving item you can eventually discount and clear, an expired drug in Nigeria typically can't be legally sold at any price — it has to be destroyed or returned to the supplier, if your supplier agreement even allows returns.

The insidious part is that expiry waste is rarely one dramatic loss. It's a slow drip — a few packs here, a forgotten box behind faster-moving stock there — that's easy to underestimate because no single write-off looks catastrophic. Add it up over a year across a full shelf inventory and it's commonly one of the largest controllable drags on pharmacy profitability, right alongside theft and pricing errors. The word "controllable" matters: unlike demand shocks or currency swings, expiry waste is almost entirely a process problem, which means it's fixable with the right stock discipline.

FEFO vs. FIFO: Why "First In" Isn't the Right Rule for Pharmacy

Most retail and warehouse operations run on FIFO — first-in-first-out — where the oldest-received stock sells first. That works fine for products where "received first" reliably correlates with "expires first." Pharmacy breaks that assumption constantly: a new delivery can easily contain a batch with a shorter remaining shelf life than stock you already have on the shelf, especially when suppliers ship whatever batch is currently in their own warehouse rather than the newest-manufactured one.

FEFO — first-expire-first-out — fixes this by rotating stock based on the actual expiry date printed on the batch, not the date it arrived at your pharmacy. In practice this means:

  • New deliveries get checked against existing stock's expiry dates before being shelved, and placed behind (not automatically in front of) older-expiring stock if their own dates are later.
  • At the point of sale, staff pick from the batch expiring soonest first — ideally enforced by the system rather than left to memory.
  • A pharmacy can be perfectly disciplined about "sell oldest stock first" by receipt date and still lose money to expiry, because FIFO and FEFO only produce the same result when every batch's expiry date lines up neatly with its arrival order — which, in real pharmaceutical supply chains, it often doesn't.

FEFO only works if you actually know each batch's expiry date at the point of sale, not just at the point of receiving — which is where batch/lot-level tracking becomes the enabling layer underneath it, not a nice-to-have on top.

Why Batch/Lot Tracking Matters Beyond Expiry Alone

It's tempting to think of lot tracking purely as an expiry-management tool, but its second job — recall response — is arguably just as important and gets far less attention until the day it's needed. A drug recall isn't hypothetical in pharmaceutical retail; manufacturers and regulators issue them for contamination, mislabeling, potency issues, and manufacturing defects. When a recall notice names a specific batch or lot number, the question you need to answer immediately is: do we have that exact batch, and if so, how many units, and did we already sell any?

Without lot-level records, that question can only be answered by physically checking every pack of that product on your shelf — assuming the batch/lot number is even visible without opening sealed boxes. With lot tracking baked into inventory from the point of receiving, the answer is a lookup, not a shelf-by-shelf search. That's the difference between a controlled, fast recall response and a chaotic one, and it's also frequently what a regulator or inspector will specifically ask to see evidence of.

Stop Losing Stock to Expiry

ClinikEHR Pharmacy tracks every product by batch and lot number, enforces FEFO at checkout, and sends configurable 90/60/30-day expiry alerts — so write-offs stop being a surprise.
Explore ClinikEHR Pharmacy
4.9/5 Rating
No credit card required • 7 days free

NAFDAC Numbers and Lot Tracking: Two Different Records That Belong Together

A NAFDAC registration number confirms that a product is approved for sale in Nigeria — it's a product-level identifier, not a batch-level one. A batch/lot number identifies which specific production run a given pack came from. These are complementary, not interchangeable: two packs of the same NAFDAC-registered product can come from two different manufacturing batches with two completely different expiry dates and, in a recall scenario, two completely different recall statuses.

Keeping both on the same product record matters for two practical reasons. First, it's what lets a pharmacist quickly confirm a product is genuinely NAFDAC-registered (a real counterfeit-drug safeguard) while also seeing the batch-specific detail — expiry date, quantity on hand, quantity sold — needed for day-to-day stock decisions and recall response. Second, when a regulator or auditor reviews your records, having NAFDAC number and lot/batch data tied together on every product, rather than scattered across paper delivery notes and a separate expiry logbook, is what makes an inspection go smoothly instead of turning into hours of manual reconciliation.

How ClinikEHR Pharmacy Handles Expiry and Lot Tracking

ClinikEHR Pharmacy builds batch/lot tracking and FEFO into the core inventory workflow rather than treating them as an add-on report you run occasionally:

  • Batch and lot tracking on every product — stock is recorded at the batch level from the point of receiving, not just as a total quantity against a product name.
  • FEFO stock control — the system prioritizes older-expiring batches for sale, reducing reliance on staff memory or manual shelf checks.
  • Configurable expiry alerts at 90/60/30 days out, so staff have real lead time to discount, prioritize, or return soon-to-expire stock instead of discovering it's already gone bad.
  • NAFDAC number tracked on every product record, alongside batch/lot data, keeping compliance information and stock-level detail in one place.
  • Low-stock and reorder alerts that work alongside expiry alerts, so you're managing both "running out" and "going bad" from the same dashboard.
  • Returns with a configurable window and inspection workflow, useful when soon-to-expire or defective stock needs to go back to a supplier.
  • Accounting and profit reports (daily/weekly/monthly/yearly, with Excel export), so you can actually see how much waste is costing you over time instead of guessing.

It also includes barcode checkout (reading NAFDAC/EAN barcodes), offline-first POS so tracking keeps working through connectivity gaps, in-branch stock transfers, purchase order and supplier management, and credit sales with a debtor balance ledger — the full operational layer around inventory, not just the expiry piece in isolation.

Pricing: Starter is $38/month (₦60,000/month) for 5 staff and 1 branch. Professional is $60/month (₦95,000/month) for 12 staff and 1 branch. Business is $95/month (₦150,000/month) for 25 staff and 3 branches included. Enterprise pricing is custom for larger networks. Annual billing gets 2 months free, and Nigerian pricing shown is VAT (7.5%) exclusive.

Frequently Asked Questions

What's the actual difference between FEFO and FIFO for a pharmacy? FIFO (first-in-first-out) sells stock in the order it was received. FEFO (first-expire-first-out) sells stock in the order it expires, regardless of when it arrived. They usually overlap but not always — a new delivery can contain a batch expiring sooner than stock already on your shelf, and FIFO alone won't catch that. Pharmacy inventory should be managed by FEFO specifically, using FIFO only as a fallback when two batches share the same expiry date.

How do expiry alerts actually work — do I have to check them manually every day? Expiry alerts run against the expiry date recorded on each batch and surface products approaching a configured threshold — typically 90, 60, and 30 days out — as a dashboard view or notification rather than something you have to go looking for. The 90-day window gives you time to plan a promotion or prioritize selling that batch; the 30-day window is a final warning to act (discount, transfer to a higher-turnover branch, or initiate a supplier return) before the stock becomes unsellable.

What actually happens during a drug recall if I have lot tracking versus if I don't? With lot tracking, a recall notice naming a specific batch number becomes a direct lookup: you can immediately see whether you hold that batch, how many units are in stock, and how many were already sold (useful if you need to notify specific customers). Without lot-level records, you're left physically checking every pack of that product against the recalled batch number, which is slow, error-prone, and harder to prove to a regulator that you actually completed.

Can staff override FEFO picking and manually choose a different batch at checkout? In practice, most systems that enforce FEFO do so as a default recommendation at the point of sale rather than a hard, un-overridable block — a pharmacist may occasionally need to sell a specific batch for a legitimate reason (a customer request, a batch nearing its final days that needs to move fast). The point of FEFO enforcement is to make the correct default the path of least resistance, not to remove professional judgment entirely.

Does batch/lot tracking software replace physical stock audits? No. Software tracking tells you what the system believes is on hand and when it expires; physical audits confirm that what's actually on the shelf matches those records — catching data-entry errors, theft, damage, or misplaced stock that software alone can't see. The two are complementary: good batch tracking makes physical audits faster and more targeted (you can spot-check specific batches rather than counting everything blind), but it doesn't eliminate the need for periodic physical counts.

Does tracking batch/lot numbers slow down receiving new stock? It adds a step at receiving — recording the batch number and expiry date against each product — but this is typically a one-time entry per batch rather than per unit, and most of that information is already printed on the supplier's delivery documentation and the product packaging itself. The time cost at receiving is generally far smaller than the time (and stock) lost later doing manual shelf-by-shelf expiry checks or a chaotic recall search.

Is NAFDAC number tracking the same thing as batch/lot tracking? No — they're related but different. A NAFDAC number confirms a product is registered for sale in Nigeria and stays the same across every batch of that product ever manufactured. A batch/lot number identifies one specific production run of that product, with its own expiry date and, if applicable, its own recall status. A pharmacy needs both recorded, ideally on the same product record, since compliance and stock-level decisions each depend on one or the other.

How far in advance should I set my longest expiry alert window? A common pattern is layering alerts at 90, 60, and 30 days, but the right longest window depends on how fast a given product category typically moves in your pharmacy — slow-moving or seasonal stock benefits from an earlier first warning than a fast-turnover product where 30 days is plenty of lead time. The goal of the earliest alert isn't panic, it's giving you enough runway to act — discount, promote, transfer, or return the stock — before the shorter windows turn into a forced write-off.

Conclusion

Expired stock is one of the quietest ways a pharmacy loses money — no single write-off looks dramatic, but across a full year of shelf inventory it becomes a meaningful, and entirely controllable, drag on already-thin margins. The fix isn't more vigilance from already-busy staff; it's structural: track stock at the batch/lot level, let FEFO — not FIFO or memory — decide what sells first, and set expiry alerts with enough lead time to actually act.

Key takeaways:

  • Expiry waste directly erodes pharmacy gross margin, and unlike slow-moving stock, expired drugs typically can't be discounted and sold — they're a straight loss.
  • FEFO (first-expire-first-out) is the correct rotation rule for pharmacy, because arrival order and expiry order don't reliably match in real supply chains.
  • Batch/lot tracking does double duty: it powers FEFO and it's what makes a drug recall a fast lookup instead of a shelf-by-shelf search.
  • NAFDAC numbers and batch/lot numbers are different, complementary records — both belong on the same product record for compliance and stock decisions.
  • ClinikEHR Pharmacy builds batch/lot tracking, FEFO stock control, and configurable 90/60/30-day expiry alerts into the core inventory workflow.

Explore ClinikEHR Pharmacy — see how batch tracking, FEFO, and expiry alerts work together to protect your margin.

Want help setting this up for your pharmacy? Talk to a consultant for free, personalized guidance.

Related Resources:

Stay in the loop

Subscribe to our newsletter for the latest updates on healthcare technology, HIPAA compliance, and exclusive content delivered straight to your inbox.

Weekly updates
Healthcare insights
HIPAA updates
Subscribe to our Newsletter
Join over 100,000 healthcare professionals

We respect your privacy. Unsubscribe at any time.