By-products are outputs of a manufacturing process that are not the primary finished product. Odoo MRP lets you track these on the Bill of Materials and generate stock moves for them when production is completed.
Enabling By-Products#
Manufacturing → Configuration → Settings → By-Products
Toggle on. This adds a By-Products tab to the BoM form.
Adding By-Products to a BoM#
Manufacturing → Products → Bills of Materials → [BoM] → By-Products tab
| Field | Description |
|---|---|
| Product | The by-product produced |
| Quantity | Amount produced per BoM quantity |
| Unit of Measure | UoM for the by-product |
| Produced in Operation | Work order step that produces this by-product (optional) |
| Destination Location | Where to stock the by-product (default: WH/Stock) |
Stock Moves During Production#
When a manufacturing order is validated, Odoo creates:
- Component consumption moves (WH/Stock → WH/Production)
- Finished product move (WH/Production → WH/Stock)
- A separate stock move for each by-product (WH/Production → by-product destination)
To route by-products to a separate location (e.g., a waste area), set the Destination Location on the BoM line.
Recording Actual By-Product Quantities#
On an in-progress MO, the By-Products tab shows expected quantities. You can edit the actual quantities before validating - this changes the stock move for that by-product without affecting the main product move.
Valuation#
By-products receive stock at their own standard or average cost, independent of the main production order's cost. By-products do not reduce the cost of the main finished product in standard Odoo. If cost allocation between primary and secondary products matters, a custom cost split module is needed.
Common Mistakes#
- By-products not appearing on BoM - confirm the BoM type is "Manufacture", not "Kit"; kit BoMs do not show the By-Products tab
- By-product goes to wrong location - the default destination is WH/Stock; set a waste or scrap location explicitly if needed
- Lot number not assigned before validation - if the by-product requires lot tracking, validation blocks until a lot is entered; create the lot in advance if using structured naming
- Assuming by-products reduce main product cost - they do not in standard Odoo; implement a custom cost split if this matters for your costing model

