Blog
Why expiry dates are inventory's blind spot
27 August 2026 · Datima.ai
Ask your commerce platform how many jars of vitamin D you have, and it answers instantly. Ask it how many of those jars are still sellable in November, and it has never heard the question. Quantity is a first-class citizen of every inventory system; freshness isn't in the data model at all.
For merchants selling food, supplements, cosmetics, or anything with a best-before date, that omission has a shape you can find on your P&L: the write-off line after every stocktake, the discount bin that appeared too late, the customer email about receiving something that expires next week.
The spreadsheet era ends badly
Most merchants who care about expiry dates track them the only place they can: a spreadsheet. It starts fine. Then a second delivery of the same product arrives with a different date, and now one SKU is two rows. Then a partial refund comes back, and nobody knows which row to put it in. The spreadsheet doesn't know what sold — so every week someone reconciles it by hand, and every week it's a little more fiction.
The failure isn't discipline. It's that freshness data decays with every sale, and only the system that sees the sales can keep it true.
Batches, not products
The first fix is structural: an expiry date is not a property of a product. It's a property of a batch — this delivery, this quantity, this date, this shelf. A product with three deliveries has three dates at once. Any system that stores "the expiry date" per product has already lost.
The rule warehouses already know
The second fix is a policy with a dull name: FEFO — First-Expired, First-Out. When something sells, count it against the batch that expires soonest, at the location that shipped it. Do that on every fulfillment, put refunds back into the batch they came from, and the remaining quantities stay honest without anyone touching a spreadsheet.
FEFO on paper is easy. FEFO in practice means handling the awkward cases: the refund that arrives after the batch was corrected, the sale that outruns what was recorded, the two orders that hit the same batch in the same second. Those edges are exactly where trust in the numbers is won or lost — it's most of what we spent our engineering time on.
What "good" looks like
- One screen that says what's expiring in 7 / 30 / 90 days and what it's worth — in money, because that's the unit decisions are made in.
- Batch-level records with a bin, so the picker can actually find the old stock.
- An import that starts from your real catalog, previews before it writes, and hands failures back in a re-uploadable file.
- Numbers that survive refunds, corrections, and busy days without drifting.
That's what we built. If you run perishable stock on Shopify, Expiry Management is our answer to the blind spot — and it's completely free during early access.