← Back to blog Learn to build a bill of materials for handmade products: hidden costs most makers miss, plus how to price confidently at retail and wholesale

Bill of Materials for Handmade Products: A Maker's Guide


A bill of materials for a handmade product is a structured list of every ingredient, material, and component that goes into one unit. It captures the exact quantity and cost of each item so you know your true cost before you set a price. By the end of this guide, you will know how to build a complete BOM for any product you make, which hidden costs most makers miss, and how to use your BOM to price confidently at retail and wholesale.

Here is a scenario that many makers recognize. You sell out of your best product, sit down to reorder supplies, and realize you cannot answer a basic question: what did each unit actually cost to make? You remember the main ingredients, but the packaging, the fragrance oils, the labels, the small jar of lye you split across three batches — those numbers are somewhere in your head, or in a receipt folder, or nowhere at all.

That gap is exactly what a bill of materials closes.

A flat-lay overhead shot of a handmade soap-making workspace: bowls of olive oil, coconut oil, a small glass of lye, fragrance oil bottles, kraft paper labels, and glassine wrap arranged neatly on a wooden workbench beside a handwritten cost spreadsheet

Key Takeaways

  • A BOM lists every material and component in a product with its quantity and cost per batch, divided by yield to give you a materials cost per unit.

  • The three most commonly omitted cost categories are packaging, consumables, and yield loss. All three belong in your BOM.

  • A BOM is not the same as COGS. Add labor and overhead on top of your BOM to get your full cost per unit before pricing.

  • Wholesale orders expose BOM errors fast. Even a $0.70 per unit miscalculation can wipe out a significant share of your margin on standard wholesale pricing. On a 50-unit wholesale order at $7.00 per bar, that is $35 in margin you never see and on thinner wholesale margins, the impact compounds fast. (In the full example below, the gap is $0.90 per unit and the margin impact is even larger.)

  • Keep your BOM current. Update material unit costs on every reorder and adjust yield assumptions as your process tightens up.

  • The more products you make, the harder it is to manage BOMs manually. Linking materials to recipes in a dedicated system removes that maintenance burden entirely.

What Is a Bill of Materials?

A bill of materials (BOM) is the manufacturing term for what most makers already think of as a recipe. The difference is that a recipe tells you what to use and how much. A BOM tells you what it costs.

If you make soap, your recipe might say "450g olive oil, 120g coconut oil, 63g lye, 300ml water, 20g fragrance." Your BOM takes that same list and assigns a cost to each line. It also captures how many bars that batch yields, so you can divide the total cost by the number of units and arrive at a cost per bar.

A recipe tells you what to use. A bill of materials tells you what it costs. You need both to price anything correctly.

The structure looks like this:

Material

Quantity per Batch

Cost per Unit of Material

Cost per Batch

Cost per Bar (÷12)

Olive oil

450g

$0.018/g

$8.10

$0.68

Coconut oil

120g

$0.012/g

$1.44

$0.12

Lye (NaOH)

63g

$0.022/g

$1.39

$0.12

Distilled water

300ml

$0.002/ml

$0.60

$0.05

Fragrance oil

20g

$0.045/g

$0.90

$0.08

Kraft label (x12)

12 units

$0.08/unit

$0.96

$0.08

Glassine wrap (x12)

12 units

$0.06/unit

$0.72

$0.06

Total batch cost

$14.11

$1.18

Batch yield: 12 bars.

Cost Per Bar = Total Batch Cost ÷ Bars Yielded
$14.11 ÷ 12 = $1.18 per bar

That number, $1.18, is your materials cost per unit. It is not your selling price, and it is not your full cost of goods. But it is the foundation everything else is built on, and without it, every price you set is a guess.

If you would rather not build this in a spreadsheet from scratch, the free pricing calculator lets you enter your materials and get your cost per unit in a few minutes.

Why Getting This Wrong Destroys Your Margins

One of the most consistent patterns among new handmade sellers is underpricing. Not from carelessness, but from estimating costs without a structured system, where small errors compound quietly across every unit sold. When there is no BOM, packaging gets forgotten, yield loss goes unaccounted for, and fragrance costs get underestimated because they were bought in bulk and never properly allocated. The result is a price that feels right but quietly erodes margin with every sale.

A BOM is not the same thing as your cost of goods sold (COGS), and it is worth being clear about that distinction. Your BOM captures material costs. Your COGS adds labor and overhead on top of that. Both numbers matter, but the BOM is where accurate costing starts. If the BOM is wrong, everything downstream is wrong too. The IRS defines cost of goods sold as direct costs attributable to the production of goods sold, which includes materials, labor, and certain overhead costs (IRS: Cost of Goods Sold).

Accurate BOM → Accurate COGS → Accurate Pricing → Sustainable Margin

The margin risk becomes most visible at wholesale. If your material cost per unit is off by $2 because you omitted packaging or fragrance, and you price a wholesale order at a standard 2x markup, that $2 error can wipe out a quarter of your gross margin on a $16 wholesale price. On a 50-unit order, that is $100 in margin you never see.

