If you make what you sell, the interesting number isn’t the price of the parts. It’s what the finished thing actually cost - parts, plus the hours, plus the overhead those hours carry - and whether that matches what you thought it would.
This runs the making and books the cost as it goes, so the answer is there when the order closes rather than at a stocktake.
What you can do
- Keep versioned bills of materials with an output quantity, component lines and scrap allowance.
- Define routings: the ordered operations that make something, and the standard hours each takes.
- Set up work centers with a cost per hour and an overhead percentage.
- Run work orders through release, consume, log hours, complete and close.
- Watch work in progress carry the real cost of the work done so far, as you do it.
- Receive finished goods at actual cost, so the next sale’s margin is measured against what it really took to make.
- Settle the difference to a production variance account, so a closed order leaves nothing behind.
- See the cost breakdown on the order: material, labour, overhead, what completion relieved, and what a close would settle.
How it works in practice
Describe where the work happens (Manufacturing → Work Centers). A bench, a paint booth, a machine. Each carries a cost per hour and an overhead percentage applied on top of the labour, plus the two ledger accounts those applications credit. Leave the accounts unset and hours are still tracked - only the posting waits.
Describe how it’s made (Manufacturing → Routings). The operations in order, each naming a work center and its standard hours per batch of the BOM’s output. Editing a routing never touches a running work order, because operations are copied onto the order when it’s released. Changing the method tomorrow doesn’t rewrite what the floor is doing today.
Describe what it’s made of (Manufacturing → Bills of Materials). A BOM belongs to a finished product and carries a version and an output quantity, then component lines with a quantity per output and a scrap percentage. Attach a routing if you want one.
Then run the order (Manufacturing → Work Orders), in five steps:
- Release explodes the BOM into requirements - quantity times the planned output, plus scrap - reserves the stock, and copies the routing’s operations in with hours scaled the same way.
- Consume issues the components. Stock goes out, and their cost goes into work in progress.
- Log hours against each operation as the work happens. Labour is hours times the work center’s rate, overhead is a percentage on top, and both land in work in progress immediately, so WIP is never a stale number waiting for month end.
- Complete receives the finished goods into stock at the full accumulated cost: material, labour and overhead. That unit cost becomes the product’s cost going forward, which is what makes the next sale’s margin honest.
- Close settles whatever accumulated after completion to the production variance account, so a closed order ends with work in progress at exactly zero.
Rework is expected. Hours can still be logged on an order that’s done, which is why closing is a separate step from completing, and why the residual gets settled rather than assumed to be nothing.
Check the figures on the order itself. The cost breakdown is computed by the same code that writes the journals, so the screen and the ledger can’t tell you different things.
Good to know
- You’ll need the Manufacturing extension switched on (Settings → Extensions), and stock switched on first, since components and finished goods move through the same single stock path as everything else.
- Missing accounts skip the posting, not the work. Stock still moves and hours still accumulate when a work center or work order has no account set, and only the journal waits. Worth checking your first order end to end before you trust the second.
- There’s no planning engine. Nothing calculates net requirements or suggests what to buy or build from demand. You decide what to make and create the order; the module runs it and costs it.
- A BOM’s routing is chosen when the BOM is created. Attaching a different routing later means a new version of the BOM, which is arguably the right record anyway, since the method changed.
- Component lots aren’t captured at consumption. If you need to trace which batch of a component went into which finished unit, that traceability isn’t here today.
- Selling a kit isn’t manufacturing. If you only need several products to appear as one line on an invoice, product groups do that without this extension. See products and price lists.