Datima.ai

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.

Get Expiry Management