Skip to content

Aggregated vs tracked batches

Two warehouses can hold the same product and look completely different on the Batch Update table. One shows several rows — one per batch, each with its own expiry — while the other shows a single row tagged Aggregated. That difference comes from one warehouse setting: batch & expiry tracking.

Batch tracking ON — a row per batch

When a warehouse tracks batch and expiry, every distinct batch of a product is its own inventory record. The table shows each batch separately, with its batch number, expiry date, and its own Soon / Expired badge when relevant. This is the right model for pharmacy stock, where FEFO (first-expiry-first-out) depends on knowing exactly which batch is which.

Here you can edit the batch number and expiry on each line independently.

Batch tracking OFF — one Aggregated row

When a warehouse does not track batch and expiry, the batches would otherwise appear as many near-identical rows with no batch to tell them apart. Instead, Batch Update aggregates them: it sums the quantities into a single row per product and warehouse, tags it Aggregated, and hides the batch and expiry fields (there is nothing meaningful to edit there).

On an aggregated row:

  • Batch shows the Aggregated pill; Expiry shows .
  • Editing price updates all the underlying records together, so the product’s price stays consistent.
  • A decrease in quantity is spread across the underlying records automatically, draining the largest first.

The edit drawer shows a short amber note when a row is aggregated, so you always know which mode you are in.

Why it matters

If you are hunting for a specific batch and the warehouse doesn’t track batches, you won’t find one — that’s expected, not a bug. And if you change the price on an aggregated row, remember it moves every underlying record for that product at once. When you need per-batch control, the warehouse must have batch tracking enabled.