Batch ID tracking

Batch IDs are compliance identifiers scoped to a Production Order + Flavour + Region combination. Each unique flavour in a PO gets one batch ID, and that ID follows a strict three-stage lifecycle: generated, printed, and applied. Batch IDs are how EMS links a specific production run to a specific set of excise stamps — the chain of evidence that CRA auditors follow.


Why batch IDs matter

Canadian excise compliance requires full traceability from an individual excise stamp back to the product it was applied to and the production batch that created it. Batch IDs are the bridge between these layers:

During a CRA audit, an inspector may pick up a stamped product from a retail shelf and ask: "Show me the production batch, the source shipment, and the stamp allocation for this unit." With batch IDs in EMS, you can answer that question in seconds by searching the batch ID string printed on the label.

Batch IDs are per-flavour, not per-product

If a production order contains three flavours (e.g. Blueberry, Mango, and Watermelon), EMS generates three batch IDs — one per flavour. This granularity matters because stamps are applied per variant, and auditors trace at the variant level.


Generating batch IDs

To generate batch IDs for a production order:

  1. Navigate to the Batch ID Tracking page from the main navigation.
  2. Select a production order from the PO dropdown. The dropdown only shows POs that are in Open or In Production status and have not already had batch IDs generated.
  3. Click Generate.

EMS creates one batch ID for each unique flavour in the selected PO. When generation completes, you will see a confirmation message on screen, for example: "Generated 5 batch IDs covering 2,400 units for PO-0042".

Behind the scenes, the production order is flagged as having its batch IDs generated, which prevents duplicate generation and removes it from the dropdown. The batch IDs appear immediately in the tracking table below.

Generate at the right time

Only generate batch IDs after the PO's line items are finalized. Once generated, batch IDs are locked to the PO's current flavour list. If you add or remove flavours from the PO after generation, the batch IDs will not update to reflect those changes.


Batch ID format

Each batch ID is a human-readable string built from tokens. The default format is:

Default format

The default batch ID looks like: 20260115-7842AB3C-ON-0001

That is: date, followed by the air waybill reference, followed by the region, followed by a sequence number.

The parts that make up a batch ID are:

You can customise the template in Settings → Batch IDs → Format Template. For example, if you want the flavour in the ID, the result would look like: 20260115-BLUEBE-ON-0001.

Keep IDs scannable

If you print batch IDs as barcodes on your labels, keep the format under 30 characters. Long IDs produce dense barcodes that are harder to scan reliably at speed.


Marking as printed

Once you've physically printed batch ID labels for a production run, record that fact in EMS:

  1. Find the batch ID row in the tracking table (it will be in Generated status).
  2. Click the printer icon in the Actions column.
  3. The status changes to Printed.

EMS records the timestamp and the user who performed the action. The labels-printed count defaults to the full quantity for that batch ID — for example, if the batch covers 480 units of Blueberry Ice, the printed count is set to 480.

The printed status is your confirmation that physical labels exist and are ready for application on the production floor. It serves as a checkpoint between the digital record (generated) and the physical action (applied).


Marking as applied

After the production team has physically applied the batch ID labels to the stamped products:

  1. Find the batch ID row in the tracking table (it must be in Printed status).
  2. Click the checkmark icon in the Actions column.
  3. The status changes to Applied.

The applied count defaults to the printed count. EMS records the timestamp and operator for audit purposes.

You cannot skip the printed step

The lifecycle is strictly linear: Generated → Printed → Applied. Clicking the checkmark on a Generated row does nothing — you must mark it as Printed first. This enforces the physical workflow: labels must exist before they can be applied.

Batch ID lifecycle

Generated (batch ID is created and linked to the production order, flavour, and region)

↓ Click the printer icon

Printed (labels are physically printed; timestamp and user are logged)

↓ Click the checkmark icon

Applied (labels are physically applied to products; timestamp and user are logged)


Tracking and filtering

The Batch ID Tracking table is your central view of all batch IDs across all production orders. Each row shows:

You can filter the table by:

Use status filters to find your next action

Filter to "Generated" to see which labels still need printing. Filter to "Printed" to see which labels are waiting for the floor team to apply. This makes morning stand-ups fast — everyone can see what's pending at a glance.


Batch ID detail modal

Click the eye icon on any batch ID row to open the detail modal. This view gives you the complete picture for a single batch ID:

The detail modal is read-only — status changes are performed from the main tracking table using the action icons.


Limitations and tips

Keep these constraints in mind when working with batch IDs:

Tip for high-volume operations

If you run many POs per day, develop a habit of generating batch IDs immediately after the PO is created and finalized. This prevents a backlog of POs sitting in "no batch IDs" state, which can delay the floor team when they're ready to print labels.