Make-to-Order Manufacturing in Odoo

If you’ve ever had a customer order something that didn’t exist yet — a custom cabinet, a bespoke machine part, a made-to-measure garment — you already understand Make to Order manufacturing, even if you’ve never called it that. You build it because someone asked for it, not because you’re hoping someone will buy it off a shelf.
The tricky part isn’t the concept. It’s running that model without your production floor, your inventory, and your sales team living in three different worlds. That’s exactly the gap Odoo ERP was built to close, and it’s why so many manufacturers researching “make to order manufacturing in Odoo” end up asking a much bigger question: can one system actually connect a customer order to a purchase order to a work order without someone manually chasing it down?
The short answer is yes. The longer, more useful answer is what this guide is about.
What Is Make to Order (MTO) Manufacturing?
Make-to-Order is a production strategy in which you don’t manufacture a product until a confirmed customer order triggers production. There’s no finished-goods inventory sitting in a warehouse waiting for demand. Instead, the sale itself is the demand signal, and everything downstream — material procurement, production scheduling, quality checks — starts only after that signal fires.
This approach suits businesses with:
- Highly customized or configurable products (furniture, machinery, apparel)
- Low-volume, high-mix production
- Expensive raw materials where holding stock ties up too much capital
- Long product lifecycles where forecasting demand accurately is difficult
Contrast that with Make to Stock (MTS), where you build based on forecasts and keep inventory ready to ship immediately. Most manufacturers actually run a hybrid — some products made to stock, others made to order, sometimes within the same order — and this is where a rigid, spreadsheet-driven process starts to break down.
Make to Order vs Make to Stock: The Core Difference
The distinction in Odoo comes down to routes. A route defines what happens automatically when demand for a product appears. With Make to Stock, replenishment happens on a schedule or reorder rule, independent of any single sale. With Make to Order, the moment a sales order is confirmed, Odoo checks the product’s routing and — if MTO is enabled — generates the manufacturing order or purchase order needed to fulfill that specific sale, tied directly to it.
That link matters more than it sounds. It means a change in the sales order (quantity, date, cancellation) can cascade down to the manufacturing order automatically, instead of someone re-keying it into a separate production system.
How Make to Order Manufacturing Works in Odoo ERP
Here’s the actual flow, start to finish:
- Sales order is confirmed. A customer places an order for a product configured with the MTO route.
- Odoo checks the routing. <cite index=”6-1″>If the product is set to be manufactured or follows a make-to-order route, the system automatically generates a manufacturing order linked to that customer request</cite>, complete with quantity, delivery deadline, and production reference.
- Material availability is checked. Before production starts, Odoo evaluates current stock, materials already reserved for other orders, and incoming purchase orders, so the planner knows immediately whether anything needs to be procured.
- A manufacturing order (MO) or purchase order (PO) is created. If raw materials are missing, a PO can be generated automatically for the supplier. If the finished product itself is outsourced, MTO can also trigger a PO to a subcontractor instead of an internal MO.
- Production runs against the Bill of Materials (BOM). Work centers, routings, and labor time are tracked against that specific order, not a generic batch.
- Delivery is triggered. Once the MO is marked done, the linked delivery order becomes ready, and stock movements, costing, and accounting entries post automatically.
The reason this matters operationally: nobody on the shop floor is guessing which customer a work order belongs to, and nobody in sales is calling production to ask “did this even start yet?” The traceability is built into the record itself.
Setting Up the MTO Route in Odoo: Step by Step
Odoo actually ships with the MTO route available out of the box, though it’s sometimes archived by default depending on your version and installed apps. Here’s how to activate and configure it:
Step 1 — Unarchive the MTO route (if needed) Go to Inventory > Configuration > Warehouses > Routes, click the smart button, filter by “Archived,” locate the MTO route, and unarchive it.
Step 2 — Enable it at the product level Open the product form, go to the Inventory tab, and under Routes, check “Replenish on Order (MTO)” along with “Manufacture” (or “Buy,” if it’s a purchased component rather than a produced one).
Step 3 — Confirm your Bill of Materials is set up MTO only works cleanly if the BOM defines what components go into the finished product, along with the routing and work centers involved.
Step 4 — Set lead times Configure manufacturing lead time, customer lead time, and supplier lead times so Odoo can calculate a realistic delivery date the moment the sales order is confirmed — this is what customers actually see as their promised ship date.
Step 5 — Test with a live sales order Confirm a sales order for the product and check that a manufacturing order (or purchase order, for outsourced items) appears automatically, linked back to the sale.
It’s a short list, but the details inside each step — routing combinations, work center capacity, multi-level BOMs — are where most implementations actually get complicated. This is usually the point where businesses either bring in outside help or spend weeks reverse-engineering Odoo’s routing logic on their own.
Key Odoo Modules That Power MTO Manufacturing
Make to Order isn’t a single app — it’s a behavior that emerges from several Odoo modules working off the same database:
- Manufacturing (MRP): Owns the Bill of Materials, manufacturing orders, routings, and work center scheduling.
- Inventory: Tracks stock levels, reservations, and the routes (like MTO) that connect demand to supply.
- Sales: Confirms the order that ultimately triggers the whole chain.
- Purchase: Generates POs automatically when outsourcing or when components run short.
- Accounting: Posts material, labor, and overhead costs the moment a manufacturing order closes, so margins on custom orders are visible in near real time rather than at month-end.
Because these modules share one database instead of syncing through middleware, a change anywhere — a delayed supplier shipment, a quality hold, a modified BOM — is visible everywhere else instantly. That’s the practical advantage over stitching together a separate MES, a separate inventory tool, and a separate accounting platform.
Benefits of Make to Order Manufacturing in Odoo
Lower inventory carrying costs.
You’re not tying up capital in finished goods that might not sell, which matters even more when raw materials are expensive or perishable.
Built-in traceability.
Every manufacturing order links back to the sales order that created it, so anyone can trace a customer complaint straight to the batch, work center, and even the operator involved.
Automated procurement.
Missing components trigger purchase orders without manual intervention, reducing the “we forgot to order that part” problem that plagues manual MTO processes.
Real-time costing.
Because production costs post to accounting automatically, you can see actual margin on a customized order almost as soon as it’s completed — not three weeks later during reconciliation.
Scalability across mixed models.
You can run MTO for custom products and MTS for standard ones inside the same warehouse, same catalog, same system, without maintaining two separate processes.
Common Challenges (and Where They Actually Come From)
MTO in Odoo is powerful, but it isn’t plug-and-play for every business. The friction usually shows up in a few predictable places:
- Multi-level BOMs with MTO at several stages — sub-assemblies that are themselves made to order can create scheduling complexity if lead times aren’t configured carefully.
- Capacity planning — Odoo’s default scheduler assumes infinite capacity unless you explicitly configure work center capacity, which trips up teams who don’t realize it.
- Legacy data migration — companies moving from a legacy MRP or a different ERP often bring over messy BOM and routing data that doesn’t map cleanly to Odoo’s structure.
- Industry-specific workflows — configurable products, engineer-to-order variants, or regulatory traceability requirements often need more than what’s available out of the box.
This is exactly where structured Odoo Implementation Services earn their keep. A properly scoped implementation maps your actual production workflow — routings, work centers, subcontracting relationships, lead times — onto Odoo’s data model before go-live, instead of discovering the gaps after your first real customer order gets stuck in limbo.
Customizing MTO Workflows with Odoo Custom Development
Odoo covers the standard MTO flow well, but real manufacturers rarely run “standard” processes end to end. You might need:
- Custom approval workflows before a manufacturing order releases to the floor
- Automated alerts when a make-to-order item’s promised date is at risk
- Integration with a shop-floor MES, barcode scanners, or IoT sensors on machines
- Configurable-product logic where the BOM changes dynamically based on customer selections
- Custom reporting that ties MTO lead times to specific customers, product families, or sales reps
This is where Odoo Custom Development comes in — extending Odoo’s core manufacturing and inventory modules with tailored logic, custom fields, automated workflows, or API integrations, without breaking upgrade compatibility down the line. Good custom development respects Odoo’s underlying architecture so the business doesn’t end up with a forked, unmaintainable version of the platform a few years later.
When You Need Odoo Migration & Upgrade Services for MTO

