Assembly and Bill of Materials
Kit / assemble-to-stock from a bill of materials. Stock moves only when you Complete.
Assembly is kit / assemble-to-stock. Define a recipe (BOM), create an assembly order, then Complete. That issues components and receives the finished item.
It is not full manufacturing: no routing, no kg recipes, no FEFO, and no work-in-progress asset.
Navigate to Inventory → BOM for recipes and Inventory → Assembly for orders.
Bill of Materials
A BOM is the recipe for one finished item.
Creating a BOM
- Inventory → BOM (tab) → New BOM.
- Pick the finished item, name the recipe, optional description, optional Labour / Overhead.
- Save. The BOM detail opens.
- Add component: pick the item, quantity, optional Wastage %, then Add.
Fractional quantity is allowed on the recipe. Complete rounds up to whole units.
BOM Fields
| Field | Description |
|---|---|
| Finished item | Existing inventory item the build receives |
| Name | Recipe name |
| Description | Optional notes |
| Labour / Overhead | Optional conversion cost per finished unit (posted at complete) |
| Components | Item, quantity, optional wastage % |
Use Edit on the BOM to change name, labour, overhead, or active. Change component qty or wastage on the row (saves when you leave the field).
Assembly Orders
Processing an assembly
- Inventory → Assembly → New assembly order.
- Pick a BOM and the quantity of finished units (whole units). The needed vs on-hand preview is informational — it does not block create.
- Optional Start. That sets status to in progress only — it does not reserve components and does not post WIP.
- Complete. A dialog lists on-hand vs needed (wastage rounded up). Confirm stays disabled if any component is short.
- Complete issues components (whole units) and receives the finished item.
Start is optional. You can Complete from draft. Cancel on a draft or in-progress order is status-only — stock has not moved, so there is nothing to reverse.
Stock impact
- Stock moves only on Complete (dashboard) or MCP
build_assembly. - In progress does not reserve components and does not post work-in-progress inventory.
- Open assembly orders are not inventory. They do not appear on the balance sheet.
- Anchor does not keep a WIP asset for unfinished jobs. Labour/overhead credit Manufacturing / WIP Clearing (2305), a liability, at complete. That is not unfinished goods.
- Do not treat assembly as full manufacturing (no routing, no kg recipes, no FEFO).
When Complete succeeds:
- Component quantities decrease by the whole units issued (recipe qty × order qty × (1 + wastage %), rounded up).
- Finished item quantity increases by the order quantity.
- Inventory value is the rolled-up component cost plus labour/overhead.
Whole units
Quantity on hand is pieces. Use “1 bag of flour”, “1 batch”, “1 carton”. The Unit (display only) field on the item is a label — there is no conversion. Fractional BOM qty is rounded up at complete (for example 0.4 becomes 1; 1 + 10% wastage becomes 2).
Manufacturing / WIP Clearing (2305)
If you set labour or overhead, 2305 accumulates a credit at complete. Clear it with a manual journal when you recognise wages or overhead (DR 2305 / CR the account you actually pay). If labour and overhead are zero, you usually will not see 2305 except for rounding.
Kit-of-kits
Complete does not explode nested BOMs. Build the sub-assembly first so its finished item is in stock; the parent BOM consumes that item.
Locations / warehouses
Complete does not pass a warehouse. Item on-hand changes; per-location bins (warehouse_stock) do not. If the org uses Inventory → Locations, those quantities can drift. Do not use assembly as a bin transfer.
Example
A BOM for "Desktop Computer" might include:
| Component | Quantity |
|---|---|
| CPU | 1 |
| RAM Module | 2 |
| Hard Drive | 1 |
| Case | 1 |
| Power Supply | 1 |
Assembling 10 desktop computers consumes 10 CPUs, 20 RAM modules, and so on — all whole units.
Related
- Inventory — items, units, and stock
- Landed Costs — extra costs on purchased stock
- MCP Server — BOM and assembly tools