AWRA OpsHub Search

Pharmacy Expiry Management: FEFO, Horizon Reports & Supplier Returns

Expired stock is money you dispensed into a disposal drum — FEFO discipline, expiry horizon reports, supplier return windows, and the purchasing habits that stop expiry at the source.

Healthcare & Clinics Washingtone Aura Updated 8 min read

Every pharmacy loses money to expiry; the difference between facilities is whether they know how much. Ask a Kenyan clinic what expiry cost them last year and you get an estimate ranging from a shrug to "a few thousand". Then a proper batch-tracked year runs and the real number lands — routinely 3–8% of drug spend, disposed of at additional cost, with compliance paperwork attached. Expiry is not bad luck. It is a purchasing and rotation failure with a paper trail, which means it is fixable.

Where expiry actually comes from

Cause Share of the problem The fix
Over-purchasing slow movers The biggest single cause Order against consumption data, not against "we usually take a box"
No rotation (FIFO instead of FEFO) The silent killer Issue by earliest expiry, enforced by the system at dispensing
Short-dated deliveries accepted Common and invisible Minimum remaining shelf-life rule at receiving — refuse or negotiate
Program/donated stock pushed in bulk Episodic but large Flag at receipt; redistribute early via the program's own channels
Nobody watches the horizon The enabler of all of it A 30/60/90-day expiry report that someone owns

FEFO: first-expiry, first-out

FIFO — issuing the oldest received batch — feels right and quietly fails: a later delivery can carry an earlier expiry. FEFO issues whatever expires soonest, regardless of arrival order. In practice that requires three things: batch and expiry captured at receiving, shelf arrangement that puts short-dated stock in front, and a dispensing system that recommends the batch — because under queue pressure, humans grab the nearest box.

The expiry horizon routine

  • 90 days out: flag the batch. Can consumption absorb it? If not, act now — move it to the front, use it in the busier stream, or start the supplier return conversation while the return window is open.
  • 60 days out: transfer between branches or sister facilities where demand exists; short-dated stock in the right place is medicine, in the wrong place it is waste.
  • 30 days out: final push — clinician awareness for equivalent prescriptions where clinically appropriate, or documented supplier return.
  • Expired: quarantine immediately, record the write-off with batch and value, and dispose per pharmacy board requirements with certificates kept. Expired stock on dispensing shelves is a license conversation.

Negotiate the return clause

Distributors vary widely on returns: some accept stock 60–90 days before expiry for credit, others refuse everything once it leaves their van. Make return terms part of supplier selection — a slightly costlier distributor with real return terms is often cheaper per dispensed unit than the discounter whose short-dated deliveries you eat.

Buy your way out of expiry

  • Order slow movers monthly in small quantities even when the case price tempts — the "discount" on a case you half-dispose of is negative.
  • Check remaining shelf life at receiving against a written minimum (commonly 75–80% of total shelf life, or a fixed 12-month floor for slow movers).
  • Watch pack sizes: the 1,000-tablet tin nobody finishes is how savings become disposal fees.
  • Review the consumption-vs-order report quarterly — the items where ordering exceeds dispensing are your next expiry write-offs, visible early.

Expiry control is one weekly report and a set of habits on top of the batch discipline described in the clinic inventory guide — and it is one of the fastest paybacks in a proper facility system: most clinics recover the software cost from prevented expiry alone.

The expiry machinery in this post is one of the parts we can genuinely run

What AWRA OpsHub does today

  • Batch, lot and serial tracking — expiry date, supplier and originating purchase order recorded on every batch, with serial numbers where you need them.
  • FEFO allocation — issues take the soonest-expiring batch first, in the query rather than by instruction — plus a Batch Expiry report with a selectable horizon and the value at risk.
  • The horizon report is configurable — pick the window, see expired and soon-to-expire batches with days remaining, quantity on hand and value at risk, exportable.
  • Quarantine is enforced. Expired stock moved to a hold status cannot be issued or sold, and disposal writes an adjustment recording the quantity, the reason, a note and the person — the write-off record a pharmacy board inspection asks for.
  • Stock transfers between locations and branches, for the 60-day move this post recommends.
  • Daily expiry alerting — shipped 2026-08-01, after this post was first written. A scan emails the 30/60/90-day horizon with the value at risk, bucketed with expired batches first, excluding batches whose stock has already been issued, and fires a `Batch expiring` workflow event so you can automate a response even with the mail muted. Its cadence and opt-out now sit with the other notification settings.
  • Consumption-versus-ordering visibility through purchase history per item and supplier.

