Batches & FEFO

Expiry Date and Lot Tracking

Same product, different expiry dates. Track each batch separately and let every sale automatically take the soonest-expiring stock first.

  • Multiple batches per item, each with expiry and lot number
  • True FEFO — deductions consume the soonest expiry first
  • Works everywhere: scans, sales, API, Square and receiving
  • Expiry alerts before stock becomes waste
Expiry date and lot tracking with FEFO batch rotation

What FEFO tracking really means

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.

What you get

Real batch records

Each lot carries its own quantity, expiry date and lot number.

Automatic rotation

Every deduction takes the soonest-expiring stock — no manual picking rules.

Consistent everywhere

Scans, API calls, Square sales and receiving all follow the same FEFO logic.

Lot-level audit trail

The activity log records which lot each deduction consumed.

Expiry alerts

Get warned days before stock expires, scoped to a tag or location if you like.

Receive into batches

Entering an expiry when receiving a PO creates the batch automatically.

Waste is a rotation problem

Most expired stock was not unsellable — it was simply behind newer stock. FEFO fixes that without anyone having to remember.

How it works

1

Enable expiry and lot fields

Switch them on in the field picker for the items that need them.

2

Record batches

Add each lot with its quantity and expiry — or let PO receiving create them.

3

Let it rotate

Sell and scan normally; the system always takes the soonest-expiring stock.

Frequently asked questions

How do you track inventory with expiry dates?

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.

What is the difference between FIFO and FEFO?

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.

Can I get alerts before stock expires?

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.

Does lot tracking work with barcode scanning?

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.

Explore related features

Ready to try it?

Start free with 50 items — no credit card, no trial countdown. Import your spreadsheet and you have a working system in minutes.