# Bill of Materials Setup

A **Bill of Materials (BOM)** defines what NexWave needs to make a finished item. It brings together the output quantity, raw materials, sub-assemblies, operations, expected scrap or process loss, and the estimated production cost.

Use this guide when you are creating a BOM, reviewing an existing setup before production, refreshing costs, or replacing a submitted BOM with a new version.

## Before you start

Confirm these points before creating the BOM:

* The finished **Item** already exists, is enabled, and has **Maintain Stock** ticked.
* Every stock component and sub-assembly exists as an **Item** with the correct **Default Unit of Measure**.
* Any service, labour, packaging, or overhead component that is not stock tracked has **Include Item In Manufacturing** ticked on its Item record.
* Operations, Workstations, Workstation Types, and a Routing already exist if you plan to include production steps.
* The material rate source is agreed: **Valuation Rate**, **Last Purchase Rate**, or **Price List**.
* The expected output quantity, component quantities, scrap, and process loss have been checked by someone who understands the production process.
* You have the required manufacturing access to create and submit BOM records.

The finished Item's **Item UOM** is read-only on the BOM. It comes from the Item's **Default Unit of Measure**, so correct the Item record first if the unit is wrong.

## Choose the material rate source

Open **Cost Configuration** and select **Rate Of Materials Based On**. The selected method controls the rates NexWave fetches for stock components.

| Option | What NexWave uses | When it is useful |
|--------|-------------------|-------------------|
| **Valuation Rate** | The recorded inventory valuation for the company, with fallback logic when no current warehouse valuation is available. | You want the BOM estimate to follow the current carrying value of stock. |
| **Last Purchase Rate** | The Item's stored last purchase rate. This is not a live supplier quote. | Recent purchasing cost is the preferred planning basis. |
| **Price List** | The selected buying Price List. Its currency must match the BOM currency or company currency. | The business maintains an approved standard-cost or buying-price list. |

 ![Material rate source in Cost Configuration](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC9mMTU5OGY2Ny05ZjRiLTRlNjItYTZhMC05N2IyOGIyZTM3NTMvMDUtY29zdC1jb25maWd1cmF0aW9uLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.dKq21UjsnzSWlwGXYv03miAq0wVk2ZSZ-OohQ_Lu8cE)

If a component is not stock tracked, enter and maintain its **Rate** on the BOM row. **Update Cost** does not refetch non-stock or scrap-item rates.

## Step 1: Create the BOM and set the output


1. Open **Manufacturing**.
2. Open **Bill of Materials**, then **Bill of Materials** again.
3. Click **Add BOM**.
4. Select the finished **Item**.
5. Confirm **Company** and the read-only **Item UOM**.
6. Enter **Quantity**. This is the finished output represented by all component and operation quantities in this BOM.
7. Leave **Is Active** ticked when the BOM should be available for normal production use.
8. Tick **Is Default** when this should be the BOM selected automatically for the finished Item.

 ![Production Item and raw materials on a submitted BOM](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC8yMjhkYTY0ZC1kNjc5LTRkOWMtYTdiMi04MTIzNWUzNmI4OGQvMDEtcHJvZHVjdGlvbi1pdGVtLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.VL16iZIKo-kBkE0xFm1hnRB50o0j3YhsMJ2IdhHTDWA)

Only submitted, active BOMs appear in normal BOM selectors. Marking a BOM as default also makes it active and updates the Item's default BOM. Setting a new default unsets the previous default, but it does not deactivate the older BOM.

## Step 2: Add raw materials and cost components

In **Production Item > Raw Materials**, add one row for each material or cost component.

For each row, review:

* **Item Code**: the stock item, sub-assembly, service, labour, packaging, or overhead item.
* **Qty**: the quantity required for the BOM output quantity.
* **UOM**: the unit used for the component quantity.
* **Rate** and **Amount**: the estimated component cost.
* **BOM No**: the active child BOM used for a sub-assembly.
* **Include Item In Manufacturing**: whether the component belongs in the manufacturing cost and requirements.
* **Do Not Explode**: whether the sub-assembly should remain a single component instead of exposing its lower-level ingredients.

Use the row editor to review additional fields such as **Source Warehouse**, **Conversion Factor**, and **Allow Alternative Item** when your process needs them.

### Stock components

For stock-tracked components, NexWave fetches the rate using **Rate Of Materials Based On**. Check the UOM and conversion factor before accepting the amount, especially when purchasing and production use different units.

### Non-stock cost components

A non-stock Item can contribute labour, subcontracting, freight, packaging, or another non-inventory cost when **Include Item In Manufacturing** is enabled on the Item. It contributes to production cost but is not transferred from a warehouse as inventory.