Makers who scale into wholesale successfully tend to be the ones who already have a BOM system in place before the first bulk order arrives. They can answer the profitability question in seconds. Everyone else has to guess, or decline the order, or fulfill it and find out later whether it was worth it.

Estimating costs without a system? Your margins are probably paying the price.

Small errors in material tracking add up across every unit you sell. Use this free calculator to enter your actual materials, time, and overhead so you know your true cost per unit before you set another price.

Try the free calculator →

The Hidden Costs Most Makers Leave Out

Most BOM guides cover the obvious ingredients. Fewer of them cover the three categories that makers most consistently omit, and these are the categories where margin quietly disappears.

Packaging and Presentation Materials

Labels, boxes, tissue paper, ribbon, hang tags, stickers, poly mailers, and void fill all have a cost per unit. They are easy to overlook because they feel like one-time purchases or overhead rather than product costs. But if a customer receives your product in branded packaging, that packaging belongs in the BOM.

Add the per-unit cost of every packaging component to your BOM. If you buy 500 kraft labels at $40, that is $0.08 per label. If that label goes on every product, it belongs on every BOM line by line.

Consumables

Parchment paper, gloves, glue sticks, sandpaper, mold release, disposable pipettes, and similar items are used during production but are not part of the finished product. They still have a cost per batch. The cleanest approach is to calculate a consumables cost per batch and include it as a single line in your BOM, even if it is an estimate.

It is a small number per batch. Across dozens of products and hundreds of batches, it adds up.

Yield Loss and Waste

Raw materials do not convert to finished product at 100%. Wax evaporates during candle pouring. Soap batter sticks to the bowl. Dough scraps get trimmed off. Fragrance oil overflows on a bad pour day.

If you pour 500g of wax and yield a candle that weighs 460g, your effective wax cost is based on 500g, not 460g. Your BOM should reflect the input quantity, not the finished quantity, so the waste is automatically accounted for.

Most makers discover their true yield loss only after they start tracking it. The number is almost always higher than the estimate in their head.

If you need a rough place to start, some makers in liquid and melt-and-pour categories report yield loss somewhere in the 5 to 10 percent range, though that figure can vary quite a bit depending on your specific process, equipment, and experience level. Treat any general estimate as a temporary placeholder rather than a reliable baseline. Tracking your actual waste across several batches is the only way to know what your real number looks like.

A close-up of a simple spreadsheet open on a laptop showing a bill of materials table with ingredient names, quantities, unit costs, and a calculated cost per bar highlighted in a soft yellow cell

How to Build a Bill of Materials: Step by Step

Building a BOM for the first time does not require software. A spreadsheet works. The goal is to capture the right information in a consistent structure so you can calculate cost per unit reliably and update it when material prices change.

Step 1: List Every Material and Component

Start with a single product. Write down every physical item that goes into making one finished unit, including all raw materials, packaging components, and any consumable with a traceable per-batch cost. If you are making a scented candle, that list includes the wax, fragrance oil, dye, wick, wick centering bar, jar, lid, label, and any tissue or filler in the box.

Do not filter at this stage. Write everything down first, then decide what is significant enough to cost individually versus group into a consumables line.

Step 2: Define Your Batch Size

A BOM works at batch level first, then divides down to unit level. Choose a batch size that reflects how you actually produce, whether that is 12 bars, 24 candles, or 50 lip balms. This becomes your reference unit for all quantities.

Step 3: Assign Quantities Per Batch

For each material on your list, record the quantity you use in one full batch. Use consistent units of measure throughout. If you buy fragrance oil by the pound but measure it in grams during production, convert everything to grams and stick with it. Inconsistent units are one of the most common sources of BOM errors.

Step 4: Calculate Cost Per Unit of Material

For each material, divide the price you paid by the total quantity in the package. This gives you a cost per gram, per milliliter, per unit, or whatever measure you use.

Cost Per Gram = Purchase Price ÷ Package Weight in Grams
Example: $18.00 ÷ 1000g = $0.018 per gram

Example: a 1kg bag of beeswax at $18.00 = $0.018 per gram. Record this unit cost in your BOM alongside the quantity used per batch, and the batch-level cost calculates automatically.

Step 5: Total the Batch Cost and Divide by Yield

Add up every line to get your total batch materials cost. Divide by the number of finished units your batch produces to get your materials cost per unit.

Materials Cost Per Unit = Total Batch Materials Cost ÷ Units Yielded

This is your BOM cost per unit. It is the baseline number for all pricing and profitability decisions.

Step 6: Build Your COGS on Top

Your BOM gives you materials cost. To arrive at full cost of goods sold, you add labor and overhead.

Labor is your time per unit at a rate you set. Overhead covers recurring costs like electricity, software subscriptions, insurance, and equipment depreciation, allocated per unit. A common method is to total your monthly overhead, divide by the number of units you produce per month, and add that per-unit overhead to each product's BOM.

Cost of Goods Sold (COGS) = Materials Cost + Labor Cost + Overhead Per Unit

For a deeper look at how to calculate your true per-unit cost including labor and overhead, the guide on how to calculate the true cost of your handmade products walks through each layer in detail.