Odoo releases a new major version roughly every year, and manufacturing logic — routings, work orders, scheduling — has changed meaningfully across recent versions. If you’re running an older Odoo version (or a different ERP entirely) and relying on manual workarounds for MTO because your current setup can’t handle it, that’s usually a sign it’s time to look at Odoo Migration & Upgrade Services.
A well-planned migration does a few things a DIY upgrade often misses:
- Audits existing BOMs, routes, and manufacturing orders before touching anything
- Maps custom modules and third-party integrations to their compatible equivalents in the new version
- Tests the MTO chain end-to-end in a staging environment before cutting over production
- Preserves historical manufacturing and costing data so reporting doesn’t break
Skipping this rigor is how companies end up with broken automated purchase orders or misfiring routes right after an upgrade — exactly the kind of disruption a make-to-order business, running tight on customer delivery promises, can least afford.
Best Practices for MTO Success in Odoo
- Keep lead times realistic and reviewed regularly. Stale lead times are the single biggest cause of missed delivery promises in MTO businesses.
- Use multi-level MTO deliberately, not by default. Only cascade the MTO route through sub-assemblies that genuinely need to be built per order.
- Set up work center capacity properly. Don’t let Odoo assume infinite capacity if your floor doesn’t have it.
- Review your BOMs quarterly. Engineering changes that don’t make it into the BOM are a common source of production errors.
- Pair Odoo Implementation Services with a phased rollout. Start with your highest-volume MTO product line, validate the flow, then expand.
Frequently Asked Questions
Is Make to Order the same as Engineer to Order in Odoo?
Not quite. Make to Order triggers production from a confirmed sale using an existing BOM. Engineer to Order typically involves designing or modifying the product after the order is placed, which Odoo can support but usually needs additional custom configuration.
Can Odoo handle both Make to Order and Make to Stock at the same time?
Yes. Routes are set per product, so you can run MTO on custom items and MTS on standard catalog items within the same Odoo instance.
Does Make to Order in Odoo automatically create purchase orders?
Yes, if a component is missing or the finished product is outsourced to a subcontractor, Odoo can generate the purchase order automatically as part of the MTO chain.
Do I need custom development to use MTO in Odoo?
No — the MTO route works out of the box. Custom development becomes relevant when you need configurable products, approval workflows, or integrations beyond Odoo’s standard manufacturing app.
What’s the biggest mistake companies make when setting up MTO in Odoo?
Treating it as a checkbox instead of a workflow. Enabling the MTO route without configuring accurate lead times, work center capacity, and BOM structure is the most common cause of failed rollouts.
Final Thoughts
Make to Order manufacturing in Odoo ERP isn’t complicated in theory — a sale triggers production, production triggers delivery, and the whole chain stays connected in one system. Where it gets real is in the configuration details: lead times, routings, multi-level BOMs, and the custom workflows your specific business actually runs on.
Whether you’re setting this up for the first time, extending it with custom logic, or moving off an older Odoo version that can’t keep up anymore, getting the foundation right matters more than any individual feature. That’s the difference between Odoo Implementation Services that map your real production process from day one, Odoo Custom Development that extends the platform without breaking it, and Odoo Migration & Upgrade Services that carry your manufacturing data forward safely — versus a system that technically has an MTO route but never quite works the way your shop floor actually operates.