FEFO Inventory Management Without Expensive ERP
Practical FEFO for small Indian retailers without SAP or Oracle — simple batch tracking, color-coded shelves, and affordable alternatives.
You already know you should use FEFO. You think you need SAP to do it.
Here is the conversation that happens in every small retail store in India at some point. The owner reads an article or attends a trade event. Someone mentions FEFO — First Expiry, First Out. The concept clicks immediately: sell the products that expire soonest before selling the ones that expire later. Obviously correct. Obviously better than what the store is doing now.
Then the owner goes to implement it and hits a wall. The articles about FEFO are written for warehouse managers at FMCG companies with ERP systems. The software recommendations start at SAP Business One (₹15-25 lakhs) and go up from there. The case studies are from companies with 50,000 SKUs and dedicated inventory teams. The training guides assume barcode scanners, warehouse management modules, and a full-time IT person.
The small retailer — running 500 to 3,000 SKUs, maybe one or two helpers, using a billing system that tracks sales but not expiry dates — concludes that FEFO is for big companies. They go back to whatever they were doing before, which is usually a combination of FIFO (First In, First Out) and what industry people politely call RIRO — Random In, Random Out.
This is a terrible outcome. Not because the owner made a bad decision, but because the premise was wrong. FEFO does not require enterprise software. It requires a system — and a system can be a process, a logbook, a mobile app, or a combination of all three. What it cannot be is nothing.
Not sure how much you're losing to expiry?
Run a free inventory waste audit — find your bleeding SKUs in 60 seconds. No sign-up required.
Run free auditWhat FEFO actually is (and what it is not)
FEFO stands for First Expiry, First Out. It is an inventory management method where products are sold, dispensed, or used in order of their expiry dates. The item expiring soonest gets sold first, regardless of when it arrived in the store.
This is different from FIFO (First In, First Out), where products are sold in the order they were received. FIFO assumes that what arrived first will expire first. This assumption is often wrong.
Why FIFO fails for perishable and dated products:
A real-world example that plays out constantly in Indian retail. Your distributor delivers 20 units of a product on Monday with a 90-day expiry date (expires in late June). On Thursday, a different distributor delivers 15 units of the same product with a 45-day expiry date (expires in mid-May). Under FIFO, you sell Monday's stock first because it arrived first. But Thursday's stock expires a full month earlier. By the time you finish selling Monday's stock and get to Thursday's, half of Thursday's stock has expired.
FIFO works perfectly when all units of a product have the same shelf life and arrive in chronological order. In Indian retail, this is rarely the case. Different batches from the same manufacturer can have different production dates. Different distributors may hold stock for different durations before delivering. Promotional stock may arrive with shorter remaining shelf life. Return-and-replace stock may have different dates than your regular order.
FEFO fixes this by ignoring arrival order entirely and looking only at the date printed on each unit. It does not matter when something arrived. It matters when it expires. Sell the one that expires first.
The third option — RIRO, or Random In, Random Out — is what most stores actually practice. Products go on the shelf wherever there is space. Customers pick whatever is in front or whatever catches their eye. The cashier does not check dates. Nobody rotates stock. Expiry is discovered when a product is visually spoiled or when a customer complains.
The numbers: FEFO versus everything else
How much difference does FEFO actually make? The data from retail operations that have switched from FIFO or RIRO to FEFO is consistent across different store sizes and product categories.
| Metric | RIRO (Random) | FIFO | FEFO |
|---|---|---|---|
| Average expiry waste (% of perishable stock value) | 5-12% | 3-6% | 1-3% |
| Products discovered expired on shelf | Weekly occurrence | Monthly occurrence | Rare |
| Customer complaints about near-expiry products | Regular | Occasional | Rare |
| Markdown revenue recovered | Minimal (discovered too late) | Moderate | High (early identification) |
| FSSAI/regulatory compliance | Poor | Moderate | Strong |
For a store doing ₹5 lakhs monthly in perishable products (dairy, bakery, snacks, beverages with expiry dates), the difference between RIRO at 8% waste and FEFO at 2% waste is ₹30,000 per month. ₹3.6 lakhs per year. That is the salary of a full-time helper, generated purely by selling products you were already going to throw away.
Even the gap between FIFO and FEFO is meaningful. Moving from 4% waste to 2% waste on ₹5 lakhs of perishable stock is ₹10,000 per month. ₹1.2 lakhs per year. For a small store, that is a significant number.
The myth: why small retailers think they need an ERP
The FEFO-requires-ERP myth persists because the first generation of FEFO implementation was, in fact, done through ERP systems. SAP, Oracle, Microsoft Dynamics — these systems have inventory modules that track batch numbers, expiry dates, and automatically suggest pick sequences based on FEFO logic.
For a company managing 50,000 SKUs across 10 warehouses with 200 employees, ERP-driven FEFO makes sense. You need automation at that scale. You cannot manually check expiry dates on 50,000 products every day.
But a retail store with 500-3,000 SKUs is not a warehouse with 50,000 SKUs. The operational reality is completely different.
What a small store actually needs for FEFO:
- Know which products have expiry dates (you already know this)
- Know the expiry date of each batch on your shelf (this is the hard part)
- Ensure the earliest-expiring batch is sold first (this is a physical shelf arrangement problem)
- Get a warning when something is approaching expiry so you can mark it down or return it (this is an alerting problem)
None of these four requirements demand enterprise software. They demand a system — any system — that tracks batch-level expiry dates and prompts action.
An ERP costing ₹15-25 lakhs solves these problems along with 500 other problems you do not have (multi-warehouse management, landed cost calculation, inter-company transfers, production planning). You are paying for a Boeing 777 when you need a bicycle.
The practical guide: implementing FEFO in a 500-3,000 SKU store
Here is how to actually do it. No ERP. No consultants. No ₹15 lakh software licence.
Step 1: Categorize your products by expiry risk
Not all 3,000 of your SKUs need FEFO management. Some products have shelf lives so long that expiry is not a realistic concern — canned goods, dry staples, household cleaning products. Other products expire so fast that FEFO is a daily operational requirement — dairy, bakery, fresh produce.
Divide your products into three categories:
Category A — Active FEFO required (daily attention):
- Dairy: milk, curd, paneer, buttermilk, cheese, yogurt
- Bakery: bread, cakes, puffs, biscuits with short shelf life
- Fresh produce: fruits, vegetables (if applicable)
- Prepared foods: ready-to-eat items, refrigerated snacks
Category B — FEFO on receipt (weekly attention):
- Packaged snacks with 3-6 month shelf life
- Beverages with expiry dates (juices, flavoured milk, health drinks)
- Sauces, spreads, and condiments (once opened or nearing expiry)
- Personal care products with expiry dates
- OTC medicines (pharmacies)
Category C — FEFO at stocking (monthly attention):
- Products with 12+ month shelf life
- Canned goods, dry staples
- Household items with distant expiry dates
Most stores find that Category A is 50-200 SKUs, Category B is 200-800 SKUs, and Category C is the remainder. Your FEFO system only needs to actively manage Categories A and B. Category C can be handled with a monthly shelf check.
Step 2: Physical shelf organization (the foundation)
Before any tracking system — before the logbook, before the app — you need to fix how products are physically arranged on your shelves and in your coolers.
The rule is simple: earliest expiry in front, latest expiry in back.
For each product on your shelf:
- Take everything off the shelf (or out of the cooler section)
- Check expiry dates on every unit
- Place the units with the earliest expiry date at the front, where customers pick from
- Place units with later expiry dates behind them, in order
- If any unit is already expired, remove it immediately
This initial sort takes 2-4 hours for a full store. It feels tedious. It is the single most impactful thing you will do for your expiry waste problem.
For coolers and refrigerated displays: the physics of cooler stocking work against FEFO (newer deliveries naturally get placed in front — see the paneer cooler problem). You must actively fight this every single delivery. New stock goes to the back. Existing stock stays in front or gets moved forward. Every time. No exceptions.
For gondola shelves: use the same front-to-back rule. When restocking, pull existing stock forward and place new stock behind it. Train your helpers to never place new stock in front of existing stock unless the new stock has an earlier expiry date.
Physical markers that help: Some stores use small coloured stickers on products to indicate expiry month. Red for products expiring this month. Yellow for next month. Green for later. This visual system makes FEFO rotation faster because the helper can see at a glance which products need to be in front without reading every date.
Step 3: Batch tracking — three methods, choose your level
This is where the ERP myth does the most damage. People think batch tracking means scanning barcodes into a database with lot numbers and production codes. That is one way to do it. Here are three ways, from simplest to most capable.
Method 1: The expiry logbook (cost: ₹50 for a register)
A physical register with columns:
- Product name
- Batch / MFG date
- Expiry date
- Quantity received
- Date received
- Quantity remaining (updated weekly)
- Action taken (sold / returned / markdown / wasted)
When a delivery arrives, the person receiving stock writes one line per product per batch in the logbook. Takes 10-15 minutes for a typical delivery.
Every morning (for Category A products) or every week (for Category B), someone reviews the logbook and checks which products are approaching expiry. If a product expires in the next 3-5 days, it triggers an action — move to front of shelf, apply a discount, bundle with another product, arrange a return to distributor.
Does this scale? For a store with 500 SKUs and 2-3 deliveries per week, a logbook works well. You are writing 30-60 lines per week and reviewing 50-200 entries. For 2,000-3,000 SKUs with daily deliveries, the logbook becomes unwieldy. You need Method 2 or 3.
Method 2: Spreadsheet tracking (cost: ₹0 if you have a phone or computer)
A Google Sheet or Excel file with the same columns as the logbook, but with two critical advantages: sorting and filtering.
Sort by expiry date ascending. Now you have a list of everything in your store ordered by what expires next. The first 20 entries are your immediate action items. You can filter by category, by supplier, by date range. You can set conditional formatting to turn cells red when expiry is within 7 days.
A shared Google Sheet on a phone means the shopkeeper and the helper can both see and update the tracker. No special hardware needed.
The limitation: Data entry is manual. Someone has to type in the expiry date for every batch of every product received. For a store receiving 50-100 product batches per week, this is 30-60 minutes of data entry. Tedious but manageable. For a store receiving 200+ batches per week, it starts to feel like a second job.
Method 3: Mobile app with batch tracking (cost: ₹500-3,000 per month)
Purpose-built inventory apps that include expiry date tracking solve the data entry problem with barcode scanning and solve the alerting problem with automated notifications.
The workflow: delivery arrives. Open the app. Scan the barcode. Enter quantity and expiry date. Done. The app now knows you have 20 units of Product X expiring on June 15 and 15 units expiring on July 30. It will alert you when the June 15 batch enters the action window (configurable — 7 days, 14 days, 30 days, whatever you set).
The app generates reports: what is expiring this week, what expired and was wasted, what was saved through markdown or returns. Over time, this data tells you which products consistently create waste (order less), which suppliers deliver short-dated stock (negotiate or switch), and which categories need tighter management.
This is where the market has changed. Five years ago, batch-level expiry tracking required SAP or Oracle. Today, a mobile app costing ₹1,000-3,000 per month does the same thing for a small store. That is ₹12,000-36,000 per year — versus ₹3.6 lakhs saved from waste reduction. The economics are not even close.
Step 4: The daily FEFO routine (15 minutes that save thousands)
Once your system is in place — physical shelf arrangement, batch tracking (logbook, spreadsheet, or app) — you need a daily routine to keep it working.
Morning FEFO routine (15 minutes):
- Check the alert list (2 minutes). Whether it is a logbook page, a spreadsheet filter, or an app notification — look at what expires in the next 3-7 days.
- Walk the Category A shelves (5 minutes). Dairy cooler, bakery shelf, any fresh product display. Visually confirm that earliest expiry is in front. If yesterday's delivery was stocked incorrectly (it happens), fix it now.
- Action items (5 minutes). For products expiring in 1-3 days: apply markdown pricing, move to a "clearance" section, contact your distributor about returns, or set aside for donation. For products expiring in 4-7 days: ensure they are in the front-pick position and consider a small promotional discount.
- Log any waste (3 minutes). If anything expired overnight or was found spoiled, record it. Product, quantity, value, cause if known. This data is how you improve over time.
On delivery days, add 10-15 minutes for receiving inspection (check expiry dates of incoming stock, reject anything too short-dated) and shelf rotation (integrate new stock behind existing stock in FEFO order).
Total daily time investment: 15-30 minutes. Annual waste savings: ₹1.2-3.6 lakhs. The return on time invested is extraordinary.
Step 5: The delivery receiving protocol
Half of your FEFO success is decided at the moment stock enters your store. If you accept short-dated products without noticing, you have created a future waste event that no amount of shelf rotation will fix.
The receiving checklist:
- Check expiry dates before accepting. Not after. Before the delivery person leaves. If paneer with 3 days remaining shelf life arrives, you have a choice: accept it and try to sell it in 3 days, or reject it and ask for fresher stock.
- Set minimum remaining shelf life standards. Example: you will not accept dairy with less than 5 days remaining. You will not accept packaged snacks with less than 60 days remaining. Write these standards down and share them with your distributors. Most distributors will comply because the alternative is taking the products back themselves.
- Record batch expiry dates at receiving. Whether in a logbook, spreadsheet, or app — the moment of receiving is when you capture the data. Not later. Not when you have time. At receiving. If you defer this step, it will not happen, and your FEFO system loses its data foundation.
- Integrate new stock behind existing stock immediately. Do not stack new delivery crates in front of the cooler and rotate later. Rotate now. This is the single most violated FEFO rule in retail, and it is the single most costly violation.
How to train your staff on FEFO in one day
You do not need a week-long training programme. You need one focused session and then daily reinforcement through routine.
The one-day training plan:
Morning (1 hour) — Concept and motivation:
- Explain what FEFO means: sell what expires first, regardless of when it arrived
- Show the numbers: how much money the store loses to expiry waste (use your actual numbers if you have them, or the industry averages above)
- Show them what that waste equals in terms they care about — it might be equivalent to one month's salary, a bonus, a piece of equipment they have been requesting
Mid-morning (2 hours) — Hands-on shelf rotation:
- Pick one section of the store (the dairy cooler is ideal because it is the most impactful)
- Remove everything. Check every date. Sort by expiry. Restock in FEFO order.
- Do this together so the helper experiences the full process once
- Repeat with a second section (bakery shelf or snacks aisle)
Afternoon (1 hour) — System training:
- Walk through the tracking system — logbook entries, spreadsheet updates, or app usage
- Have the helper make 5-10 entries themselves
- Show them the alert list and explain what actions to take for each alert level
- Practice the receiving protocol with a simulated delivery (or time it with an actual delivery if one is expected)
End of day (30 minutes) — Commit to the routine:
- Review the daily 15-minute FEFO routine
- Assign responsibility: who does the morning check, who handles receiving
- Set a 2-week check-in to review how the system is working
Daily reinforcement (ongoing, 2 minutes):
For the first two weeks, start each day by asking the helper: what expires in the next 3 days? If they can answer from memory or by checking the system quickly, the training has taken hold. If they cannot, walk through it with them. Within two weeks, FEFO becomes habit.
The critical mindset shift: Most helpers think their job is to stock shelves. After FEFO training, they should think their job is to manage expiry dates, and stocking shelves is how they do it. This reframing changes behaviour more than any checklist.
Measuring results: how to know FEFO is working
Implementing FEFO without measuring the results is like going on a diet without a scale. You need baseline data and ongoing tracking to know if the system is working.
What to measure:
| Metric | How to Measure | Target |
|---|---|---|
| Monthly expiry waste (Rs) | Sum of all expired/wasted product values | Reduce by 30-50% in first 3 months |
| Expiry waste as % of perishable stock | Monthly waste / Monthly perishable purchases | Below 3% for dairy, below 2% for packaged goods |
| Products caught before expiry | Count of items marked down or returned before expiry date | Increasing month over month |
| Revenue recovered from markdowns | Sales value of discounted near-expiry products | Should exceed 30% of what was previously wasted |
| Short-dated deliveries rejected | Count of batches refused due to insufficient remaining shelf life | Establishes your standards with suppliers |
The first month will feel discouraging. You will find more expired products than before — not because expiry increased, but because you are now looking for it. Products that previously expired unnoticed in the back of the shelf are now being counted and recorded. This is actually good. You are seeing reality for the first time.
By month two, if FEFO is being practiced consistently, you should see the discovery of expired products decline. Not because you stopped looking, but because fewer products are reaching expiry. The system is working.
By month three, you should have enough data to identify your problem products — the specific SKUs that account for most of your waste. These are the products where you need to adjust order quantities, negotiate shorter delivery times, or reconsider whether to stock them at all.
Why FEFO beats FIFO every time in Indian retail
Indian retail has characteristics that make FIFO particularly unreliable and FEFO particularly valuable.
Multiple suppliers for the same product. A kirana store might buy Parle-G from two different distributors. Each distributor holds different batches. The Monday delivery might have a longer shelf life than the Thursday delivery, even though Thursday's arrived later. FIFO sells Monday's first. FEFO sells whichever expires sooner. Only one of these prevents waste.
Inconsistent distributor stock holding. India's distribution chain is fragmented. Some distributors have fast-moving stock and deliver products with 80-90% remaining shelf life. Others sit on inventory longer and deliver with 40-60% remaining. You cannot assume that products received today have more shelf life than products received last week. Only FEFO accounts for this variance.
Promotional stock and scheme goods. When companies push promotional stock, it often arrives with shorter remaining shelf life — the manufacturer is clearing inventory through the promotion. Under FIFO, this promotional stock sits behind your regular inventory and may expire before it gets to the front. Under FEFO, the shorter-dated promotional stock automatically goes to the front-pick position.
Seasonal shelf life variation. As discussed in detail for dairy products, Indian summers compress shelf life for temperature-sensitive products. A product that arrived with 14 days of shelf life in December might effectively have 7-8 days in May due to cold chain conditions. FIFO does not account for this reality. FEFO does, because you are tracking the actual expiry date, not the arrival date.
The real barrier is not software. It is the decision to start.
Every store owner reading this already understands FEFO. The concept is not complicated. The implementation is not complicated. The tools — from a ₹50 register to a ₹2,000/month app — are available and affordable.
The barrier is the decision. The decision to spend 15 minutes every morning on expiry management. The decision to spend 10 extra minutes on each delivery checking dates. The decision to tell a helper that stocking shelves now involves checking expiry dates, not just filling empty spaces.
These are small decisions with large cumulative consequences. A store that practices FEFO consistently will waste 50-70% less than a store that practices RIRO. Not because it has better technology or more staff, but because it has a system and the discipline to follow it.
You do not need SAP. You do not need Oracle. You do not need a consultant or a warehouse management module or a barcode scanner (though one helps). You need a method for knowing what expires when, and a routine for acting on that knowledge.
That is FEFO. It fits in a ₹50 register. It fits on your phone. It works at 500 SKUs and at 3,000 SKUs. It starts working the day you start doing it.
The only thing it does not do is implement itself.
ShelfLifePro tracks batch-level expiry with automated FEFO, daily alerts, and compliance-ready reports — built for Indian retailers. Start free at shelflifepro.in
See what batch-level tracking actually looks like
ShelfLifePro tracks expiry by batch, automates FEFO rotation, and sends markdown alerts before stock expires. 14-day free trial, no credit card required.