Odoo Manufacturing (MRP): Bills of Materials, Work Orders and Planning
How Odoo manufacturing works: bills of materials, manufacturing orders, work centres and work orders, make to stock or make to order, scrap, by-products, subcontracting and costing, with a worked example.
DEBy DevMarket Editorial·Published: ·9 min read
On this page
Odoo Manufacturing, which people also search for as Odoo MRP, is the app that turns a bill of materials into finished products. You list each product's components, create manufacturing orders, and Odoo reserves the components, tracks the work and updates stock and cost when production is done. It runs on top of the Inventory app. Menu paths were checked against the Odoo 19.0 documentation in October 2026, and screens may differ in 20.0.
In short
A bill of materials (BoM) lists the components, and optionally the operations, for one product. A manufacturing order (MO) uses a BoM to make a quantity of it.
Work centres, operations and work orders need the Work Orders setting. By-products, subcontracting and work order dependencies have settings of their own.
Make to stock uses reordering rules. Make to order uses the Replenish on Order (MTO) route.
Components leave stock at their own cost, and the finished product enters stock at components plus operation cost.
What does the Odoo Manufacturing app do?
The app covers bills of materials, manufacturing orders, work centres and work orders, scrap, by-products, subcontracting, and reports on delays, allocation, equipment effectiveness and production analysis. A manufactured product is an ordinary Goods product with Track Inventory ticked, plus a BoM. Stock moves, locations and valuation are explained in the Odoo inventory management guide.
A finished product sits on sub-assemblies, which sit on components, and the bill of materials describes each level.
Manufacturing > Configuration > Settings decides which features appear: Work Orders, By-Products, Subcontracting, Work Order Dependencies and the Master Production Schedule are all switches there.
Bills of materials: types, kits and variants
Create a BoM under Manufacturing > Products > Bills of Materials, or from the Bill of Materials button on a product. Choose the product, the quantity it produces and the BoM Type: Manufacture this Product for items you make, Kit for a set of unassembled components you sell, or Subcontracting for items a subcontractor makes entirely.
On the Components tab, add each component and quantity. A settings icon reveals optional columns: Apply on Variants, Consumed in Operation and Manual Consumption (operators must tick Consumed or meet a consumption warning). The Miscellaneous tab holds Manufacturing Readiness (ready when the first operation's components are available, or only when all are) and Flexible Consumption (Blocked, Allowed or Allowed with Warning).
Variants, kits and sub-assemblies
To share one BoM across variants, enable Variants in the Inventory settings and use Apply on Variants on each component. Leave the BoM's Product Variant field empty for a shared BoM, since it is for one variant only.
A kit appears as one line on the sales order, and the delivery lists each component. Stock is kept per component, so you cannot adjust a kit's own stock.
For multilevel BoMs, build from the bottom up: make the sub-assembly and its BoM, then add it as a component of the parent. The sub-assembly must be finished before the parent can start. The documentation recommends a reordering rule on the sub-assembly with minimum and maximum 0, or the MTO and Manufacture routes on it, which tie its demand to the parent order.
Manufacturing orders, components and reservation
Under Manufacturing > Operations > Manufacturing Orders click New, choose the product (the BoM fills in, or pick one if there are several), check the Components and Work Orders tabs, and click Confirm. Produce All then marks the order Done and adds the product to stock, after you have finished any work orders.
The status bar shows where an order stands: it begins as a draft and ends as Done. The documentation names In Progress for a partly produced order but does not list every status on one page, so watch the bar on a test order before you write training notes. If you produce less than planned, Create Backorder splits the order: -001 holds the units made and closes, and -002 holds the rest.
Components are reserved by the operation type's reservation method (At Confirmation, Manually or Before scheduled date), which the documentation says also applies to manufacturing orders. The warehouse form (Inventory > Configuration > Warehouses, Warehouse Configuration tab) has a Manufacture option: one step, two steps (pick components, then manufacture) or three (pick, manufacture, store). In one step no transfers are created: stock drops as components are used.
Make to stock or make to order?
Make to stock
Make to order
Set up with
A reordering rule (Inventory > Operations > Replenishment)
The Replenish on Order (MTO) route
Triggered by
Forecast falling below the Min
A confirmed sales order
Result
An MO that brings stock up to the Max
An MO linked to that order, even if stock exists
Both need a BoM. With MTO, adjust the MO rather than cancelling it: Odoo creates no replacement.
Work centres, work orders and routing
Turn on Work Orders in the Operations section of the Manufacturing settings. That adds the Operations tab to BoMs and the work centres under Manufacturing > Configuration > Work Centers. A work centre is where an operation runs: its form holds working hours (default: a 40-hour week), time efficiency, an OEE target, setup and cleanup times, a cost per hour and alternative work centres.
On the Operations tab, add a line for each step: operation name, work centre and how duration is worked out (tracked time or a default duration). That ordered list is what people usually call routing. It is not the field named Routing on the Miscellaneous tab, which only picks a warehouse's manufacturing operation type. Step-by-step instructions use quality control points and require the Quality app.
To sequence steps, enable Work Order Dependencies, switch on Operation Dependencies on the BoM's Miscellaneous tab and fill the Blocked By column. Work orders then show To Do or Blocked, and Plan sets start times in the planning views. Shop Floor is a companion module for staff at the workstation, with work orders per work centre, time tracking and a Register Production step. The Master Production Schedule (Planning section of the settings) suggests quantities against a demand forecast but creates no orders itself.
Which parts need which edition?
The documentation pages for work orders, work centres, dependencies, by-products and subcontracting do not mark them Enterprise-only: they need the settings named above. Instructions need the Quality app and BoM versions need the PLM app, and our Odoo Community vs Enterprise guide lists both as Enterprise apps. The Shop Floor and Master Production Schedule pages state no edition, so check Odoo's editions page or a trial database.
Scrap, by-products and subcontracting
To scrap during manufacturing, open the order, use the Actions icon and choose Scrap: components while the order is draft or confirmed, finished products once it is done. Manufacturing > Operations > Unbuild Orders takes a finished product apart again.
By-products are secondary materials made alongside the main product. Enable By-Products in the settings, add them on the BoM's By-products tab, and Odoo registers them when the order is done.
Subcontracting has its own Subcontracting setting and a BoM of type Subcontracting that names the subcontractors. In the basic flow the subcontractor sources everything; Resupply Subcontractor on Order sends components from your warehouse, and Dropship Subcontractor on Order has a vendor deliver them. A purchase order creates a receipt, and validating it records the finished goods.
How does manufacturing cost link to inventory valuation?
Consumed components leave stock at their own costing method, and the finished product enters stock at those components plus the cost of the work centres and employees involved. Recording production costs requires a Cost of Production account. The order's Overview button compares MO Cost, the BoM estimate, with Real Cost, and after Produce All the MO cost becomes the real one. In the documentation's example the product's Cost field moves to the average of estimate and real cost, and Compute Price from BoM resets it. Work-in-progress entries use WIP accounts and are posted by hand. The Odoo accounting guide covers the books.
A worked example with made-up numbers
A wooden stool uses 1 seat, 4 legs and 8 screws, plus one 15-minute Assemble operation at a work centre costing 20 per hour.
Create the components and the Stool as Goods products with Track Inventory ticked.
Create the BoM: type Manufacture this Product, quantity 1, three components.
Enable Work Orders, create the work centre "Assembly bench" and add the Assemble operation.
Create an MO for 10 stools, which needs 10 seats, 40 legs and 80 screws. Stock holds 10, 30 and 200.
The legs are 10 short. With Manufacturing Readiness set to all components, the order waits for a purchase.
Receive the legs, finish the work order and click Produce All.
Line
Per stool
For 10 stools
1 seat at 6
6
60
4 legs at 2
8
80
8 screws at 0.25
2
20
Assembly, 15 minutes at 20 per hour
5
50
Expected cost
21
210
Common mistakes
Looking for the Operations tab without enabling Work Orders.
Adding a sub-assembly with no reordering rule or MTO route, so the parent order waits.
Leaving the work centre cost per hour empty, so finished goods carry component cost only.
Expecting to count a kit in stock, when only its components have stock.
Frequently asked questions
Is Odoo Manufacturing free?
Our Community vs Enterprise guide lists Manufacturing among the Community apps. Hosting, setup and support still cost something: see how much Odoo costs.
Do I need work orders?
No. Work centres and the Operations tab appear only after you enable Work Orders, so a simple BoM works without them.
What is the difference between a BoM and a manufacturing order?
The BoM is the recipe for one unit. The manufacturing order is a job to make a quantity of it.
Can Odoo plan production capacity?
It has planning views by production and by work centre, a Plan button and the Master Production Schedule. Test them with your own data.
Compare the three Odoo hosting options from Odoo documentation: what each allows, who runs what, which editions fit, where data sits, what costs to expect and how to move between them.
An Odoo implementation is a project, not an installation. Follow the phases from scope to go-live, see who does what, decide between a partner and doing it yourself, and use a go-live checklist.
Odoo Studio changes Odoo without code; custom modules add code. See what each can do, which edition and hosting allow them, what upgrades mean for both, and how to decide by need.
·9 min read
Find the right software for the job
Every item on DevMarket has a human-reviewed release, an instant licence key and clear update and support terms.