All posts
Integrator6 min read

Odoo MRP By-Products and Co-Products: Capturing Secondary Manufacturing Outputs

By-products in Odoo MRP capture secondary outputs from manufacturing. This guide covers enabling by-products, BoM configuration, stock moves during production, lot tracking, and how by-products affect inventory valuation.

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

FieldDescription
ProductThe by-product produced
QuantityAmount produced per BoM quantity
Unit of MeasureUoM for the by-product
Produced in OperationWork order step that produces this by-product (optional)
Destination LocationWhere to stock the by-product (default: WH/Stock)

Stock Moves During Production#

When a manufacturing order is validated, Odoo creates:

  1. Component consumption moves (WH/Stock → WH/Production)
  2. Finished product move (WH/Production → WH/Stock)
  3. 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

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free