Enter a reasonable **Rate** on the row and maintain it deliberately. It will not be refreshed by **Update Cost**.

### Sub-assemblies

When a component has its own active default BOM, NexWave normally fills **BOM No**. Tick **Set rate of sub-assembly item based on BOM** when its cost should come from the child BOM's unit cost.

If **Do Not Explode** is ticked, NexWave clears **BOM No** and treats the sub-assembly Item as a direct component. It does not keep the child BOM while merely hiding its ingredients.

Whether lower-level materials appear on a Work Order or stock transaction also depends on **Use Multi-Level BOM** on that downstream record. A linked child BOM is not automatically exploded everywhere.

## Step 3: Add operations or a Routing

Tick **With Operations** when the BOM should include production activities, time, and operating cost.

You can add operations manually or select a **Routing**. A Routing copies its operations only when the **Operations** table is empty, so do not use it to overwrite an existing operation list.

Each operation needs:

* **Operation**
* either **Workstation** or **Workstation Type**
* **Operation Time** greater than zero

Selecting a Workstation fetches its hourly rate. NexWave normally calculates the operation cost from that hourly rate and the operation time in minutes. Use **Fixed Time** only when the planned time should not scale with the BOM quantity.

 ![Operations and estimated operating costs](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC9kMzllZDc5YS05MmJhLTRmNDUtODhlYi0xZjVkYWM2MWViMTAvMDItb3BlcmF0aW9ucy5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5MjYyMDkwMCwiZXhwIjoxNzkyNzA3MzAwfQ.L0YCEv1HTNW1Tu1JURHYZSAb7lyeKLM5X3YaB18zCY0)

When **With Operations** is ticked, NexWave will not submit the BOM without at least one valid operation row.

## Step 4: Record scrap and process loss

Open **Scrap & Process Loss** when production creates measurable by-products or regularly produces less finished output than planned.

Use the two controls differently:

| Control | Use it for | Cost effect |
|---------|------------|-------------|
| **Scrap Items** | Measurable scrap, recoverable material, or by-products that can be recorded as an Item. | The scrap value is deducted from the BOM's total cost. |
| **% Process Loss** | Expected loss of finished output caused by the process. | NexWave calculates the read-only **Process Loss Qty** from the percentage and BOM output quantity. |

 ![Expected process loss fields](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC83NjM5NmY2Yy1kZWJjLTQwZWQtYTM2OS02YjhmNGNkNmVmOGYvMDMtc2NyYXAtcHJvY2Vzcy1sb3NzLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.hqNJ5woKuUDMhPjS9Gp3mhL2cxIFZajD9BJgNM-_jqA)

The process-loss percentage cannot exceed 100%. If the output UOM only allows whole numbers, choose a percentage and output quantity that do not produce a fractional **Process Loss Qty**.

Review scrap-item rates manually. **Update Cost** does not refetch them.

## Step 5: Review cost and submit

Open **Costing** and review the summary:

* **Operating Cost**: the total planned operation cost.
* **Raw Material Cost**: the total component cost.
* **Scrap Material Cost**: the value credited for scrap or by-products.
* **Total Cost**: operating cost plus raw material cost, less scrap material cost.

 ![Operating, material, scrap, and total cost summary](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC9mZjkzN2RiMS00MzMyLTRmYjItYTlmNy1lYjdiNWM2ZmQ3YzcvMDQtY29zdGluZy5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5MjYyMDkwMCwiZXhwIjoxNzkyNzA3MzAwfQ.ZmWwp3CBl-M_zGIVTWfTS_fZ2XtGfwK9S3omeqi4RG8)

Before submitting, confirm:


1. **Quantity** represents the intended finished output.
2. Every required component is present with the correct **Qty** and **UOM**.
3. Sub-assemblies use the intended **BOM No**, cost basis, and explosion setting.
4. Non-stock and scrap-item rates have been reviewed manually.
5. Operations match the real sequence, workstation, and planned time.
6. Scrap and process loss are realistic and not counted twice.
7. **Total Cost** is reasonable for one BOM output quantity.
8. **Is Active** and **Is Default** match how the BOM should be selected after submission.

Save, then **Submit** the BOM. Use **Browse BOM** after submission when you need to inspect the component hierarchy.

## Refresh costs when rates change

Use **Update Cost** on the BOM after valuation rates, last purchase rates, Price List rates, or Workstation hourly rates change.

The action refreshes stock-component and Workstation rates, recalculates the totals, saves the BOM, and can update submitted parent BOMs when the total changes. It does not refetch non-stock component or scrap-item rates, so review those rows separately.