A Tale of Two Wholesale Orders

To make the stakes concrete, consider two soap makers who each receive a 50-bar wholesale inquiry at $7.00 per bar, a common 2x wholesale markup on a $14.00 retail price, though wholesale terms vary by product category and buyer.

Maker A has a BOM. She opens her spreadsheet, looks at her materials cost per bar ($1.18), adds labor ($0.80) and overhead allocation ($0.40), and arrives at a COGS of $2.38. At $7.00 wholesale, her gross margin is 66%. She accepts the order immediately and knows exactly what to produce.

Maker B does not have a BOM. She estimates her cost at around $1.50 per bar based on her memory of the main ingredients, arrives at a COGS estimate of roughly $2.20, and accepts the order expecting a gross margin of about 69%. After fulfilling it, she tallies her actual receipts and finds her real COGS was $3.10 per bar, because she forgot to include fragrance oil, labels, and glassine wrap. Her actual gross margin was 56%, not 69%, and she undercharged by enough to matter.

The difference between these two outcomes is a spreadsheet with accurate line items. One maker has it. One does not.

Keeping Your BOM Accurate Over Time

A BOM you build once and never update is better than nothing, but not by much. Material prices change. Suppliers change. Your batch size may shift as you scale. Three habits keep a BOM reliable over time.

  • Update unit costs when you reorder. Every time you purchase a material, record the new price per unit. If your olive oil price increases 12% in a supply chain crunch, that change belongs in your BOM before your next batch, not after your next price review.

  • Review yield assumptions periodically. If you have been building in 8% wax waste but your actual loss is consistently 5%, your materials cost per unit is overstated. That is better than being understated, but it is still inaccurate pricing.

  • Add new components as your product evolves. If you add a new label design, switch to a heavier box, or start including an insert card, those are new BOM line items. The cost of a packaging upgrade belongs in your updated materials cost before you keep selling at the old price.

If you are managing more than a handful of products, doing this in a spreadsheet becomes friction-heavy. Each material price change has to be updated everywhere that material appears. Purpose-built software handles this automatically by linking each material record to every recipe it appears in, so one update propagates everywhere. That is part of what Batchforja is built to do.

Tired of updating your BOM in a spreadsheet every time a supplier price changes?

Batchforja lets you track material costs, cost out your recipes, and manage production batches in one place, so when your olive oil goes up 12%, your numbers update before your next batch ships.

Get early access →

Conclusion

A bill of materials is the costing layer that sits beneath every recipe you already use. It turns ingredient lists into profit data, and it is the foundation for accurate pricing at retail and wholesale. A good next step is to build your first BOM for your top-selling product this week. Open a new spreadsheet, create columns for Material, Quantity Per Batch, Cost Per Unit of Material, Cost Per Batch, and Cost Per Unit. Fill in your top-selling product line by line. If you are missing a cost, find the receipt or look up the current price before moving on — every blank is a margin assumption you are making without data. The makers who price with confidence are not guessing at their costs; they have a structured record that tells them exactly what every unit requires to produce. Once your BOM is complete, run it through the free pricing calculator to see how your current prices compare to what a fully-loaded cost actually requires.

Frequently Asked Questions

What is the difference between a bill of materials and a recipe?
A recipe tells you what ingredients to use and in what quantities. A bill of materials adds the cost of each ingredient so you can calculate what a batch costs to produce. For handmade sellers, the BOM is essentially a costed recipe: the same structure, but with a financial layer added.
Do I need software to manage a bill of materials, or will a spreadsheet work?
A spreadsheet works well when you have a small number of products and materials. The limitation appears when material prices change: in a spreadsheet, you have to update every product that uses that material individually. Software like Batchforja links materials to all the recipes they appear in, so one price update applies everywhere automatically.
Is a bill of materials the same thing as cost of goods sold?
No. A bill of materials captures your material costs only. Cost of goods sold (COGS) adds labor time and overhead costs on top of your materials. The BOM is the starting point for calculating COGS, but they are not the same number.
How do I handle materials I use across multiple products?
Buy at the bulk level and calculate a unit cost (cost per gram, per milliliter, per unit) for each material. Then apply that unit cost in the BOM for every product that uses it. When the purchase price changes, update the unit cost record once and it flows through to all products that share that material.
What should I do about waste and yield loss in my BOM?
Use your input quantity in the BOM, not the finished quantity. If you pour 500g of wax to make a candle that weighs 460g, your BOM should reflect 500g of wax so the waste cost is built in. Track your actual yield over a few batches and refine the number as you go.
How often should I update my bill of materials?
Update material unit costs every time you reorder at a new price. Review yield assumptions every few months or whenever your process changes significantly. If you add or change any packaging component, update the BOM before your next production run.
Why does having a bill of materials matter for wholesale pricing?
Wholesale orders are typically priced at a 50% discount from retail, which means your margin is already thinner. A materials cost error of even a few dollars per unit can eliminate most of your gross margin on a wholesale order. A BOM lets you calculate profitability before you accept any order, not after you fulfill it.