September 14, 2026
Bills of Materials 101: Why Manufacturing Cost Control Starts Before Production
A production run finishes, the units move into the warehouse, and only then does someone sit down to work out what they actually cost to make. If the number comes back higher than expected, there's nothing left to do about it — the material is already used, the labor already paid, the batch already sitting on a shelf priced against a guess. The mistake, if there was one, didn't happen at month-end. It happened weeks earlier, at the point someone wrote down what a unit is supposed to contain.
Cost is decided at the recipe stage, not discovered afterward
It's easy to treat product costing as something that happens after production — a report generated from purchase records and sales figures, reconciled at month-end. But by the time that report exists, the actual decision that determines the cost has already been made and already been acted on dozens or hundreds of times: the bill of materials.
If a bill of materials says a unit takes 2.05kg of raw material and the real process consumes 2.3kg, every single unit produced against that BOM is under-costed — not because of a bookkeeping error, but because the number the costing system is working from was wrong from the start. No amount of careful month-end reconciliation fixes that. The fix has to happen at the BOM, before the next production run, not in a report written after the fact.
What a bill of materials actually is
A proper BOM is more than a shopping list of ingredients. It's a formal record of every component that goes into a unit, the exact quantity per unit and its unit of measure, and — critically — any scrap or wastage allowance that reflects what really happens on the floor, not what would happen in an ideal world. Some components are consumed at a specific stage of production rather than all at once, so a BOM that also tracks which step each material enters at gives a much clearer picture of where cost and waste actually occur.
Without a formal BOM, costing has to be reverse-engineered after the fact from what was bought and what came out the other end. That approach conflates several different things — genuine production efficiency, theft or shrinkage, spoilage, and simple pricing mistakes — into one blended number that nobody can actually act on, because it doesn't say which of those things is driving the cost.
Multi-level BOMs: when a component is itself a product
Example scenario: a furniture workshop builds cabinets. A drawer isn't a raw material — it's itself an assembly of wood, runners, handles and glue, built to its own bill of materials, and it might also be sold or reused on its own in other products. The finished cabinet's BOM doesn't need to re-list wood and glue quantities for the drawer; it just references "one drawer assembly," and the drawer's own BOM carries its own accurate cost underneath that.
A flat, single-level BOM works perfectly well for simple production — raw materials go in, one finished product comes out, in one step. It starts to break down the moment a business builds its own sub-assemblies or semi-finished components internally: anything made once and then reused across multiple finished products, or held in stock partway through production. A multi-level BOM lets each sub-assembly carry its own real cost that rolls up automatically into whatever finished product contains it — so a price change on a single screw or a single length of timber updates every product that uses it, instead of requiring someone to manually re-type costs into dozens of separate product records.
Why versioning a BOM isn't optional
Recipes and formulations change. A supplier gets substituted, a formulation gets tweaked to cut cost, a pack size changes, a seasonal ingredient gets swapped for something else available that month. That's normal and unavoidable in any real manufacturing operation.
What isn't fine is when that change simply overwrites the existing BOM record with no history kept. If a production run from three months ago is costed by looking up "the BOM for this product" and that BOM has since been edited in place, the historical cost figure silently changes along with it — a number that was accurate in March quietly becomes wrong when someone looks it up in June, with no indication anything changed.
A versioned BOM avoids that: each production order is tied to the specific BOM version that was active when it ran, so historical costing stays accurate and traceable no matter how many times the recipe changes afterward. It also makes it possible to directly compare the cost impact of one version against another — for example, seeing exactly how much cost per unit moved after switching to a new material supplier, instead of guessing from a general sense that "things got more expensive around then."
Production orders are a two-sided ledger: material in, goods out
Most businesses track purchases carefully and track sales carefully. The gap is usually in the middle — actual production. What materials were really issued to the floor for a specific run, and what actually came back out as finished goods, often isn't tracked with the same discipline as buying and selling are.
A production order should record both sides. Material issue is what was actually pulled and consumed for that specific run — which may differ from the BOM's standard quantity because of waste, rework, or a substitution made on the day. Finished-goods receipt is what actually came out the other end: the units produced, any by-products, and any scrap. Dividing actual material cost by actual units received gives the real cost per unit for that run — and comparing it against the BOM's standard cost surfaces a real, specific variance, instead of a vague sense that a batch "felt expensive."
Without tracking both sides of a production order, a business only ever has a standard cost — what the BOM says a unit should cost — with no way to see whether any given run actually matched it.
Signs your BOM and production-cost tracking has a gap
- Selling prices are based on a cost figure nobody has checked against an actual production run in months.
- The same finished item shows two different "standard cost" figures in different reports, and nobody is sure which one is current.
- Nobody can say how much material was wasted this month versus how much simply became unusable stock.
- A supplier substitution changed what actually goes into a product, but the record it's costed against was never updated.
- Gross margin is tracked as one blended number across the whole product line, rather than per product or per production run.
Vitabu ERP's Manufacturing & Production add-on is built around this exact chain: multi-level bills of materials with full versioning, production orders that track material issue against finished-goods receipt so real cost can be compared to standard cost, a machine register with capacity tracking, and production cost, consumption and profitability reporting — all running on the same accounting core as the rest of the business, so a production run's real cost flows straight into inventory valuation and margin reporting rather than sitting in a separate spreadsheet. See current pricing orstart with the free plan to explore the Core ERP first.