For many BOMs, open **Manufacturing > Tools > BOM Update Tool** and use **Update latest price in all BOMs**. NexWave processes lower-level BOMs before their parents. Use **View BOM Update Log** to confirm whether the update completed or reported an error.

Refreshing rates does not create a structural version. Use it only when the materials, quantities, operations, routing, and expected yield remain the same.

## Create a new version when the structure changes

Use **New Version** when a submitted BOM needs different components, quantities, operations, routing, scrap, or yield.


1. Open the current submitted BOM.
2. Click **New Version**.
3. Make the approved structural changes.
4. Review all materials, operations, loss settings, and costs.
5. Save and submit the replacement.
6. Set **Is Default** on the replacement if it should be selected automatically.
7. Review the old BOM's **Is Active** and **Is Default** settings.

**New Version** does not deactivate or cancel the old BOM automatically. Keep the older BOM active only when users genuinely need to select it for existing or alternate production.

Use **Amend** only after a BOM has been cancelled. Cancellation can be blocked when an active submitted parent BOM or another linked record still references it, so **New Version** is the normal path for structural changes.

## Final review checklist

Before releasing the BOM for production, confirm:

* The finished Item and output UOM are correct.
* The BOM output quantity matches the unit used to plan production.
* All stock, non-stock, and sub-assembly components are included.
* Component quantities and conversion factors match the physical recipe or build specification.
* The material rate source is appropriate for this company and currency.
* Manual non-stock and scrap rates are current.
* Operations, Workstations, and times are complete.
* Expected scrap and process loss are realistic.
* Total cost is reviewed against an independent estimate or recent production result.
* The correct submitted BOM is active and default.
* A draft Work Order has been checked before the first live production run.

## Troubleshooting

| Issue | What to check |
|-------|---------------|
| The finished Item cannot be selected | Confirm the Item is enabled, has **Maintain Stock** ticked, and has not passed its end-of-life date. |
| A component cannot be selected | Confirm the Item is enabled, is not a fixed asset, and has **Include Item In Manufacturing** ticked. |
| The Item UOM is wrong | Update **Default Unit of Measure** on the Item. **Item UOM** is read-only on the BOM. |
| Price List rates do not appear | Select a **Price List** and confirm its currency matches the BOM currency or company currency. |
| A supplier's latest quote is not reflected | **Last Purchase Rate** uses the Item's stored last purchase rate, not a live quote. Update the relevant purchasing data or use another approved rate basis. |
| A non-stock or scrap rate did not change after Update Cost | These rates are not refetched. Review and update them manually where appropriate. |
| A sub-assembly has the wrong cost | Confirm **BOM No**, **Set rate of sub-assembly item based on BOM**, and whether the child BOM is active and default. Refresh the child BOM before the parent. |
| Lower-level materials do not appear on a Work Order | Confirm the component has a linked **BOM No**, **Do Not Explode** is not ticked, and **Use Multi-Level BOM** is enabled on the downstream record. |
| Selecting a Routing does not replace the operations | Routing copies only when the **Operations** table is empty. Clear the draft operation rows first only if it is safe to replace them. |
| The BOM cannot be submitted with operations | Add at least one row and confirm **Operation**, **Workstation** or **Workstation Type**, and a positive **Operation Time**. |
| Process Loss Qty is rejected | Keep **% Process Loss** at or below 100% and avoid a fractional result when the output UOM requires whole numbers. |
| The old BOM is still selectable after New Version | **New Version** does not deactivate the old BOM. Review **Is Active** and **Is Default** after submitting the replacement. |
| The old BOM cannot be cancelled or deactivated | Check whether an active submitted parent BOM or another linked record still references it. Replace or retire parent references in a controlled order. |
| Production cost looks out of date | Run **Update Cost**, then separately review non-stock and scrap rates. For a multi-level BOM, refresh lower levels before parents or use **BOM Update Tool**. |

## Related documentation

* [Manufacturing](/doc/267f5cef-ea45-4a51-8686-30c2f3390480): overview of manufacturing records and reports.
* [Inventory Item Record](/doc/fe202d8f-a9bf-4698-90d9-5e7be5b1e632): prepare finished, stock, and non-stock Items before adding them to a BOM.
* [Manufacturing Routing](/doc/04216048-2104-4de6-aecb-232f378f9120): define a reusable sequence of operations.
* [Workstations](/doc/7fa678c8-7713-485a-a91c-40102aa1b539): maintain production locations and hourly operating rates.
* [Make to Order Production Process](/doc/57a3ebc9-d4bf-43e4-a887-26d4b1e4e68b): use an active BOM to plan and complete customer-driven production.