How to Create a Bill of Materials

How to create a bill of materials: defining the end item, listing components and quantities, handling sub-assemblies, and connecting the BOM to costing and production.

How to Create a Bill of Materials

The fields a BOM needs, how to structure multi-level sub-assemblies, and how to connect it to costing and production instead of leaving it as a static list.

By Tibeau De Grauwe, FounderUpdated September 2026

  • 25 products free
  • No credit card
  • 10-min setup

Key takeaways

  • A BOM needs the finished good, every component and sub-assembly, the quantity of each per unit, and a unit of measure.
  • Sub-assemblies get their own BOM and are referenced as components in the parent — this is what makes a BOM "multi-level" instead of flat.
  • A BOM only becomes useful once it drives cost rollup and, ideally, automatic stock deduction when a build completes.
  • Treat component or quantity changes as a new revision rather than silent edits, so past builds still reflect what was actually used.

What a bill of materials needs

A bill of materials needs the finished good it describes, every component and sub-assembly required to build one unit of it, the quantity of each, and the unit of measure for that quantity. If a component is itself made of other parts, give it its own BOM and reference it as a sub-assembly — that nesting is what makes cost and stock calculations roll up correctly instead of having to be re-entered by hand.

Single-level vs. multi-level BOM

StructureWhen to use it
Single-level (flat) BOMThe finished good is built directly from raw materials or purchased parts — no component is itself assembled from other components.
Multi-level BOMOne or more components is itself a sub-assembly with its own BOM — common once the same sub-assembly is reused across multiple finished goods.

Building the BOM, step by step

1. Define the end item

Identify the exact finished good (or sub-assembly) the BOM describes — one BOM always corresponds to one unit of one specific item.

2. List every component

Add each raw material, purchased part, and sub-assembly needed, with the exact quantity and unit of measure required per unit of the end item.

3. Nest sub-assemblies

If a component is itself built from parts, give it its own BOM rather than flattening it into the parent — this is what keeps updates from having to be made in multiple places.

4. Add unit costs

Attach a cost to each component, including any scrap or waste factor, so the finished-good cost rolls up automatically instead of being calculated by hand.

5. Connect it to production

A BOM only drives real inventory accuracy once building against it deducts the right component quantities from stock automatically.

6. Version on change

When a component, supplier, or quantity changes, create a new revision rather than editing silently, so past builds still reflect what was actually used.

Turning the BOM into production

A BOM by itself is a static list. See material requirements planning for how a BOM feeds into deciding what to order and when, and free bill of materials software for how StockFlow handles multi-level BOM authoring and cost rollup. If you are deciding whether you need a BOM, a kit, or an assembly workflow specifically, see BOM vs. kitting vs. assembly.

Trusted by small businesses

What our customers say

Super Kind! Quick replies from their support and very easy fixes, changed the dashboard a bit and customized it. Also gave me 450 items extra on the free plan just for me. Highly recommend and again great service!

Erasable Trading AU

Best customer service! Stockflow's customer support is fast and extremely helpful. They assisted me with customization of the software to improve my experience as a user.

Justin M.

Co-Owner, Consumer Goods

Frequently asked questions

What is the difference between a BOM and a parts list?
A parts list is just an enumeration of components. A bill of materials adds structure: exact quantities per unit of the finished good, unit of measure, and — in a multi-level BOM — which components are themselves sub-assemblies with their own BOM. A parts list tells you what is in the box; a BOM tells you what to buy or build, and how much.
How do I handle sub-assemblies in a BOM?
Give the sub-assembly its own BOM, as if it were a finished good in its own right, then reference it as a component inside the parent BOM. This is what makes a BOM "multi-level": cost and component usage roll up automatically from the sub-assembly to the parent, and updating the sub-assembly once updates every parent BOM that uses it.
How often should a BOM be revised?
Any time a component, supplier, or quantity changes — not on a fixed schedule. Treat each meaningful change as a new revision rather than editing history silently, so past production runs and cost calculations still reflect what was actually used at the time.
Can I build a BOM in Excel?
Yes, for a small number of simple products a spreadsheet can hold a flat BOM. It breaks down once you need multi-level nesting (a sub-assembly used in several parent BOMs), automatic cost rollup when a component price changes, or automatic stock deduction when a build completes — at that point, updates have to be made by hand in every place the component appears, which is where spreadsheet BOMs quietly go stale.