Direct answer: Odoo 19 supports three subcontracting models. Use basic subcontracting when the subcontractor supplies the production inputs; use resupply subcontracting when your company sends its own components from your warehouse; and use dropship to subcontractor when a component vendor ships directly to the subcontractor. Choose the model from material ownership and physical movement—not from whichever route is easiest to click.

The configuration is not difficult. The risk is choosing a workflow that does not match the commercial agreement. That creates component shortages, incorrect stock at the subcontractor, weak lot traceability, unreliable lead dates and incomplete product cost. This guide sets out the decisions I would resolve before configuring Odoo 19 for outsourced manufacturing.

Odoo 19 subcontracting workflow comparison

Workflow Who supplies the components? Physical component flow Best fit
Basic subcontracting The subcontractor No company-owned component shipment is required You buy a completed item or processing outcome and do not need to supply inputs
Resupply subcontracting Your company Your warehouse → subcontractor → finished goods back to you You own or control the raw materials, packaging or semi-finished goods
Dropship to subcontractor A component vendor Component vendor → subcontractor → finished goods back to you You want to bypass your warehouse for selected inputs

The finished item can later be delivered to a customer through a separate sales and delivery flow. Do not confuse dropship to subcontractor—which describes how components reach the subcontractor—with a finished product shipped directly to the end customer.

If ownership, supply responsibility or receipt timing is still unclear, stop before building routes. Use the Odoo implementation checklist to close those decisions with purchasing, production, warehouse and finance.

The business questions that determine the design

Before opening the Manufacturing settings, document one answer for each question:

  • Who owns each component while it is physically at the subcontractor?
  • Who buys each component, and from which vendor?
  • Does the subcontractor use exact quantities, or can consumption and scrap vary?
  • Does one subcontractor complete the full product or only one external operation?
  • Will finished goods return to your warehouse or move elsewhere?
  • Which component and finished-product lots or serial numbers must be captured?
  • What inspection must pass before returned goods become available?
  • Which costs belong in the finished product value?
  • How are unused components, rejects, rework and returns handled?
  • What lead time should purchasing promise internally and sales promise externally?

A good subcontracting design is a responsibility map translated into Odoo. It is not simply a subcontracting BoM.

Workflow 1: basic subcontracting

Basic subcontracting is the cleanest model. You create a purchase order for the subcontracted finished product, the external manufacturer produces it using inputs you do not supply, and you receive the completed product.

Use it when:

  • the subcontractor owns or sources all production inputs;
  • you do not need to show company-owned components at the subcontractor;
  • the purchase price represents the agreed finished-product or processing charge;
  • your main controls are delivery, incoming quality and supplier traceability.

Do not use basic subcontracting if your company owns critical raw material sitting at the vendor. Hiding that material from Odoo may make the process look simpler, but it removes the location and reconciliation control you actually need.

Workflow 2: resupply subcontracting

In resupply subcontracting, your company supplies components to the external manufacturer. Odoo tracks those components in a dedicated subcontracting location and consumes them when the subcontracted finished product is received.

Odoo 19 simplifies this workflow. The official documentation states that components on a subcontracting-type BoM are automatically configured to be sent from the company to the subcontractor by default. This matters because older tutorials often tell users to enable a resupply route manually on every component. Follow the Odoo 19 behaviour in your database, not an Odoo 16, 17 or 18 screenshot.

Use resupply subcontracting when:

  • you purchase and own the components;
  • materials leave your site but remain your inventory;
  • the subcontractor charges mainly for processing, assembly, coating, filling or packing;
  • you need visibility of stock physically held by each subcontractor.

The operational control is reconciliation. For each subcontractor, you should be able to explain opening component stock, components sent, components consumed, acceptable scrap, components returned and closing stock. A purchase order and a receipt alone do not answer that question.

Workflow 3: dropship components to the subcontractor

Use this model when a component supplier should deliver directly to the subcontractor instead of sending goods through your warehouse. In Odoo 19, enable the Dropshipping feature and apply the standard Dropship route to the relevant components. Odoo’s 19.0 documentation reflects this simplified configuration; older instructions referring to a separate “Dropship Subcontractor on Order” route can be misleading for this version.

This model reduces unnecessary handling, but it introduces a three-party control problem:

  • your purchase team orders the component;
  • the component vendor ships it;
  • the subcontractor receives and uses it;
  • your company still needs evidence that the quantity and lot received were correct.

Before go-live, agree who confirms the component delivery, how discrepancies are reported and which document is the source of truth. Otherwise Odoo may show material at the subcontractor while the external parties are still disputing what was delivered.

