Expiration Date Management for Inventory: FIFO, FEFO, and Batch Tracking
Learn practical expiration date management for inventory with FIFO/FEFO workflows, batch-level tracking, and 30/60/90-day alerts for food, supplements, and medical supplies.
Quick Answer
Learn practical expiration date management for inventory with FIFO/FEFO workflows, batch-level tracking, and 30/60/90-day alerts for food, supplements, and medical supplies.
Disclosure: StockPilot is an inventory software provider and may benefit when readers choose our product.
If you manage food, supplements, or medical inventory, expiration date management is not optional. You need batch-level visibility, FEFO picking, and alert thresholds before stock becomes unsellable.
Last March, a supplement company in Austin discovered 340 bottles of a high-margin collagen powder tucked behind pallets of newer stock in their warehouse. Every single bottle was three months past its expiration date. Retail value: $15,300 — gone. Not because they didn't sell well. The collagen was actually one of their best-sellers. The problem? When new shipments arrived, the warehouse team stacked them in front of the older stock. Nobody checked. Nobody flagged it. The expired bottles sat there for months, invisible in their own inventory system, while fresh inventory flew off the shelves ahead of them.
The owner told us: "The worst part isn't the $15K. It's that we were reordering this product the entire time, thinking we were running low, when hundreds of units were sitting right there rotting."
That's double the damage — wasted product and unnecessary reorder costs on top.
If you sell anything with a shelf life — food, supplements, cosmetics, pet products, medical supplies — this story should make you uncomfortable. Because some version of it is happening in your warehouse right now, whether the dollar amount is $500 or $50,000.
This guide will show you exactly how to set up inventory expiry date tracking, implement FIFO and FEFO systems, and stop throwing margin in the trash.
Quick Answer (TL;DR)
If your products expire, you need batch-level tracking plus FEFO picking.
FIFO is a useful baseline, but FEFO is safer when expiry dates vary by supplier or batch.
Set 30/60/90-day alerts and treat near-expiry stock as an active workflow, not a monthly cleanup task.
How We Evaluated Expiry Control Practices
We prioritized frameworks that are practical for SMB operators:
- Waste prevention impact: ability to reduce expiry losses quickly.
- Compliance resilience: support for auditability and traceability.
- Execution simplicity: can frontline teams follow the process daily?
- Scalability: whether controls still work as SKU and location count grows.
Disclosure
StockPilot is an inventory software product. We may benefit if readers choose StockPilot, so this guide includes both process-only controls and software-assisted controls.
Update Log
- 2026-02-14: Added FEFO-first decision guidance and practical alert thresholds.
The Hidden Cost of Expired Inventory
Let's start with some numbers that should get your attention.
The US alone wastes $218 billion worth of food at the retail level every year, according to ReFED. That's not farm waste or consumer leftovers — that's product that made it to a store or warehouse shelf and never sold before it expired.
For small and mid-sized businesses, the damage is more personal:
- The average small business loses 3-5% of total inventory value to expiration annually. For a business doing $500K in inventory, that's $15,000-$25,000 per year evaporating.
- FDA regulatory fines for selling expired food or supplements range from $1,000 to $500,000 depending on severity. A single health department violation can shut down operations for days.
- Customer trust damage is permanent. One expired product shipped to a customer generates negative reviews, chargebacks, and social media complaints that cost 10x the product value to recover from. A 2024 survey found 82% of consumers would never reorder from a brand that shipped them an expired item.
And here's the part most business owners miss: expired inventory doesn't just cost you the product — it costs you the shelf space. Every slot occupied by a product creeping toward its expiry date is a slot that could hold a fresh, sellable unit. You're paying rent on dead weight.
💡 Quick math: If 4% of your inventory expires annually and your average margin is 40%, you need to sell an additional 10% more product just to break even on the waste. That's not growth — that's running in place.
What Is FIFO and Why It Matters
If you've ever grabbed the milk from the back of the grocery store cooler because it had a later date, you just defeated someone's FIFO system. Let's make sure your customers can't do that to you.
FIFO: First In, First Out
FIFO means the oldest inventory gets sold or shipped first. The first units you receive are the first units that leave. It's the most common inventory rotation method and the baseline standard for any business handling perishable goods.
Example: You receive 100 units of organic granola on January 1st (Batch A, expires June 30th). On February 1st, you receive another 100 units (Batch B, expires August 15th). Under FIFO, every order ships from Batch A until it's gone, then Batch B starts shipping.
LIFO: Last In, First Out
LIFO is the opposite — newest stock ships first. This is sometimes used for tax accounting purposes (it can reduce taxable income when costs are rising), but it's terrible for perishable goods. It's the exact system that caused our Austin supplement company's $15K loss.
FEFO: First Expired, First Out
FEFO is the gold standard for perishable inventory, and it's what you should actually be using. Instead of shipping based on when stock arrived, you ship based on when it expires — the product closest to its expiration date ships first, regardless of when you received it.
Why does this matter? Because arrival order and expiry order aren't always the same:
| Batch | Received Date | Expiry Date | FIFO Ships | FEFO Ships |
|---|---|---|---|---|
| A | Jan 1 | June 30 | 1st ✅ | 2nd |
| B | Feb 1 | May 15 | 2nd | 1st ✅ |
| C | Mar 1 | Aug 30 | 3rd | 3rd |
In this scenario, Batch B has an earlier expiry date than Batch A — maybe it was manufactured earlier but arrived later, or it's a different supplier with a shorter shelf life. FIFO would ship Batch A first, while Batch B quietly expires. FEFO catches this.
💡 The rule of thumb: Use FIFO as your default system. Use FEFO when you're managing products with variable shelf lives or multiple suppliers for the same SKU. If you sell perishable goods, FEFO should be your target.
For more context on how inventory rotation fits into broader warehouse workflows, see our Ultimate Guide to Warehouse Management System Software.
5 Industries That Can't Afford to Ignore Expiry Tracking
Expiration date management isn't just a "nice to have" for certain sectors — it's an operational necessity. Here are the five industries where poor shelf life tracking does the most damage.
1. Food & Beverage Retailers
This one's obvious, but the scale of the problem is staggering. Grocery stores operate on 1-3% net margins, which means a 4% expiry loss can literally wipe out all profit. Fresh categories like dairy, produce, and deli have shelf lives measured in days, not months. Even packaged goods like sauces, snacks, and beverages require batch tracking to stay compliant with FDA food safety regulations. The Food Safety Modernization Act (FSMA) requires complete traceability — if you can't trace a contaminated product back to its lot number within 24 hours, you're in violation.
2. Supplement & Vitamin Companies
The supplement industry is booming ($177 billion globally in 2024), but margins evaporate fast when products expire. Unlike food, supplements often have expiry dates 18-24 months out — which creates a false sense of security. Teams stop checking because "it's not urgent." Then one day, an entire pallet is 60 days from expiry and needs to be fire-sale discounted or destroyed. Worse, the FDA treats expired supplements as adulterated products — selling them can trigger enforcement action.
3. Medical Supply Distributors
Medical supply expiration tracking isn't just a financial issue — it's a patient safety issue. Expired medications, test kits, surgical supplies, and PPE can produce inaccurate results or cause harm. Regulatory requirements are the strictest of any industry: DEA tracking for controlled substances, FDA 21 CFR Part 211 for pharmaceuticals, and Joint Commission standards for healthcare facilities. A single compliance failure can result in loss of licensure.
4. Cosmetics & Skincare
Cosmetics have two types of shelf life that trip businesses up: the expiry date (product manufactured date + shelf life) and the PAO (Period After Opening) symbol, which indicates how long the product lasts once opened. For retailers, the manufactured date is what matters, and many products only have 12-18 month shelf lives. Active ingredients in serums and sunscreens degrade over time, meaning an "expired" product isn't just a labeling issue — it genuinely doesn't work anymore. Shipping a customer an expired SPF 50 that now performs like SPF 15 is a liability nightmare.
5. Pet Food Retailers
Pet food expiration is regulated by AAFCO and state feed control officials, and it's treated with increasing seriousness. Premium pet food brands use fewer preservatives, which means shorter shelf lives (6-12 months). Pet owners in 2026 read labels as carefully for their dogs as they do for themselves — an expired bag of kibble will generate a complaint, a negative review, and a lost customer who spends $100+/month on repeat purchases. That's $1,200/year in lifetime value lost over a $40 bag of food.
How to Set Up Expiry Date Tracking (Step by Step)
Whether you're starting from zero or patching holes in your current process, here's the practical playbook. You can implement Steps 1-5 this week, even without software.
Step 1: Audit Your Current Inventory for Expiring Items
Before you build a system, find out what's already at risk. Go through your warehouse (physically, not just in your system) and identify every product with an expiration date within the next 90 days.
Action items:
- Walk every shelf, bin, and pallet — including the back corners
- Record: SKU, quantity, lot/batch number, expiry date, location
- Flag anything expiring within 30 days as critical
- Flag anything expiring within 31-90 days as warning
- Decide immediately: discount, donate, or dispose of critical items
You'll probably find surprises. That's the point.
Step 2: Establish a Batch/Lot Numbering System
Every shipment you receive needs a unique identifier tied to its expiration date. This is your batch number or lot number — the DNA of your inventory tracking.
A simple batch numbering format:
[Product Code]-[Receive Date]-[Supplier Code]
Example: COL500-20260201-SUP03
This tells you: Collagen 500mg, received Feb 1 2026, from Supplier 03. The expiry date gets recorded as a separate field linked to this batch number.
Key principle: Every time you receive inventory, it gets a new batch. Even if it's the same product from the same supplier. Two shipments received a week apart could have different expiry dates — treat them as separate batches.
Step 3: Set Alert Thresholds (30/60/90 Days)
Configure three levels of expiry alerts based on your typical sell-through rate:
| Alert Level | Time to Expiry | Action |
|---|---|---|
| 🟢 Monitor | 90 days | Awareness — no action needed unless sell-through is slow |
| 🟡 Warning | 60 days | Prioritize for next shipments, consider promotions |
| 🔴 Critical | 30 days | Immediate action: discount, bundle, donate, or quarantine |
Adjust these thresholds based on your product category. Fresh food might need 7/14/30-day thresholds. Supplements with 2-year shelf lives might use 90/180/365-day thresholds.
Step 4: Implement FEFO Picking Procedures
Update your picking process so the shortest-dated inventory always ships first. This means:
- Label shelves clearly with batch numbers and expiry dates
- Organize storage so shortest-dated stock is most accessible (front of shelf, lowest bin, first pick location)
- Update pick lists to specify batch numbers, not just SKUs — the picker should know which batch to pull
- Verify at packing that the expiry date on the picked item matches the batch on the pick list
If you're using a warehouse management system, FEFO picking can be automated — the system directs the picker to the correct batch automatically.
Step 5: Train Your Team on the Process
The best system in the world fails if your warehouse team doesn't follow it. Key training points:
- Receiving: Every inbound shipment gets a batch number and expiry date recorded before it goes to a shelf. No exceptions.
- Putaway: New stock goes behind older stock. Never stack new in front of old.
- Picking: Always pull from the batch specified on the pick list. Don't grab the closest unit.
- Reporting: If anyone finds expired or near-expiry product, it gets reported immediately — not ignored, not hidden.
Post these rules at your receiving station and in your pick area. Make it part of new employee onboarding.
Step 6: Automate with Software
Manual processes work when you're managing 50 SKUs with 3-4 batches each. Once you scale beyond that — hundreds of SKUs, dozens of active batches, multiple warehouse locations — spreadsheets become a liability.
Inventory management software with batch and expiry tracking eliminates the manual work:
- Expiry dates are recorded at receiving and attached to specific stock
- Alerts fire automatically at your configured thresholds
- FEFO deduction happens in the background — every order pulls from the shortest-dated batch
- Reports show you exactly what's expiring, when, and how much it's worth
We'll cover the manual vs. software decision in more detail below.
Manual vs. Software-Based Tracking
Let's be honest: spreadsheets can work for expiry tracking if you have a small operation. Here's a realistic comparison.
The Spreadsheet Approach
A basic expiry tracking spreadsheet looks like this:
| SKU | Product Name | Batch # | Qty Received | Qty Remaining | Received Date | Expiry Date | Days Until Expiry | Status |
|---|---|---|---|---|---|---|---|---|
| COL500 | Collagen 500mg | COL500-0201 | 100 | 73 | 2026-02-01 | 2027-08-01 | 533 | 🟢 |
| VIT-D3 | Vitamin D3 | VITD3-0115 | 200 | 42 | 2026-01-15 | 2026-07-15 | 151 | 🟡 |
| PROB50 | Probiotic 50B | PRB50-1201 | 150 | 18 | 2025-12-01 | 2026-04-01 | 46 | 🔴 |
Add a =DATEDIF(TODAY(), ExpiryDate, "D") formula for "Days Until Expiry" and conditional formatting for the status column. Color-code red/yellow/green. Set a weekly calendar reminder to review.
When spreadsheets work fine:
- Fewer than 50 active SKUs with expiry dates
- Fewer than 20 active batches at any time
- One warehouse location
- One person manages inventory (no handoffs)
- You sell less than 50 orders/day
When spreadsheets break:
- Multiple people editing the same sheet — version conflicts, overwritten data, and "who changed this?" headaches
- High order volume — manually deducting from the correct batch for every order is unsustainable past ~50 orders/day
- Multiple locations — you now need separate tabs or sheets per location, and transferring between them gets messy fast
- Compliance audits — a spreadsheet isn't an audit trail. If an FDA inspector asks you to prove when a specific lot was received and when it was sold, you need timestamped, tamper-evident records — not a Google Sheet
- Human error — one wrong number in one cell can cascade. A mistyped expiry date of 2027 instead of 2026 means that batch never triggers an alert
The Software Approach
Dedicated inventory management software with batch tracking eliminates every failure point above:
| Capability | Spreadsheet | Software |
|---|---|---|
| Batch/expiry recording at receiving | Manual entry | Scan & auto-populate |
| FEFO auto-deduction per order | ❌ Manual | ✅ Automatic |
| Expiry alerts | Manual review | ✅ Automated notifications |
| Multi-location tracking | Clunky | ✅ Native |
| Audit trail for compliance | ❌ | ✅ Timestamped logs |
| Team collaboration | Conflict-prone | ✅ Role-based access |
| Scales past 100 batches | 😰 | ✅ No limit |
The tipping point is usually around 100 active SKUs or 50 orders/day — whichever you hit first. After that, the time spent maintaining the spreadsheet exceeds the cost of software, and the risk of an expensive error grows with every day.
What to Look for in Expiry Tracking Software
Not all inventory software handles expiration dates well. Some bolt on a "date field" and call it batch tracking. Here's the feature checklist that actually matters:
Must-Have Features
-
Batch/lot number assignment at receiving — Every inbound shipment should prompt you to assign or scan a batch number. If the software doesn't make this part of the receiving workflow, your team will skip it.
-
Expiry date field tied to each batch — The expiry date needs to live at the batch level, not the product level. The same SKU can have five batches with five different expiry dates. Software that only stores one expiry date per product is useless.
-
FIFO/FEFO auto-deduction — When an order comes in, the system should automatically deduct from the batch with the earliest expiry date. If your team has to manually select which batch to pick from, it's not FEFO — it's a suggestion box.
-
Configurable expiry alerts — You should be able to set different alert thresholds per product category. Fresh food needs 7-day alerts. Supplements might need 90-day alerts. One-size-fits-all doesn't work.
-
Quarantine/hold functionality — When a batch hits its expiry date (or gets flagged for quality issues), the system should automatically remove it from available-to-sell inventory. You don't want an expired batch sitting in your "available" count while someone picks it for an order.
-
Audit trail and compliance reports — Every batch should have a complete history: when it was received, who received it, where it was stored, when units were sold, and when it was disposed of. This is non-negotiable for FDA, FSMA, and health department compliance.
Nice-to-Have Features
- Supplier shelf life tracking — Track which suppliers consistently deliver shorter-dated product so you can negotiate or switch
- Waste analytics — Reports showing disposal trends over time, broken down by product, supplier, and category
- Automated discounting rules — Trigger promotions when products hit warning thresholds (e.g., auto-apply 20% off when a batch is 60 days from expiry)
- Integration with your sales channels — FEFO deduction should work across Shopify, Amazon, and wholesale orders, not just one channel
Stop Losing Money to Expired Inventory
Here's the reality: every day you're operating without expiry date tracking, you're making two bets — that nothing in your warehouse is expiring unnoticed, and that nothing expired will reach a customer. The businesses that make those bets eventually lose.
The good news is that fixing this isn't complicated. Start with the six steps above. Audit what you have today. Set up batch numbers. Configure alerts. Train your team. And when your operation outgrows the spreadsheet — and it will — move to software that handles batch tracking and FEFO deduction automatically.
StockPilot is built for exactly this. Our batch and expiry tracking features are designed for businesses managing perishable inventory — supplements, food, cosmetics, medical supplies, and more. Every shipment you receive gets a batch number and expiry date. Every order ships from the shortest-dated batch automatically. Configurable alerts make sure nothing sneaks past its expiry date. And your full audit trail is always one click away.
👉 Join the StockPilot waitlist to get early access to batch tracking, FEFO auto-deduction, expiry alerts, and the inventory tools that perishable-goods businesses actually need.
Frequently Asked Questions
What's the difference between FIFO and FEFO?
FIFO ships the oldest received stock first. FEFO ships the stock that expires soonest first. For products with variable shelf life by batch, FEFO is safer and usually reduces waste more effectively.
Can I track expiry dates in a spreadsheet?
Yes, for small catalogs and low order volume. Once you have many active batches, multiple locations, or daily order velocity, spreadsheet workflows become error-prone and hard to audit.
What alert thresholds should I start with?
A practical default is 90/60/30-day alerts for supplements and packaged goods. For short-life products, tighten this to 30/14/7 days based on your sell-through cycle.
Do I need a full WMS for expiry control?
Not always. Many SMB teams can start with strong inventory software plus batch tracking and FEFO logic. If you also need advanced pick/pack workflows, evaluate a full warehouse management system.
This guide is part of our Inventory Management series. If you're evaluating tooling options, compare Inventory Management Software for Small Business and Excel vs Software.