How to Create a Bill of Materials — A Step-by-Step Guide for Makers
Learn how to create a Bill of Materials (BOM) for your handmade products, with a real-numbers worked example, common mistakes to avoid, and how Craftybase's recipe system maps directly to BOM concepts.

Most makers don’t need a formal Bill of Materials — until they do. The moment you have more than five products or your material costs start changing, running production from memory stops working.
Last updated: March 2026
A BOM is how you stop guessing what a batch costs. It’s a structured list of every material, quantity, and cost that goes into making one unit of your product. Not a rough estimate. Not “I usually use about half a bag of wax.” Exact amounts, with actual prices attached.
This guide walks you through creating your first BOM in seven steps, with a real worked example using a soy candle, plus the most common mistakes makers make along the way.
What is a Bill of Materials?
A Bill of Materials (BOM) is a document that lists every component required to make a product — the materials, quantities, unit measurements, and costs. It answers the question: “If I want to make one of these, exactly what do I need and what will it cost me?”
BoMs work for any product assembled from raw materials: from soaps to candles to printed circuit board assemblies. If you’re making it from scratch, you need a BOM.
A quick note on terminology. If you use Craftybase, you’ll recognise this concept as a recipe — that’s exactly what Craftybase calls it in the UI. Same concept, different name. We’ll use “BOM” and “recipe” interchangeably throughout this guide, so you feel comfortable with both terms.
There are two types of BOMs you might encounter:
- Manufacturing BOM (MBOM): Used in production — defines the materials and quantities needed to actually make the product.
- Engineering BOM (EBOM): Used in the design phase — defines what’s needed to build the product conceptually.
For this guide, we’re focused entirely on the MBOM — the one you use every time you run a batch.
Why BOMs matter for small manufacturers
It can feel like BOMs are a thing for factories, not handmade sellers. But that framing misses the point. A BOM is just a list — and the discipline of writing it down is what separates makers who are guessing their costs from makers who actually know them.
Here’s what a solid BOM does for you:
- Gives you a real cost per unit — not a ballpark, an actual number
- Lets you catch when supplier prices change — if your coconut oil goes up 20%, you see it immediately in your BOM
- Makes consistent production possible — especially when you’re handing off a batch to someone else
- Feeds your inventory tracking — every time you manufacture from a BOM, your material stock decreases accurately
The flip side: without a BOM, you’re making pricing decisions on instinct. And as many makers have discovered, that tends to mean underpricing your bestsellers and not noticing until you’re months into it.
Step 1 — Define your product
Before you write a single material down, you need to be clear on exactly what you’re building a BOM for.
This matters more than it sounds. If you make a lavender soy candle and a cedarwood soy candle, they look similar but they’re different products — different fragrance oils, potentially different pour temperatures, possibly different burn times. Each one needs its own BOM.
Also consider variations. A small (4oz) jar and a large (8oz) jar of the same candle scent aren’t just one BOM — the material quantities scale differently, so you’ll want a separate BOM for each size. Treating them as one BOM with different quantities introduces errors.
Once you’ve structured your product list, you can start building the bill.
Step 2 — List every component
Now write down every single material that goes into making one unit of your product. Everything — including the bits you might forget.
For a Lavender Soy Candle (4oz jar), the component list looks like:
- Soy wax flakes
- Lavender fragrance oil
- Cotton wick (pre-tabbed, appropriate for jar size)
- 4oz glass jar
- Metal lid
- Wick sticker (to hold wick centred during pour)
- Label (printed, custom design)
- Kraft paper tissue wrap (for packing)
Notice packaging is in there. This is where a lot of makers slip up — packaging costs are real, they add up, and they belong in the BOM. More on this in the mistakes section below.
Multi-level BOMs
If part of your production process involves making sub-assemblies first — say, you batch-produce a fragrance blend before using it in multiple products — you’d create a separate BOM for that sub-assembly. This is called a multi-level BOM.
For most small makers, a single-level BOM is enough. But if you’re scaling up, or you share components across lots of products, multi-level BOMs are worth understanding. See our bill of materials examples for a walkthrough.
Step 3 — Assign SKUs to each component
Every material in your BOM needs a unique identifier — a SKU (Stock Keeping Unit). This isn’t busywork. SKUs are what allow you to track inventory accurately, reorder the right thing, and avoid mix-ups when you have multiple variants of the same material (e.g. 4oz vs 8oz jars, or two different fragrance suppliers for the same scent).
For our candle example:
| SKU | Component |
|---|---|
| WAX-SOY-01 | Soy wax flakes |
| OIL-FRAG-LAV | Lavender fragrance oil |
| WICK-COT-4OZ | Cotton wick, 4oz jar size |
| JAR-GLASS-4OZ | 4oz glass jar |
| JAR-LID-STD | Metal lid, standard |
| CONS-WICK-STICKER | Wick sticker |
| PACK-LABEL-STD | Custom label |
| PACK-TISSUE-KFT | Kraft tissue wrap |
If you need help generating consistent, structured SKUs, our free SKU generator can speed this up considerably.
Once your BOM structure is set, Craftybase can take it from here. Every production run automatically updates your material stock levels and calculates your COGS in real time — no spreadsheet updates needed. See how Craftybase handles recipes and BOMs →
Step 4 — Specify quantities and units
For each component, record the exact quantity used per unit of finished product — and the unit of measurement you’re working in.
This step trips up a lot of new makers because material quantities can be surprisingly fiddly. You buy fragrance oil by the kilogram, but you use it in grams. You buy tissue paper in sheets, but you use one per product. Getting the unit conversions right at this stage prevents a lot of headaches later.
Some components are tricky to measure precisely at first. A good approach: make a test batch and measure as you go, then build the BOM from your actuals rather than estimates. Add a small waste allowance (say 5–10%) for materials prone to evaporation or trim waste.
| SKU | Component | Quantity | Unit |
|---|---|---|---|
| WAX-SOY-01 | Soy wax flakes | 115 | g |
| OIL-FRAG-LAV | Lavender fragrance oil | 11.5 | g |
| WICK-COT-4OZ | Cotton wick | 1 | each |
| JAR-GLASS-4OZ | 4oz glass jar | 1 | each |
| JAR-LID-STD | Metal lid | 1 | each |
| CONS-WICK-STICKER | Wick sticker | 1 | each |
| PACK-LABEL-STD | Custom label | 1 | each |
| PACK-TISSUE-KFT | Kraft tissue wrap | 1 | each |
Also think about cycle counting — periodically comparing what your BOM says you should have on hand against what’s actually on the shelf. This catches measurement drift over time.
Step 5 — Calculate cost per unit
This is where the BOM pays off. With quantities and units locked in, you calculate the cost of each component per unit of finished product.
The formula for each line:
Total cost = (Cost per purchase unit ÷ Purchase unit quantity) × Quantity used
Let’s build a complete costed BOM for our Lavender Soy Candle (4oz):
| SKU | Material | Qty used | Unit | Purchase unit | Purchase cost | Cost per unit |
|---|---|---|---|---|---|---|
| WAX-SOY-01 | Soy wax flakes | 115 | g | 1,000g bag | $18.00 | $2.07 |
| OIL-FRAG-LAV | Lavender fragrance oil | 11.5 | g | 500g bottle | $32.00 | $0.74 |
| WICK-COT-4OZ | Cotton wick | 1 | each | Pack of 50 | $14.00 | $0.28 |
| JAR-GLASS-4OZ | 4oz glass jar | 1 | each | Pack of 12 | $18.00 | $1.50 |
| JAR-LID-STD | Metal lid | 1 | each | Pack of 12 | $8.40 | $0.70 |
| CONS-WICK-STICKER | Wick sticker | 1 | each | Pack of 100 | $3.50 | $0.04 |
| PACK-LABEL-STD | Custom label | 1 | each | Pack of 50 | $12.50 | $0.25 |
| PACK-TISSUE-KFT | Kraft tissue | 1 | each | Pack of 100 | $9.00 | $0.09 |
| LABOR | $3.50 | |||||
| TOTAL | $9.17 |
That $9.17 is your cost of goods manufactured (COGM) per candle. If you’re selling this candle for $14, your gross margin is roughly 34%. If you’re selling it for $18, it’s 49%. Suddenly you can actually have a pricing conversation grounded in numbers, not guesswork.
For more worked examples across different product types, see our bill of materials examples guide.
Step 6 — Get the batch size right
One thing the simple per-unit view doesn’t capture: what happens when you scale.
Most makers don’t make one candle at a time. You pour 20 at once, or 50. And some of your costs behave differently at batch scale — fragrance oil evaporates slightly during pouring, wax has pour loss, labels might have print minimums.
Per-unit vs per-batch math matters here. If your BOM says “115g soy wax per candle” but your actual pour loss across a 24-candle batch is closer to 3% total, your real per-unit wax cost is slightly higher than the calculation above. The fix: build your BOM at your standard batch size, measure actuals over several batches, and update the quantities to reflect reality.
The principle: your BOM should match what you actually use, at the scale you actually work at. Not what the theory says.
This also applies to labour. One candle takes maybe 12 minutes of active work. A batch of 24 takes 90 minutes — not 288 minutes — because setup and cleanup time is shared. If you want accurate COGM, build your labour cost from batch production time, then divide by units produced.
Step 7 — Choose where to store your BOM
You’ve built the BOM. Now you need somewhere to keep it that will actually serve you.
Spreadsheets are a reasonable starting point. The worked example above translates directly to a Google Sheet or Excel file. The problems come later: when supplier prices change and you forget to update every affected product, when you have 40 products with overlapping materials, or when you want to see total material usage across a production run.
Dedicated software handles these edge cases cleanly. In Craftybase, your BOM is called a recipe — same concept, same structure. When you record a production run against a recipe, Craftybase automatically:
- Deducts the exact material quantities from your stock
- Calculates your COGM at current material prices
- Updates your cost per unit if supplier prices have changed
Miller Lights, a handcrafted lighting business, uses Craftybase’s auto-manufacture feature to deduct materials from their BOMs whenever orders come in — keeping inventory accurate across Shopify, Etsy, and Amazon without manual tracking.
For an overview of how MRP software ties all of this together, see What is MRP in manufacturing?
Common BOM mistakes to avoid
Even experienced makers get these wrong. Worth checking your BOM against each one.
1. Forgetting packaging. Labels, tissue paper, boxes, stickers, hang tags — all of these cost money and belong in your BOM. They’re easy to leave out because they feel like “selling costs” rather than “production costs.” But if you don’t include them, your cost per unit is understated and your margin looks better than it is.
2. Omitting labour entirely. Your time has a cost. Even if you’re not paying yourself a market wage yet, you should have a labour line in every BOM — if only to see what you’d need to price at if you ever hired someone. A common approach: pick an hourly rate (say $25/hr) and estimate the active production time per unit.
3. Not updating when supplier prices change. This is the most common live mistake. You built the BOM when coconut oil was $0.014/g. It’s now $0.022/g. Every BOM using coconut oil is now understating your cost — potentially by a significant amount on fragrance-heavy products. Set a reminder to review supplier costs quarterly, or when you place a reorder and notice the price has shifted.
4. Using the same BOM for different batch sizes. A BOM for “one 4oz candle” and a BOM for “a batch of 24 4oz candles” will give you different per-unit costs — because labour, packaging minimums, and waste behave differently at scale. Be explicit about what your BOM represents.
5. Ignoring sub-assemblies. If you make a fragrance blend that you then use across five products, track that blend as its own component with its own BOM. Otherwise, a price change in one ingredient forces you to manually update five separate BOMs.
Frequently Asked Questions
What is a Bill of Materials in simple terms?
A Bill of Materials is a complete list of every raw material, component, and quantity needed to make one unit of a product — along with the cost of each. Think of it as the recipe for your product, written in manufacturing language. For a maker, it answers the question: "What exactly goes into making this, and what does it cost me?"
What's the difference between a BOM and a recipe?
They're the same thing with different names. "Bill of Materials" is the manufacturing industry term; "recipe" is the word Craftybase uses in its interface — and the word most food, soap, and cosmetic makers already use naturally. Both describe a structured list of ingredients and quantities required to produce one unit. If you use Craftybase, your recipe is your BOM — no translation needed.
How do I calculate cost per unit from a BOM?
For each material in your BOM: divide the purchase cost by the purchase quantity to get a cost-per-gram (or per-unit), then multiply by how much you use per finished product. For example, if 500g of fragrance oil costs $32, that's $0.064/g. If you use 11.5g per candle, the fragrance cost per candle is $0.74. Sum all material lines plus labour and you have your total cost per unit (COGM).
Does Craftybase support Bill of Materials?
Yes — Craftybase calls this feature recipes, which is the same concept. You build a recipe for each product, specifying materials and quantities. When you record a production run, Craftybase automatically deducts materials from stock and calculates your COGM at current supplier prices. It also supports multi-level recipes (sub-assemblies) and updates costs automatically when your material prices change. Learn more about Craftybase's BOM features →
How often should I update my Bill of Materials?
At minimum, review your BOM whenever you receive a supplier reorder and notice the price has changed. A quarterly review is a good routine — check all material costs against your current invoices. Also update any time you change your formulation, switch suppliers, adjust batch size, or add new packaging. An outdated BOM gives you a false sense of your margins, which tends to show up as a nasty surprise at tax time.
Build your BOM, then stop guessing
A Bill of Materials isn’t a bureaucratic exercise. It’s the thing that tells you whether you’re making money on each product — or just keeping busy.
Start with one product. Get the quantities right, attach real costs, add labour. Then update it the next time a supplier invoice looks different. That discipline, repeated, is what turns a side project into a business that actually knows its numbers.
Ready to manage your BOMs without spreadsheets? Craftybase’s recipe and manufacturing tools handle the cost calculations automatically — so you can focus on making things, not updating formulas.
