Skip to main content
Inventory

Perishable inventory tracking: expiry dates, FIFO and FEFO

May 10, 2026
10 min read
Grocery shelf with batch-labeled perishable products and expiration dates

Perishable inventory tracking records the quantity, location and date information of each batch of goods with a limited selling life. A grocery POS that supports expiration tracking connects those records to receiving, shelf rotation and stock adjustments. Tracking only the SKU and its total quantity cannot show which delivery needs attention first.

The practical workflow is to record dates at receipt, identify the physical batch during restocking, review stock that needs action, and record the outcome. This guide explains what to check in that workflow, with illustrative stock records rather than industry spoilage benchmarks.

_Updated October 25, 2026._

What a grocery POS needs to track expiration dates

Start with the receiving record. One SKU can represent several deliveries with different dates. Keep the product identifier alongside the supplier lot, received quantity, accepted quantity, receiving date, printed date and store location. Record the kind of date shown on the label rather than treating every date as interchangeable.

FieldWhy it matters at the store
SKU or GTINIdentifies the product being received
Batch or lotIdentifies a production batch within the product
Printed date and date typePreserves the supplier's information for the store's handling policy
Accepted quantityKeeps rejected or damaged goods out of available stock
Store and shelf or storage locationTells staff where the batch can be found
Status and adjustment historyShows whether goods are available, held, returned or written off

A barcode does not automatically supply all of those fields. GS1 identifies batch or lot data with Application Identifier 10 and expiration date data with 17. The label must actually encode the information, and the scanner and receiving software must understand that encoding. An ordinary product-identification scan does not prove that a batch or date was captured.

Check the incoming package and the item sold at checkout separately. A case label may carry lot information that individual units do not. If staff open a case, preserve the connection between the case's batch and the shelf stock. Our barcode and SKU setup guide covers product identification; batch tracking adds another layer.

When reviewing a POS, ask the supplier to show a real label moving through receipt and stock lookup. Discuss your receiving and date-tracking requirements with the Sandooq team before assuming a particular scanner or workflow is supported.

FIFO vs FEFO: a worked rotation example

FIFO means first in, first out: prioritize the batch received earliest. FEFO means first expired, first out: prioritize the eligible batch with the earliest expiry date. Neither method replaces the store's food-handling, storage or removal policy.

Consider these illustrative records for the same packaged product:

BatchReceivedPrinted expiryUnits accepted
ANovember 1November 2080
BNovember 3November 1560

FIFO puts batch A first because it arrived earlier. FEFO puts batch B first because its printed expiry is earlier. A store that sorts only by receiving date can miss this difference. The combined balance is 140 units, but the immediate rotation task concerns the 60 units in batch B.

Use the example to test both software and shelf work. Can staff find batch B's location? Does the restocking list distinguish it from A? Can the team record a transfer, return or write-off against the correct batch?

Physical rotation and accounting depletion also need to agree. If checkout reads only the product code, a system may assign the sale to a batch using a rule. That assignment is an assumption unless the physical batch is identified. Do not describe automatic FEFO allocation as proof that shoppers actually picked the intended batch.

For goods with consistent dates, FIFO may produce the same order as FEFO. When dates differ across deliveries, comparing the two makes the operational choice visible. Test a shorter-dated new delivery instead of using two batches whose arrival and expiry dates happen to agree.

Turn date visibility into an action queue

An expiry report needs an owner, a location and a recorded outcome. A list of dates without a shelf task leaves the problem for the next shift. Agree the handling and removal rules with the person responsible for food safety, then configure the inventory workflow around those rules.

QueueQuestion to answerRecord to keep
Receiving exceptionIs the delivered date or condition acceptable under our policy?Accepted, held or rejected quantity and reason
Rotation taskWhich eligible batch should be placed first?Batch, shelf and responsible shift
Review taskCan the remaining eligible quantity sell within our selling window?Quantity, recent sales and proposed action
Markdown or transferIs the action permitted and practical for this stock?Approval, destination or price change
Removal or write-offWhich quantity is no longer available for sale?Batch adjustment and reason

Set review thresholds using the actual label, storage requirements, delivery cadence and store policy. A universal table such as “markdown all dairy three days before expiry” is not a reliable substitute. A transfer also needs enough time for receiving and selling at the destination; moving a batch between stores does not reset its date.

Keep the queue small enough to work through. If every item is flagged immediately after receipt, staff cannot tell which action matters. Review false alarms and missed actions with the team, then adjust the configuration. Follow the record from alert to outcome during a demo, including permissions and what happens if the task is left unfinished.

Connect the handoff to the supplier receipt and discrepancy process, so date exceptions are recorded before stock becomes available.

Measure recorded waste separately from unexplained shortages

Waste is a known stock adjustment with a recorded reason, such as expiry or damage. An unexplained shortage is the difference between expected and counted stock that still needs investigation. Inventory shrinkage can include several kinds of loss; it is not evidence of theft by itself.

Use explicit quantities and denominators in the report. In an illustrative snapshot of one batch with no opening balance or transfers:

  • Accepted from the supplier: 100 units.
  • Sold: 85 units.
  • Written off with an expiry reason: 10 units.
  • Remaining on hand: 5 units.

The reconciliation is 100 = 85 + 10 + 5. Recorded expiry waste is 10 / 100 = 10% of accepted units for that batch. This is an example, not a grocery benchmark or a percentage of revenue. A later count of only 3 remaining units creates a separate 2-unit discrepancy; do not silently add it to recorded expiry waste.

