Inventory practice
Published May 1, 2026 · Updated May 13, 2026
FEFO expiration tracking — what it is, why pharmacies need it, what to look for.
FEFO stands for First Expired, First Out. It's the inventory rotation principle that says you dispense (or pull, or use, or return) the package that expires soonest, regardless of when it arrived on your shelf. For pharmacies, FEFO is non-negotiable — and the tools that surface it cleanly are surprisingly hard to find.
FEFO vs FIFO
Most general inventory systems are built around FIFO (First In, First Out): the oldest received stock leaves first. That's fine for non-perishable goods, but it's wrong for pharmaceuticals. Two scenarios:
- You receive a 12-month-dated bottle in January. In March, you receive a 6-month-dated bottle from a different shipment. Under FIFO, the January bottle goes out first; under FEFO, the March bottle goes out first because it expires sooner.
- Your wholesaler ships short-dated stock at a discount (this is common — it's how they recover cost on inventory they can't sell at full margin). FIFO would have you using older stock first; FEFO correctly prioritizes the short-dated discount stock so you don't end up writing it off.
FIFO and FEFO produce the same answer when expiration dates correlate cleanly with arrival date, which they don't, especially in a pharmacy where you're juggling lot rotations, manufacturer back-orders, and wholesaler short-dated specials.
What good FEFO software looks like
The minimum bar for "FEFO-aware" software is a list of inventory sorted by expiration date ascending. Beyond that, the things that actually move the needle:
- Color-coded urgency badges at thresholds you control. Red for "act this week," yellow for "plan this month," green for "routine." Glanceable from across a counter.
- Per-bottle granularity, not lot-level. Two bottles from the same lot can have the same expiration date, but for DSCSA serialized stock you want to track them as distinct rows so you can pull one and keep the other.
- Filters for "what expires within N days." Sometimes you want to see everything; sometimes you want a focused worklist of what to pull this week.
- Configurable thresholds per pharmacy. A high-volume retail pharmacy with fast turnover wants different thresholds than a low-volume institutional pharmacy holding inventory for months. Defaults of 30/90 days are reasonable for retail; 90/180 days is closer to right for institutional.
- One-click action from the list. "Mark Pulled" should be a tap, not a 5-step navigation. The faster the path from "I see expiring stock" to "I've marked it pulled," the more often the workflow actually happens.
How RxRescue does FEFO
The dashboard sorts by expiration date ascending by default — the most urgent bottles are at the top. Each row shows the badge color, drug name (resolved from a products catalog), lot, serial, expiration date in days-to-expiry format, and a "Mark Pulled" action. Filter chips let you switch between "All," "Below PAR," "Narcotics," and "Refrigerated" instantly.
Thresholds are set in Settings → Display:
- Red threshold (default 30 days) — items expiring within this window show red.
- Yellow threshold (default 90 days) — items expiring between red and yellow show yellow.
- Items beyond yellow show green.
Both thresholds are validated (red < yellow, yellow ≤ 730 days) and persisted per-pharmacy. Bumping them to 90/180 for institutional use takes 5 seconds.
Auto-expiration sweep
Once a bottle's expiration date passes, it's no longer eligible for any wholesaler's saleable-return credit window — and depending on the medication, may be hazardous to keep on the active shelf. RxRescue runs a daily sweep at app startup that automatically transitions any bottle whose expiration date is in the past from "Active" to "Expired." Expired rows drop off the active dashboard but stay in the audit log forever, so the post-expiry waste-disposal report is generated from real data, not memory.
The sweep runs once per calendar day, debounced via a per-device flag so the same bottle isn't auto-expired twice. It respects the same license-gate read-only mode that blocks manual writes, so an expired-license install can't accidentally rewrite expiration history.
Where FEFO connects to credit recovery
FEFO is the visibility piece. The action piece is pulling expiring stock for wholesaler return before the credit window closes. The two are the same workflow viewed from different angles, and we cover the credit-window mechanics in detail in our pharmacy returns guide.
Frequently asked questions about pharmacy expiration tracking
What is FEFO and how is it different from FIFO?
FEFO stands for First-Expired-First-Out: the bottle with the earliest expiration date is dispensed first, regardless of when it arrived. FIFO (First-In-First-Out) dispenses the oldest bottle first, regardless of expiration. FEFO is the right pattern for pharmaceuticals because a recently-received bottle can have an earlier expiration date than an older one — dispensing the wrong one creates an expiration-during-fill risk. Modern pharmacy software should default to FEFO recommendations at dispensing and physical-count walks.
What is the wholesaler return-credit window for short-dated stock?
Most wholesalers (Cardinal Health, McKesson, AmerisourceBergen) accept reverse-distribution returns for full credit when the bottle is returned 6 to 9 months before its expiration date. The exact cutoff depends on the manufacturer's return policy and the wholesaler's contract — generic injectables and brand orals often have different windows. After the full-credit window closes, partial credit is sometimes available (typically 30-60%), and after expiration the bottle is generally worth zero. Catching short-dated bottles at the 6-month mark is where most of the recoverable value lives.
How often should a pharmacy check expirations?
A monthly walk-the-shelves check is the default but typically misses short-dated arrivals between walks. A better pattern is per-section cadence calibrated to risk: refrigerated stock weekly, controlled-substance cabinet biweekly, short-dated bins weekly, high-velocity dispensing biweekly, stable back-wall generics quarterly. The clipboard walk-through misses bottles because it runs at one cadence for everything; per-section cadence catches more.
How much money do pharmacies lose to expired medication each month?
Estimates vary by pharmacy size and inventory mix, but a typical independent or small institutional pharmacy loses between several hundred and several thousand dollars per month to expired stock that could have been returned for wholesaler credit if caught earlier. Most of that loss is recoverable with consistent FEFO plus per-section expiration tracking. Brand-name and injectable inventory tends to drive the dollar figure higher than generics.
Does RxRescue integrate with my pharmacy management system to get expiration data?
No integration is required. RxRescue captures expiration at intake — every bottle scanned gets its expiration field read from the DSCSA-compliant GS1 DataMatrix barcode. The pharmacy management system has its own copy of this data (from the wholesaler T3 record), but RxRescue's copy is the physical-shelf truth: it reflects what is actually on the shelf right now, not just what was ordered. The CSV importer can also seed initial inventory from a PMS quantity-on-hand export.
What is a FEFO snapshot in a DSCSA audit pack?
The FEFO snapshot is an export of active inventory sorted by expiration date, showing exactly what is on the shelf right now and what will expire when. DSCSA-aware audit packs typically include this snapshot alongside the full audit log, transaction data, recall match history, and return manifest. Inspectors use the FEFO snapshot to verify the pharmacy is rotating stock correctly and not holding short-dated bottles past the credit window.
Related
- Wholesaler returns and credit windows
- DSCSA compliance for pharmacies
- Correctional pharmacy inventory tracking
- How pharmacies lose money to expired medication (blog)
- The monthly pharmacy expiration check — and why it misses stock (blog)
- Section-based pharmacy audits (blog)
- Cycle counting without closing the pharmacy
Validated as of 2026-05-13. Wholesaler return-credit windows reviewed quarterly.