How to configure Odoo 19 subcontracting

1. Enable subcontracting

Go to Manufacturing → Configuration → Settings and enable Subcontracting. The official Odoo 19 subcontracting documentation is the version reference for the three workflows and product valuation model.

2. Configure the subcontracted product and vendor

On the finished product, add the subcontractor as a vendor and set the commercial price and lead time. The purchase order is raised to the subcontractor for the subcontracted product. The vendor lead time should represent the practical cycle required to obtain inputs, perform the external work and deliver the finished item under the agreed model.

Do not use an optimistic number copied from a quotation. Include the real hand-offs that affect availability: component dispatch, transit, queue time, processing, inspection and return transport where applicable.

3. Create the subcontracting BoM

Create a bill of materials for the finished product, set the BoM type to Subcontracting, select the permitted subcontractor and list the required components and quantities. The BoM is the operational contract inside Odoo: it tells the system what is transformed when the finished item is received.

If different subcontractors use different quantities, pack sizes or materials, create controlled BoM variants or separate BoMs instead of forcing one generic definition. If engineering changes matter, manage effective dates and approvals deliberately.

4. Configure component sourcing

For resupply, confirm that every company-supplied component appears on the subcontracting BoM and that the generated material transfer is correct. For dropship-to-subcontractor, enable Dropshipping and apply the standard Dropship route to the externally supplied components. For basic subcontracting, avoid creating company-owned material movements that do not exist commercially.

5. Run the purchase and receipt flow

Create and confirm the purchase order for the subcontracted finished product. Depending on the workflow, Odoo prepares the related component movement. Process that movement before receiving finished goods. When the subcontracted product is received, Odoo generates inventory moves that connect the components, subcontracting/production locations and finished product.

Do not train users to validate every generated document immediately. They should first confirm quantities, dates, source and destination locations, lots or serial numbers and the physical evidence from the external parties.

Lead times: one field is not a supplier promise

The official resupply guidance treats the vendor lead time as the overall period for the subcontractor to receive components, produce the item and deliver it. Odoo lead times are planning inputs; they are not capacity reservations or guarantees. The broader Odoo 19 lead-time documentation also warns that lead times are calendar-day estimates and do not automatically account for weekends, holidays or work-centre capacity.

For a dependable promise date, maintain:

  • component procurement lead time;
  • component transit time to the subcontractor;
  • subcontractor queue and processing time;
  • return transport time;
  • incoming quality or quarantine time;
  • a defined exception buffer where commercial risk justifies it.

Then test the computed dates from a sales demand or replenishment trigger through to the purchase order and component movements.

Quality and traceability controls

Subcontracting moves production outside your building, not outside your quality system. Odoo 19 Quality can generate checks for inventory operations through quality control points. Configure incoming inspection against the relevant receipt operation and product or category, then define the evidence required for pass, fail and escalation.

For regulated, safety-critical or customer-specific products, capture more than a generic pass/fail:

  • finished-product lot or serial number;
  • component lots consumed;
  • certificate or test report;
  • measured result and tolerance where applicable;
  • inspection status and approver;
  • failure disposition: return, rework, scrap or approved concession.

Odoo’s product tracking documentation describes lot and serial traceability. If barcodes carry lot and packaging data, the GS1-128 receiving guide for Odoo 19 is a useful companion.

Subcontracted product cost and valuation

Odoo’s official model expresses subcontracted product value as:

Finished product value = component cost + subcontractor manufacturing price + shipping + dropship cost + other associated costs

That is a design model, not a promise that every external charge will be captured automatically. Standard Odoo can combine company-supplied component value with the subcontractor’s purchase price through the subcontracting flow. Freight, duty, insurance and other charges still need the correct accounting treatment and configuration.

If those additional costs must be allocated to inventory, use the Odoo 19 landed-cost workflow rather than burying them in an arbitrary product cost. Finance should verify the outcome in staging for the actual costing method, valuation setup and timing.

A practical control matrix

Risk Control in the process Evidence
Wrong subcontracting model Approved material-ownership and supply-responsibility map Signed design decision
Components do not reach subcontractor Review generated resupply or dropship movement after PO confirmation Transfer and external dispatch proof
Material balance drifts Periodic stock reconciliation by subcontractor location Opening, sent, consumed, returned and closing quantities
Traceability breaks Mandatory lot/serial capture on component issue and finished receipt Traceability report
Defective output becomes available Incoming quality check and controlled failure location Quality check, alert and disposition
Finished cost is incomplete Finance-approved valuation test including external charges Valuation layers and ledger reconciliation
Delivery dates are unrealistic Test end-to-end lead-time calculation Planned component and receipt dates