For an ongoing category, include opening stock, receipts, transfers and returns, and use a consistent period. Record adjustment values using the store's cost method. Markdown discounts affect the sale's margin; they are not the same measure as units physically written off.

Compare repeated batches before changing ordering. A stock discrepancy may need a targeted physical cycle count; repeated recorded waste may need smaller deliveries or an earlier review task. Keep those investigations separate so the report leads to the right action.

Test the whole workflow before choosing a POS

A feature name is not enough to establish end-to-end batch tracking. Bring one product, two batches and a short delivery to the demo. Ask the vendor to complete these checks in sequence:

  1. Receive the same SKU twice with different dates and quantities.
  2. Reject part of one delivery without adding it to available stock.
  3. Find each batch's remaining quantity and location.
  4. Show the rotation task for the shorter-dated batch.
  5. Explain how a checkout sale is assigned when its barcode lacks lot data.
  6. Transfer or write off a quantity and trace the adjustment to its operator.
  7. Reconcile the remaining physical quantity with the system record.

Ask which steps are native, which need an integration and which remain manual. Also establish what happens during a network outage and how conflicting stock adjustments are reviewed after reconnection. The retail POS buying checklist helps compare those answers across vendors without assuming all systems behave alike.

Document the result for your store. A spreadsheet may be workable for a small, clearly assigned stock area; a larger operation needs more reliable handoffs and shared visibility. Choose based on the records the team can maintain, rather than a promise that software removes the need for shelf checks.

Frequently asked questions

How do grocery POS systems track perishable items and expiration dates?

A grocery POS with batch support records each delivery's product, lot, accepted quantity, location and date information. It then uses those records for rotation tasks, date reviews and stock adjustments. Confirm how the system identifies the physical batch during receiving and sale. A product barcode or a total SKU balance alone cannot establish which units expire first.

What is the difference between FIFO and FEFO?

FIFO prioritizes the batch received first; FEFO prioritizes the eligible batch with the earliest expiry date. They give different results when a later delivery expires sooner than an earlier one. Both need accurate records and physical shelf rotation. The store's handling and removal rules determine which goods remain eligible for sale; the rotation rule does not decide that.

Can a barcode scanner capture expiry dates automatically?

Only when the barcode contains date data and both the scanner and software support it. GS1 Application Identifier 17 describes an expiration date, while 10 describes a batch or lot. Check the actual supplier label during a demo. If those fields are missing, staff need another supported way to enter or import the information and associate it with the receipt.

How early should expiry alerts trigger?

Set thresholds from the printed date, date type, storage conditions, delivery schedule and your store's handling policy. Allow enough time for an authorized action and assign a person to complete it. There is no single number of days that fits every category or package. Review alerts against recorded outcomes to see whether they create useful tasks.

Is expired stock the same as inventory shrinkage?

Expired stock is a known reason for an adjustment when staff record it. Shrinkage is a broader inventory-loss measure and may include several causes. Keep recorded expiry waste separate from unexplained count differences in operational reports. That distinction helps the team decide whether to investigate ordering, date handling, receiving, transaction records or a physical discrepancy.

What should I ask a POS vendor to demonstrate?

Ask for two batches of one SKU with different expiry dates, a short delivery, a sale, and a write-off. Check the accepted quantities, batch allocation, staff permissions and remaining balance after each step. Ask which actions are manual or integrated. Use your own labels and store workflow so the demonstration tests more than a prepared screen.

Authoritative sources

Related reading at Sandooq

Book a discussion about your grocery inventory workflow. Bring a sample label and a receiving example so the team can establish which parts of your process Sandooq supports and where another tool or manual control is needed.

Related Articles

Retail inventory shelf with cycle stock and safety stock layers labeled
Inventory

Cycle stock formula: Q/2, safety stock and reorder points

Calculate average cycle stock with Q/2, then work through safety stock and reorder points. Includes retail examples, assumptions and the difference from cycle counting.

May 10, 2026Read
Retail manager reviewing weekly demand forecast on tablet
Inventory

Demand forecasting for retail: turning POS data into stock decisions

Your POS already records what sells, when, and where. A practical guide to turning that data into reorder decisions that prevent stockouts without overbuying.

May 8, 2026Read
Retail inventory dashboard showing stock across multiple store locations
Inventory

Multi-store inventory management: how to keep stock accurate across locations

Practical strategies for tracking inventory across multiple retail locations without spreadsheets or manual reconciliation.

Mar 14, 2026Read
Inventory cycle counting
Inventory

How cycle counts prevent end-of-month inventory surprises

Use lightweight weekly counting routines to keep stock records accurate and reduce urgent corrections.

Dec 5, 2025Read
Grocery store receiving area with goods-received notes and POS terminal
Operations

Grocery POS supplier integration: what to connect and test

Connect purchase orders, accepted deliveries and supplier invoices to accurate grocery stock records. Includes an integration checklist and a short-delivery example.

May 10, 2026Read
A cash drawer with three labelled payouts leaving it: an electricity bill, a supplier invoice and a wage
Operations

Paying expenses from the cash register: a rule for every payout the till makes

Paying the electricity bill or a delivery driver straight from the till is normal in a cash-heavy shop. Here is what every payout should carry, how expenses, supplier bills and wages differ, drawer versus safe funding, and how to fix a payout recorded wrongly.

Oct 17, 2026Read
Chat with us on WhatsApp