Create Bills of Materials to manage multi-component builds, calculate real costs, and link assemblies to your work orders.
A Bill of Materials (BOM) defines an assembly -- the finished product you build from individual components in your inventory. Each BOM specifies which items go into the build and how many of each are needed.
To create a new BOM, navigate to the Bill of Materials section in the sidebar and click the + button, or press ⌘N on macOS.
On iPad, tap the + button in the top toolbar to create a new BOM. The form works identically -- tap a component row to adjust its quantity or remove it.
Name your assemblies clearly (e.g. "Tele Wiring Harness - 4-Way") so they are easy to find when linking to work orders. The output item's name is used by default, but you can override it with a custom BOM name.
Bill of Materials is a Pro feature, available on the Monthly ($29.99/mo) and Annual ($199.99/yr) plans. A 7-day free trial gives you full access to try it out.
StringsTheory automatically calculates the total material cost of each assembly by summing up the unit cost of every component multiplied by its required quantity. This cost updates in real time as you add, remove, or adjust components.
StringsTheory is UOM-aware (Unit of Measure). When an inventory item uses a multi-unit package -- for example, a bag of 100 screws -- the cost calculation automatically divides the item's cost by its unitsPerPackage value to determine the true per-unit cost. This means you always see accurate material costs regardless of how your supplier packages items.
Set your inventory items' Unit of Measure (ea, box, bag, roll, spool, etc.) and Units Per Package in the item edit form. This ensures BOM cost calculations reflect the real per-piece cost, not the package price.
If a component has no unit cost set (shows $0.00), its line will still appear in the BOM but contribute nothing to the total. Fill in unit costs on your inventory items for the most accurate assembly pricing.
Beyond the standard fields (name, quantity, cost), you can define custom component fields that are tracked per serialized unit in a build. These are especially useful for recording specifications, tolerances, or batch information on individual components.
Component fields are especially powerful when combined with serialized production tracking. Each serialized unit in a build can have its own values for these fields, letting you record exactly which specific component specifications went into each finished product.
Use component fields to track supplier lot numbers, resistance values, or wood species. When a customer asks exactly what went into their guitar, you will have the answer on file.
When you create a work order that involves building or assembling something, you can link a BOM directly to the order. This pulls in the full component list and material cost, giving you (and your customer) clear visibility into what the job requires.
This linkage means you can quote customers accurately before starting a job, because the material cost is calculated from your real inventory data, not estimates.
Linking a BOM to a work order does not automatically deduct inventory. Stock is adjusted when you mark items as used or complete the order, depending on your deduction settings in Settings.
When you generate a PDF from a work order that has a linked BOM, the printed document includes a complete component breakdown. This gives your customers a transparent view of what goes into the build and what it costs.
This is particularly valuable for custom builds where the customer wants to understand exactly what they are paying for. A wiring harness build, for instance, would list every pot, switch, capacitor, wire run, and jack with individual costs and a total.
If you prefer not to show individual component costs to customers, you can toggle off the cost column in your PDF template settings. The total material cost will still appear as a single line item.