What a bom actually is.
A BOM is a structured list of components and quantities required to produce one unit of a finished good. For a metal furniture maker, the BOM for one office chair might be: 1 base assembly, 5 caster wheels, 1 gas lift cylinder, 1 seat foam, 1.2 metres of upholstery fabric, 14 screws, and 0.3 hours of labour at a standard rate. Each line has a quantity per unit and a current cost.
The BOM is the bridge between raw material inventory and finished goods inventory. When you produce one chair, the system consumes the components from raw inventory and creates one unit of finished inventory at a cost equal to the sum of the component costs plus labour. Without this structure, every assembly run is a manual journal entry and nothing reconciles at month-end.
Why small manufacturers avoid setting one up.
The most common reason is fear of complexity. Owners assume BOM means SAP-level master data. It does not. A working BOM for a small manufacturer is usually a spreadsheet with 30 to 200 finished SKUs, each pointing to 5 to 30 component lines. That is a one-week setup, not a six-month project.
The second reason is "our recipe changes." Yes, recipes change. The answer is BOM versioning. The chair you built last year had a different gas lift than this year. Both versions are recorded, both are valid for their time period, and the system uses whichever was active on the date of production. Versioning is built in to any modern inventory system, including Nonari.
Building your first bom.
Start with one finished SKU — your best seller. List every physical component that goes into it, by SKU code. Include packaging, screws, glue, anything that consumes inventory. Add quantity per unit and unit of measure. Add a labour line if labour is non-trivial — for a one-person assembly job it might be irrelevant; for a 4-person assembly line it matters.
Once one BOM works end to end (raw consumed, finished produced, cost reconciles), copy the structure for your next 10 SKUs. By the time you have 30 BOMs you will see patterns — common sub-assemblies, common packaging units. Promote those to their own BOMs and reference them from finished BOMs. This is multi-level BOM, and it cuts maintenance enormously.
- Component SKU code, quantity per unit, unit of measure
- Labour line at a standard rate (optional but recommended)
- Overhead allocation (rent, utilities) only if material to your gross margin
- BOM version + effective date so historic costing is preserved
A worked example: assembling 50 chairs.
Take the chair BOM above for a Sydney assembly shop. Component costs at the time of the run: base assembly AUD 24.00, caster wheel AUD 1.80, gas lift AUD 9.50, seat foam AUD 3.20, fabric AUD 2.40/metre, screw AUD 0.06, labour AUD 25.00/hour. Per-chair material cost: 24.00 + 5 × 1.80 + 9.50 + 3.20 + 1.2 × 2.40 + 14 × 0.06 = AUD 50.42. Add 0.3 hours of labour at AUD 25.00 = AUD 7.50. Total per-chair cost: AUD 57.92.
Run 50 chairs through production. Raw inventory decreases: 50 base assemblies, 250 wheels, 50 gas lifts, 50 foams, 60 metres of fabric, 700 screws. Each at its own WAC. Finished inventory increases: 50 chairs at AUD 57.92 each = AUD 2,896.00 of finished goods. Labour cost moves from a standard accrual into product cost. The journal posts automatically the moment the production order is closed.
The journal entry behind a production run.
Production posts in two parts. First, raw materials consumption: Debit Work in Progress (or Finished Goods directly for short runs) for the total component cost. Credit each Raw Material Inventory line for its consumed value. The values come from each component's current WAC at the time of consumption.
Second, labour absorption if applicable: Debit Work in Progress for labour value. Credit Labour Cost or Wages Payable. When the run finishes: Debit Finished Goods Inventory for the full unit cost × units produced. Credit Work in Progress to clear it. In Nonari this is one production document — you enter quantity produced, the system calculates and posts everything based on the active BOM.
What to do when material prices change.
Component prices move constantly. You do not need to update the BOM every time fabric goes up by AUD 0.05 — the BOM stores quantities, not prices. The system uses current WAC at the moment of consumption, so if fabric WAC has moved from AUD 2.40 to AUD 2.52, the next chair costed will use AUD 2.52 automatically.
You only update the BOM itself when the recipe changes — different vendor with different specs, redesigned product, switched packaging. When the recipe changes, version the BOM with an effective date so production runs before that date are still costed against the old recipe and runs after use the new one. This preserves the integrity of historic gross margin reports.
Common bom mistakes.
Mistake 1: forgetting consumables. Glue, tape, lubricant, gloves, packaging — these are real costs. Either add them to each BOM or post a monthly indirect manufacturing expense and accept the imprecision. Pretending they are zero distorts gross margin.
Mistake 2: ignoring waste. If you cut 1 metre of fabric to use 0.8 metres because of pattern waste, the BOM should show 1 metre, not 0.8. Otherwise raw inventory drains faster than the system expects and your stock count goes negative. Mistake 3: treating labour as overhead rather than per-unit cost. If labour is meaningful, put it on the BOM. Nonari supports labour lines on every BOM with a per-hour or per-unit rate.