Skip to main content

Configure a product's units of measure

Every product is counted in exactly one stock unit of measure (UoM) — the canonical unit its inventory is tracked in. On top of that you can add alternate units so you can buy the product in one unit (say, a Box of 12) and still count stock in another (Each). You set all of this on the Units of Measure tab of the product detail page.

Each alternate unit carries a conversion factor back to the stock unit, so the system can normalise any quantity — a purchase order line, a bill-of-materials component, a sales line — into stock units automatically.

For the field-by-field lookup (columns, flags, validation limits), see the Units of measure reference. To manage the shared list of units themselves (creating Box, Pallet, etc.), that lives in Settings, not on the product.

Before you begin

  • Open the product first — see Edit a product's details for how to reach the detail page. Configuration is per product; there is no bulk UoM editor.
  • Editing is gated the same way as the rest of the product detail page — you need product-edit access, and the tab is read-only otherwise. See the Product permissions reference.
  • The tab uses the shared pessimistic edit lock: if another user is already editing this product, the Edit button is disabled and a tooltip names who holds the lock. If they take over while you are editing, the tab drops back to read-only and your unsaved changes are reverted.
  • The units you assign must already exist in the global units list. New products start with a single stock unit (usually EACH), set when the product was created — see Create a product.

Open the Units of Measure tab

  1. Open the product.
  2. Click the Units of Measure tab. The saved units load into a table, with the stock unit listed first, then the purchase unit, then the sales unit, then any others.

Each row shows the Unit of Measure, its Conversion Factor, its Display Precision, and three flags: Stock, Purchasing, and Sales.

Edit the set

  1. Click Edit. The rows become editable and Save / Cancel appear.
  2. Make your changes (add rows, pick units, set factors and flags — covered below).
  3. Click Save. The whole set is validated and written at once. Click Cancel to discard your edits and revert to the last saved state.

Saving replaces the entire set — it's not a partial patch. Any row you removed while editing is deleted, and every row you kept is created or updated. Because of this, a product must always keep at least one unit of measure; saving an empty set is rejected.

Add a unit

  1. Click Add Unit of Measure. A new blank row appears.
  2. In the Unit of Measure cell, pick a unit from the autocomplete. Units already used by other rows are excluded, so you can't add the same unit twice.
  3. Set its Conversion Factor and, optionally, its Display Precision.

The Add Unit of Measure button is disabled once every available unit is already on the product.

Designate the stock unit

Exactly one row must be the stock unit, marked with the Stock radio. The stock unit is the reference all conversions are measured against, so:

  • Its conversion factor is always 1 and can't be edited (the field is disabled on the stock row).
  • Selecting a different row as Stock automatically resets that row's factor to 1.
  • You can't remove the stock row while it's the stock unit.

If the set has zero stock units or more than one when you save, the save is rejected with Exactly one unit of measure must be marked as the stock unit.

Flag the purchasing and sales units (optional)

  • Purchasing — the default unit used when you buy this product from a supplier.
  • Sales — the default unit used when you sell it.

At most one unit can be flagged for each. Ticking a new purchasing (or sales) unit clears the flag on any other row. These flags are optional — a product with only a stock unit is perfectly valid.

Understand the conversion factor

The conversion factor is the number of stock units contained in one of that row's units.

Example: if you count stock in Each and also buy in Box, and one box holds 12 items, put 12 on the Box row. The system then reads a purchase of "5 Box" as 5 × 12 = 60 Each of stock.

RowUnitConversion factorReads as
StockEach1the reference
PurchaseBox121 Box = 12 Each
Pallet4801 Pallet = 480 Each

Every factor must be greater than zero; a zero or negative factor is rejected on save.

Auto-filled factors for weight and volume units

When both the stock unit and the unit you just picked are built-in weight units (KG, G, LB, OZ) or built-in volume units (L, ML), the tab derives the conversion factor for you from the standard ratios (for example, picking G against a KG stock unit fills in 0.001). It only auto-fills while the row is still at its default factor of 1, so it never overwrites a value you have already typed.

Count units — EACH, BOX, PALLET — are never auto-filled, because how many pieces are in a box is specific to the product (a box of labels holds a different count than a box of jars). You must type those factors yourself.

Set display precision

Display Precision is the number of decimal places used when showing a quantity in that unit. It defaults to 2 and accepts a whole number from 0 to 8. It affects display only — it doesn't change stored quantities or conversions.

Save and validation

When you save, the whole set is checked server-side. If anything is invalid, nothing is written and you get one of these messages:

MessageCause
A product must have at least one unit of measure.You tried to save an empty set.
Each unit of measure can only appear once per product.The same unit appears on two rows.
Conversion factor must be greater than zero.A factor is zero, negative, or blank.
The stock unit of measure must have a conversion factor of 1.The stock row's factor isn't 1.
Exactly one unit of measure must be marked as the stock unit.Zero or more than one Stock radio is set.
At most one unit of measure can be marked as the purchase unit.Two rows are flagged Purchasing.
At most one unit of measure can be marked as the sales unit.Two rows are flagged Sales.

The tab also runs a few of these checks locally before it sends — that every row has a unit picked, that exactly one row is the stock unit, and that every conversion factor is greater than zero — surfacing them as an error notification so you catch them without the round-trip. The rest are enforced server-side on save.

Why the stock unit locks after history

Once a product has transactional history, its stock unit can no longer be changed — the Stock radios become disabled and a note reads "Stock unit cannot be changed — product already has inventory or BOM history." This matches the same warning shown in the create modal.

A product counts as having history when any of the following exist for it:

  • inventory movements (any recorded stock movement), or
  • bill-of-materials component lines (it's used as a component), or
  • bill-of-materials output lines (it's produced by a BOM).

The reason is integrity: existing movements and BOM quantities are already recorded in the current stock unit. Re-pointing the stock unit would silently reinterpret every one of those historical quantities. You can still add, remove, or re-flag alternate units and change their conversion factors on a product with history — only the identity of the stock unit is frozen. If you attempt to change it anyway, the save is rejected with "The stock unit of measure cannot be changed after the product has been used in inventory movements or BOMs."

To see the movements that lock a product, open the movement ledger.

Remove a unit

While editing, click the × at the end of a row to remove it, then Save. You can't remove the stock row while it's the stock unit — reassign Stock to another row first if you need to drop the current one (and only if the product has no history, per above).

Next steps

Video transcript

Every product is counted in one stock unit of measure — here, Each. The Units of Measure tab lists that unit and any alternates, each with a conversion factor back to the stock unit, a display precision, and flags marking which unit is used for stock, purchasing, and sales. Click Edit to change the set. The stock unit's factor is locked at one, and here it can't be swapped, because the product already has inventory. Add Unit of Measure adds an alternate — say a Box — where you pick the unit and set how many stock units it equals. Saving writes the whole set at once.

Last verified: