Real batch records
Each lot carries its own quantity, expiry date and lot number.
Same product, different expiry dates. Track each batch separately and let every sale automatically take the soonest-expiring stock first.
A barcode identifies a product, not a carton. Two cases of the same milk with different expiry dates share a barcode, which is why a plain quantity field cannot tell you what is about to go off.
Batch tracking models what actually sits on the shelf: one item, several lots, each with its own quantity, expiry date and lot number. Deductions follow FEFO — first expired, first out — so selling three units takes them from the soonest-expiring lot automatically, everywhere in the system: manual edits, barcode scans, the API, Square sales and purchase-order receiving.
The item’s earliest expiry is mirrored into a standard field, so alerts, the daily sweep and reports all work without any special handling.
Each lot carries its own quantity, expiry date and lot number.
Every deduction takes the soonest-expiring stock — no manual picking rules.
Scans, API calls, Square sales and receiving all follow the same FEFO logic.
The activity log records which lot each deduction consumed.
Get warned days before stock expires, scoped to a tag or location if you like.
Entering an expiry when receiving a PO creates the batch automatically.
Most expired stock was not unsellable — it was simply behind newer stock. FEFO fixes that without anyone having to remember.
Switch them on in the field picker for the items that need them.
Add each lot with its quantity and expiry — or let PO receiving create them.
Sell and scan normally; the system always takes the soonest-expiring stock.
You need batch-level records, not a single expiry field on the item — because the same product arrives repeatedly with different dates. Here each item can hold multiple lots, each with its own quantity, expiry and lot number, and every deduction automatically takes from the soonest-expiring one. That is FEFO, and it is what keeps a food or pharmacy inventory honest.
FIFO consumes whatever arrived first; FEFO consumes whatever expires first. They are usually the same but not always — a delivery with a short shelf life should be sold before older stock with a later date. For perishables, FEFO is the correct rule, and it is what this system applies.
Yes. Because the earliest batch expiry is mirrored onto the item, an alert rule like "anything expiring within 7 days" works out of the box, and can be scoped to a tag, warehouse or aisle so you only hear about the areas you care about.
Yes, and it is where it matters most. Scanning an item out deducts FEFO automatically and the activity log records which lot was consumed, so you get traceability without asking staff to choose a batch at the point of scan.
Start free with 50 items — no credit card, no trial countdown. Import your spreadsheet and you have a working system in minutes.