For Shopify merchants with perishable goods
Know what expires, what it costs you, and which batch to pick first.
Shopify has no concept of an expiry date. Expiry Management adds one — at the batch level, where it actually lives — and keeps it current automatically as you sell.
FEFO attribution
Every sale deducts from the batch that should leave first
When an order ships, the app attributes it to your earliest-expiring batch at the fulfilling location — First-Expired-First-Out. Refunds put stock back into the exact batch it came from. The record is append-only, so the history of every unit is a query, not a guess.
The dashboard
At-risk value by window: expired, 7, 30, 90 days
One screen answers the question you actually ask: what's expiring soon and how much is it worth? Segment cards filter the product list; every figure is computed on your shop's local calendar day, not UTC's.
CSV round-trip
Import starts from a template pre-filled with your catalog
Download the template and your products are already in it — paste dates into one column instead of building a SKU list. Validation shows exactly what will happen before anything is written; failed rows come back in the same shape, ready to fix and re-upload.
Bins
Record where each batch physically sits
Location says which site; bin says which shelf. When the expiring batch is in COLD-B-04 and the fresh one is in overflow, the picker knows — and that difference is where rotation actually fails.
Automatic markdowns
Prices that follow the batch
As a batch nears its date the price steps down a ladder you set — 10 % at 30 days, 25 % at 14, 40 % in the last week by default — off the regular price, never compounded. When the batch sells out, or you edit the price yourself, the price goes back and the engine steps aside. The product page says why it is cheaper, and a datima-expiring tag builds a Clearance collection. Free, switched on per store on request.
Expired stock
Write the batch off, and Shopify's inventory follows
An expired batch is a number Shopify is still counting. Write off on the batch zeroes it in Datima and removes the same units from Shopify's inventory in one operation, with the reason and a link to the batch in Shopify's inventory history. Restock the batch and the units go back, capped at what was taken. Never automatic: one press per batch, by design.
Storefront
Your product pages can show freshness too
The Best before block shows the selected variant's date in your theme's language, no code — and the reason when a price is reduced. The earliest expiry also mirrors into a Shopify metafield for Flow or other apps.
Weekly digest
Monday morning: what expires this week
One email a week with what expired, what expires within 7 and 30 days and what it is worth, the ten batches to act on first, and what the markdowns sold — in your admin's language. Off in one click.
Bulk edit
Fix a whole delivery at once
Select products, set or shift dates in one action — all-or-nothing, so a half-applied edit can't happen, and a double-submit can't apply twice.
Honest by design
Free during early access
Every feature, unlimited SKUs, no card. And whatever pricing looks like later, viewing and exporting your data will never be locked.
Unmatched sales are shown, not hidden
If sales outrun your recorded batches, the app says so per product — a prompt to record stock, never silent bad numbers.
Uninstall keeps your data
Reinstall and your batches are back. Deletion happens on Shopify's GDPR schedule, honoured to the letter.