Exceptions to design before go-live

The standard happy path is not the difficult part. Decide how Odoo should handle:

  • partial component dispatch and partial finished receipts;
  • over-consumption, under-consumption and subcontractor scrap;
  • unused material returned to your warehouse;
  • rejected finished goods sent back for rework;
  • a substitute component used with approval;
  • one product that is sometimes bought finished and sometimes subcontracted;
  • multiple subcontractors in sequence;
  • customer-owned material;
  • consignment stock at the subcontractor;
  • cross-company subcontracting.

Some of these can be handled with standard locations, transfers, BoMs and approvals. Others need a carefully tested extension. Avoid creating invisible inventory adjustments as a routine workaround.

Pre-go-live test script

  1. Create one subcontracted product for each workflow you intend to use.
  2. Confirm the purchase order and inspect every generated transfer before validation.
  3. Test component quantities for one unit, a normal batch and a partial batch.
  4. Record component and finished-product lots, then run forward and backward traceability.
  5. Receive a partial quantity and create a backorder.
  6. Fail an incoming quality check and confirm the goods cannot enter normal available stock without an approved disposition.
  7. Return unused components and reconcile the subcontractor location.
  8. Test a late component, a supplier short shipment and a subcontractor delay.
  9. Reconcile component value, subcontractor price, freight or landed costs and finished-product valuation.
  10. Verify access rights: purchasing, warehouse, quality and finance should see and approve only what their roles require.

Record expected quantities, dates, locations, lots, documents and accounting values before each test. “The receipt validated” is not an acceptance criterion.

When standard Odoo is enough

Standard Odoo 19 is usually enough when each subcontracted product has a clear BoM, one material-supply model, predictable consumption, straightforward receipts and standard quality checks.

Consider a controlled customisation when you need multi-stage external processing, detailed subcontractor scrap settlement, vendor portal confirmations, automated external ASN matching, customer-owned material segregation, complex supplier scorecards or contract-specific cost allocation. Start from the standard flow and extend only the unresolved gap.

For the wider MRP design, see the Odoo 19 manufacturing, quality and maintenance guide.

Frequently asked questions

What are the three subcontracting workflows in Odoo 19?

They are basic subcontracting, resupply subcontracting and dropship to subcontractor. They differ mainly in who supplies the components and how those components physically reach the external manufacturer.

When should I use resupply subcontracting?

Use it when your company owns or controls components and sends them from its warehouse to the subcontractor. Odoo can then track those components at the subcontracting location and consume them when finished goods are received.

What changed for subcontracting routes in Odoo 19?

For resupply, components on a subcontracting BoM are automatically configured to be sent to the subcontractor by default. For dropship-to-subcontractor, Odoo 19 uses the standard Dropship route on the components after Dropshipping is enabled. Older version tutorials may show different route steps.

Does Odoo create a manufacturing order for subcontracting?

The commercial trigger is normally a purchase order for the subcontracted product. Odoo uses the subcontracting BoM and inventory moves to represent component consumption and finished-product receipt; users should not treat it like an ordinary in-house manufacturing order workflow.

How does Odoo value a subcontracted product?

The design should consider company-supplied component cost, the subcontractor’s manufacturing price, shipping, dropship costs and other associated costs. Only properly configured and posted amounts will reach valuation, so finance must test the result.

Can Odoo track lots through a subcontractor?

Yes, Odoo supports lot and serial traceability across inventory movements. The implementation must require the correct component lots and finished-product lot or serial numbers at the relevant steps.

Can the subcontractor ship the finished product directly to my customer?

A direct-to-customer flow can be designed, but it is a separate downstream decision from dropshipping components to the subcontractor. Test sales, ownership, delivery evidence, invoicing, returns and traceability end to end.

Final recommendation

Start with material ownership. If the subcontractor supplies everything, use basic subcontracting. If you send your materials, use resupply. If another vendor sends selected materials directly, use dropship to subcontractor. Then layer in lead times, traceability, quality, exceptions and valuation.

If you are planning or correcting an outsourced manufacturing flow, review my Odoo ERP services and book a short discussion. I will help you separate standard Odoo 19 capability from the controls or custom development your process genuinely needs, without making a pricing or delivery commitment before the scope is clear.

Have something to build or fix?
Book a free 15-minute call.
Get honest advice and a clear next step, whether or not we work together.
Book a 15-minute call →
AYArsalan YasinOdoo, AI automation, software and mobile app specialist based in Sydney. Ten years of hands-on delivery.