Skip to content

Lot Tracking

Lot tracking gives a batch of stock a shared identity — a lot number — so you can trace it from receiving or production through to the order it shipped in. This is the basis for recalls, expiration management, and (for food producers) regulatory traceability.


What is a lot?

A lot (also called a batch number) is an identifier assigned to a group of units that came in or were produced together — sharing the same receiving date or production run, and the same expiration date if one applies. If a problem turns up with one unit, you can find every other unit from the same lot.

Lot tracking is optional per product. Enable it under Inventory → Products → [product] → Edit → Lot tracking. Products without it are tracked as plain, undifferentiated stock — nothing below applies to them.


How lots are created

A lot is created automatically whenever lot-tracked stock enters the system:

  • Receiving a purchase order — you're asked for a lot number (and optionally an expiration date and notes) for each line as you receive it.
  • A manual stock receive adjustment — same, for stock that didn't come through a purchase order.
  • Completing a production run — the output gets a lot number, generated automatically or overridden by you at completion time.

By default, Iraca generates lot numbers as YYYYMMDD-XXX (today's date + a sequence number, e.g. 20260727-001). You can type your own format or number instead — any alphanumeric string is accepted.


Per-lot stock and automatic FEFO allocation

Iraca tracks each lot's remaining quantity per warehouse, not just a single product-wide total. When a lot-tracked product is sold — through a sales order, POS, or consumed as a recipe ingredient in a production run — Iraca automatically draws from the soonest-expiring lot first (lots with no expiration date are drawn from last). If one lot doesn't have enough left, the sale or production run automatically continues into the next lot in line, and every lot involved is recorded separately so the split stays fully traceable.

You don't need to do anything for this to happen — it's automatic. There are two places you can override it with a specific lot instead:

  • Fulfilling a sales order — both from the order's Fulfill dialog (desktop) and from Fulfillment → Fulfill Orders (tablet), each lot-tracked line gets a Lot field. Picking a lot here is a preference, not a hard requirement: if that lot doesn't have enough left to cover the whole line, Iraca automatically finishes the line from the next FEFO lot — it never blocks the fulfillment.
  • A manual stock adjustment or transfer (Fulfillment → Adjust Stock, or the stock adjustment dialog on a product's detail page) — same Lot field, same soft-preference behavior when reducing stock.

Leaving any of these on Auto (FEFO) is always valid and is the default.


Finding a lot

There's no single "browse all lots" page today. Instead:

  • While adjusting or consuming stock manually, the Lot picker on that screen lists every lot for that product with remaining stock in the selected warehouse, soonest-expiring first.
  • To look up a specific lot's full history, use Compliance → Lot Trace and enter its lot number — it shows every movement that lot has been part of (received, reserved for production, returned from production, consumed, produced, transferred, adjusted, rejected to quarantine), each linking back to the order or production run it belongs to.

Tracing both directions across a production run

When a run consumes an ingredient, Iraca records one movement per lot it drew from. A batch that took 12 kg from one lot and 18 kg from another leaves two separate records, not one averaged line — which is what makes either direction of the trace exact.

Backward — what went into this batch. Trace a finished lot and its Produced event lists the ingredient lots that went into it, with the quantity taken from each, under Made from these lots. Each one links straight to its own trace, so you can keep walking back toward the supplier.

Forward — where did this ingredient end up. This is the direction a real recall usually starts from: a supplier condemns a raw material lot, and nothing ever shipped under that number. See Mock Recall below.


Mock Recall

Compliance → Mock Recall lets you simulate a recall: enter a lot number and Iraca lists every fulfilled sales order that shipped units from it, along with the customer contact for each — so you know who to notify before you'd ever need to act on a real recall.

You can enter an ingredient lot, not just a finished one. If the lot was used in production, Iraca follows it forward: it finds the runs that consumed it, takes the finished lots those runs produced, and reports the customers who received those. The finished lots appear under Produced into these lots so you can see the chain, and the affected-orders list below covers the whole thing.

This keeps working through several stages. If a base sauce is made from a pepper lot and then goes into a finished product, recalling the pepper lot reaches the finished product's customers, and the intermediate lot is marked indirect. Runs that were cancelled are ignored — nothing was produced from them.

If the ingredient lot was used in production but nothing made from it has shipped yet, you'll see the finished lots listed with no affected orders. That's a real answer, not an empty result: the exposure exists in stock, not with customers.


Quarantine

Rejected units from a purchase-order receipt (or anything flagged during fulfillment) go into an automatically-created Quarantine warehouse rather than becoming available stock. From Warehouses → Quarantine, you can resolve a rejected batch by writing it off or transferring it into a real warehouse — and if it came from a lot-tracked product, that lot's balance moves with it, so the lot's traceability record stays accurate.

Quarantine is a property of where stock sits, not a status on the lot itself — a lot can have some units quarantined and others in normal circulation at the same time.


Printing a batch's lot number on a label

A label template can include a Lot Number and a Best By Date element (in the Label Builder's element palette, alongside Product Name and Net Weight). Unlike other elements, these two pull their value from a specific production run rather than from the product — so the same template works for every batch, always showing that batch's real lot number and expiration date.

To print one: open the run in Production Runs, click Print Label (shown once the run is completed), pick a template, and download the PDF. You can print the same run's label as many times as you need — nothing is saved or limited to one print.

When designing a template, use the Preview Production Run selector in the Label Builder to see real values in place of the placeholder text.


Frequently asked questions

Do I have to track lots for every product? No. Lot tracking is optional per product, enabled in the product's edit form.

What happens to a lot when all its units are shipped or consumed? Nothing changes on the lot record — its remaining balance in each warehouse simply reaches zero. The lot stays in the system permanently; Lot Trace and Mock Recall both work regardless of whether any stock remains.

Can I merge two lots? No — lots aren't merged or edited once created, to keep the traceability record trustworthy. If you need to combine inventory, produce a new run or receipt and reference the source lots in its notes.

This guide covers the Iraca app and its add-ons. The Iraca Marketplace is documented separately.