More we can add to your workspace

  • A scheduled job that quarantines a batch the day it expires. The report names it today and a person places the hold.
  • A shelf-life check at receiving. You cannot set a minimum remaining shelf life — 75%, or a twelve-month floor — and have receiving warn or block. Remaining life is visible, not enforced.
  • A supplier return window. Return terms are not a field on the vendor, nothing counts down to the deadline, and no credit is tracked against a return.
  • Disposal certificate handling beyond attaching a file to the adjustment.
  • Structured test results, with pass/fail thresholds the system evaluates. A certificate of analysis is an attachment today.

This is the healthcare post we can back most fully. Batch discipline, FEFO issuing, the horizon report, the daily alert and enforced quarantine are all real, and a facility could run the routine described here from next week. The honest note is the item at the top of the middle column: the alert tells you a batch is expiring and a person still places the hold, so past-date stock stays issuable until somebody acts.

More we can add to your workspace

Anything above that you need, we can build for you

Everything listed above as something we can add describes what ships in the standard product today — it is a starting point, not a limit on what AWRA OpsHub can do for your organisation. Kenya's eTIMS integration and its maintained payroll engine are both in the product because clients needed them and commissioned them; neither appeared by itself, and the same door is open for whatever you just read about. One qualification so this is worth what it claims: a small number of things on this blog we deliberately leave to a specialist rather than build — a statutory ledger we will not sign our name to, a rule that would decide a tax question for you, a clinical or member-funds record that belongs in a regulated system — and where that is true the post says so in those words. Everything else is a scope, a timeline and a price.

The operational work, which is what most commissions actually are

An extra approval stage in a chain that does not match the standard one, a custom field set on employees or assets that only your sector needs, an expiry that has to block an order rather than send an email, a report your board asks for in a shape nothing produces, or a scanner or weighbridge feeding the goods-in door. These are the commissions we are asked for most often and the smallest ones we quote — and unlike a revenue-authority pipeline, none of them waits on a regulator.

The module-shaped additions, which are the ones readers ask for most often

A price list with real discount authority, a customer-facing quotation that expires, a bill of materials or recipe costing, a staff advance that is issued, acquitted and chased, a member or unit ledger, a matching rule that holds a payment. Each of these is a build rather than a setting, and each has been quoted before — a bigger piece of work than a custom field, with a written spec and a date instead of a roadmap slide.

The report, document or pack nothing currently produces

The board pack in the shape your board actually asks for, a donor or funder layout, an invoice or receipt template carrying what your regulator or your customer expects, a dataset the report builder cannot reach yet. Usually the fastest thing on this list to deliver, because the data is already in the system.

Systems, rails and hardware you already run

The accounting package, CRM, online store, core banking or custom database you intend to keep — connected through our API so a fact is entered once and appears everywhere it is needed. Plus the physical edge: a scanner, a scale, a weighbridge or a till peripheral feeding the door it belongs to.

How it works: you describe the requirement, we return a written scope, timeline and cost, and once agreed it is built into your environment and maintained as part of the product. Nothing here waits on a regulator or a published specification, which is why operational builds are the ones we quote fastest. Tell us the requirement that would otherwise rule us out — that is a better first conversation than a demo.

Tell us what your operation needs

Know your expiry number

Batch tracking, FEFO issuing, a configurable expiry horizon report with value at risk, daily 30/60/90-day alerting and enforced quarantine on expired stock. The receiving-time shelf-life rule is not built — see the note above.

See expiry control in AWRA

Frequently asked questions

Is FEFO legally required in Kenya?

Rotation and expiry control obligations flow from Pharmacy and Poisons Board good-practice requirements — expired stock on shelves and poor records are inspectable findings. FEFO is the operational method that keeps you compliant by default rather than by pre-inspection cleanup.

What do we do with stock that expires despite everything?

Quarantine it physically and in the system, record batch, quantity, and value as a write-off, and dispose through licensed channels with certificates retained. The write-off record matters: it is both compliance evidence and the data that fixes next year's purchasing.

Can we sell short-dated stock at a discount like retail does?

Within clinical appropriateness, prioritizing short-dated batches for equivalent prescriptions is legitimate FEFO practice. Price-discounting prescription medicine to move it raises both ethical and regulatory flags — the better lever is redistribution to where demand exists.

How much buffer stock is right if we also fear stockouts?

Set reorder points from consumption velocity and supplier lead time per item, not one blanket policy — fast movers carry generous buffers cheaply (they will be used), slow movers carry minimal stock because their buffer is where expiry lives. The stockout log and the expiry report together tune the balance.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center