Technical Lab · 0063

Odoo Subcontracting for RMG job-work in Bangladesh.

Almost every Bangladesh garment factory sends some part of production outside its own walls: embroidery to a specialist unit in Narayanganj, washing to a plant in Savar, printing to a job-work house in Gazipur. Odoo has a purpose-built Subcontracting flow for exactly this, and most factories that run Odoo never turn it on properly. This guide covers the configuration, the resupply logic, the costing, and the reconciliation discipline that makes it work.

Why Job-Work Is Structural in Bangladesh RMG

No mid-size Bangladesh garment factory does everything in-house. A woven shirt exporter with 400 machines for stitching almost never owns an embroidery unit, a stone-wash plant, or a heat-transfer printing line, because the capital cost and utilization rate for those specialist processes do not justify in-house investment at typical order volumes. Instead, the factory cuts fabric, issues it to a subcontractor for embroidery or washing, and receives finished or semi-finished pieces back for final stitching, finishing, and packing.

This job-work model (locally called "subcontract" or simply "outside process") is not a workaround, it is how the industry is structured, and it shows up at every tier: Tier 1 exporters subcontract specialist finishes to dedicated units in Narayanganj and Gazipur, Tier 2 factories subcontract entire cut-and-sew packages to smaller units during peak season, and even large composite mills subcontract overflow capacity to sister concerns when order volume exceeds their own line capacity. The article on Odoo for RMG & Garments Bangladesh covers the wider production and compliance picture this sits inside.

The operational risk is that job-work is invisible to most accounting systems. Fabric leaves the factory gate on a challan, a paper delivery note that many factories still track in a physical register. Nobody in the ERP knows how much fabric is sitting at the subcontractor's unit, whether the subcontractor's return matches what they were supposed to produce, or what the true landed cost of the finished piece is once the job-work charge is added. Odoo's Subcontracting module exists to close exactly this gap, and it is one of the most underused features in Bangladesh Odoo deployments because most implementation partners configure a basic Manufacturing module and stop there.

60–80%
Factories Using Job-Work
Estimated share of Bangladesh RMG factories that subcontract at least one process
2–5%
Typical Wastage Allowance
Agreed fabric loss tolerance for cutting, embroidery, and wash job-work
7–15 Days
Typical Turnaround
Time from material issue to finished goods return for wash/embroidery job-work

How Odoo Models Subcontracting

Odoo treats a subcontractor as a vendor and, simultaneously, as an internal stock location that happens to sit outside your physical premises. This dual identity is the key concept to understand before configuring anything. When you enable subcontracting, Odoo automatically creates a location under Inventory > Configuration > Locations named after the vendor, typed as an internal location owned by your company. Stock that sits there is still yours, on your balance sheet, valued at cost, even though it is physically at someone else's factory.

This is fundamentally different from a standard purchase, where you buy a finished good from a vendor and the vendor's own raw material and process are none of your concern. In subcontracting, you own the components throughout the process and you are only paying the vendor for their labor and machine time (and sometimes a small consumable). Odoo's data model reflects that ownership at every step, which is what lets you answer "how much fabric do we have sitting at the embroidery unit right now" without a phone call.

Prerequisite

Subcontracting is available on both Odoo Community and Enterprise Manufacturing apps, but the resupply automation and the subcontracting-specific reporting views are meaningfully better on Enterprise. If you are running Community, budget extra time to build manual stock move templates for the resupply step, since the one-click "resupply subcontractor" button is an Enterprise convenience feature layered on top of the same underlying location logic.

Turning On the Subcontracting Route

The setup sequence that works reliably in Bangladesh factory deployments:

Enable the Subcontracting setting

Go to Manufacturing > Configuration > Settings and activate Subcontracting. This exposes the Subcontracting BOM type and adds a Subcontracting tab to vendor records.

Mark the vendor as a subcontractor

On the embroidery or washing unit's vendor record, this is largely automatic once a subcontracting BOM references them, but it is worth confirming their address is set correctly since Odoo uses it to auto-name the generated location.

Confirm the subcontractor location exists

Check Inventory > Configuration > Locations for a new internal location, typically named "Partner: [Vendor Name]". This is where issued components and returned finished goods will be tracked.

Set the resupply route on the component or the operation

Decide whether the raw material issue should trigger automatically per purchase order (resupply on order) or run on a fixed replenishment schedule (resupply at fixed location). Most Bangladesh job-work relationships use resupply on order, covered in the next section.

Building a Subcontracting BOM

A subcontracting BOM looks almost identical to a manufacturing BOM in the Odoo interface, with one critical difference: under Manufacturing > Products > Bills of Materials, the BoM Type field is set to Subcontracting instead of Manufacture, and a Subcontractor field appears where you select the job-work vendor. The Components tab lists exactly what you will send them: for an embroidery job, this is the cut fabric panel and the embroidery thread if you supply it; for a wash job, it is the assembled but unwashed garment plus any wash chemicals you provide.

A single style will typically need one subcontracting BOM per subcontracted operation, not one giant BOM covering the whole garment. A factory that sends fabric out for both embroidery and stone-wash on the same style needs two subcontracting BOMs chained through intermediate semi-finished products: raw-cut-panel to embroidered-panel (subcontracted to the embroidery unit), and embroidered-panel to washed-and-finished-panel (subcontracted to the wash plant), before the final in-house stitching BOM assembles the finished garment. This chaining mirrors the actual physical route sheet and makes the routing traceable end to end, which connects directly to the multi-step routing logic covered in Odoo Manufacturing Routing Bangladesh.

BOM Stage Type Components Issued Output Received
Cutting Manufacture (in-house) Fabric roll, trims Cut panel set
Embroidery Subcontracting Cut panel, embroidery thread Embroidered panel
Wash Subcontracting Assembled garment, wash chemical Washed & finished garment
Stitching & Packing Manufacture (in-house) Embroidered/washed panels, poly bag, cartons Finished, packed carton

Resupply Flows: On Order vs Fixed Location

Odoo offers two resupply strategies for getting components to the subcontractor, and choosing the right one for each relationship matters more than most implementers realize.

Resupply on order (dropship-style): when you confirm the purchase order for the subcontracted operation, Odoo automatically generates a delivery order moving the required components from your warehouse to the subcontractor's location, tied one-to-one with that purchase order. This is the right model for job-work vendors who process discrete lots or batches per PO, which describes the large majority of Bangladesh embroidery, printing, and wash subcontractors: a lot of 3,000 pieces goes out on Monday, comes back finished the following week, tied to a single reference.

Resupply at fixed location (continuous replenishment): components are pushed to the subcontractor location ahead of time based on a reordering rule, and the subcontractor draws from a running buffer stock rather than waiting for a matched delivery per order. This fits subcontractors who run a continuous line for you, for example a dedicated wash plant capacity block reserved exclusively for one factory, where holding a buffer of unwashed garments at their site keeps their line running without waiting on discrete dispatches.

Configuration Pitfall

The single most common Bangladesh Odoo subcontracting misconfiguration is leaving the resupply route on Buy instead of Resupply Subcontractor on the component's route settings at Inventory > Configuration > Routes. When this is wrong, Odoo will ask you to manually create the material issue, or worse, the purchase order for the subcontracted service confirms without ever prompting a delivery, and the factory falls back into the old paper-challan tracking without anyone deciding to.

Receiving Finished Goods Back

When the subcontractor's output is ready, receiving it in Odoo works exactly like receiving any purchased product: you validate the incoming shipment against the purchase order for the subcontracted service. Behind the scenes, Odoo performs two moves simultaneously: it consumes the components that were sitting at the subcontractor's location (per the subcontracting BOM ratio, times the quantity received), and it receives the finished or semi-finished output into your specified warehouse location. If the quantity received differs from what was issued, adjusted for the agreed wastage allowance, Odoo will show a negative or unusually high stock balance at the subcontractor location, which is your signal to investigate before the vendor bill is approved.

For partial deliveries, which are the norm rather than the exception in Bangladesh job-work (a subcontractor might return 1,800 of a 3,000-piece lot on the first truck), Odoo supports partial receipt against the same purchase order, consuming components proportionally and leaving the balance of both the PO and the subcontractor's stock location open until the remainder arrives.

Costing the Subcontracted Operation

The subcontractor's service fee sits on the purchase order line exactly like any vendor bill: a BDT-per-piece rate for embroidery, a BDT-per-kg or BDT-per-piece rate for washing. Odoo rolls this fee into the landed cost of the received product alongside the cost of the components you supplied. In practice, a washed and finished garment's standard cost in Odoo becomes: cost of the assembled garment issued (itself built up from fabric, trims, and in-house labor) plus the wash job-work charge plus any wash chemical you supplied as a component.

BDT 8–18
Embroidery / Piece
Typical job-work rate depending on stitch density and design complexity
BDT 15–40
Wash / Piece
Varies by wash type: normal, enzyme, stone, or acid wash
BDT 6–20
Print / Piece
Screen or heat-transfer print, per placement and color count

This matters directly for costing accuracy on export orders. A factory that treats job-work charges as a lump general expense rather than rolling them into per-style product cost will consistently misprice styles that use heavy embroidery or multi-stage wash processes against styles that do not, because the job-work cost gets averaged across all styles instead of attributed to the ones that actually incur it. Odoo's automatic cost roll-up through the subcontracting BOM chain fixes this without any manual costing spreadsheet.

Quality Control on Returned Goods

Goods coming back from a subcontractor are exactly the point in the supply chain where defects most often surface. Shade variation between embroidery batches, over-wash or under-wash of denim, misaligned prints, these are the standard failure modes Bangladesh factories deal with, and a buyer audit (H&M, Zara, and similar buyers routinely audit supplier QC records) expects documented inspection at every handoff point, not just at final packing.

Odoo's Quality app lets you attach a Quality Check point to the receipt operation type used for subcontracted goods, under Quality > Configuration > Control Points. A practical Bangladesh RMG setup uses a Pass/Fail check on an AQL 2.5 sampling plan for the receiving quantity, plus a Worksheet check that captures shade grading and print alignment with photo attachments for the buyer's audit trail. Lots that fail can be routed to a quarantine location rather than received into sellable stock, which stops a defective subcontracted batch from silently moving into a packed carton destined for shipment.

Tracking WIP at the Subcontractor

Because the subcontractor's location is a real, valued Odoo internal location, you can pull a live valuation of what is sitting outside your factory at any moment from Inventory > Reporting > Valuation, filtered to that location. This single report answers a question that most Bangladesh factories running job-work on paper registers cannot answer reliably: exactly how much company-owned inventory (measured in taka, not just pieces) is currently at third-party premises, across how many subcontractors, and how long it has been sitting there.

This has a direct finance consequence at month-end and year-end closing, since inventory at subcontractor locations still counts as your inventory asset, not the subcontractor's, and auditors reviewing export factories increasingly ask for this breakdown explicitly. It also feeds directly into reorder planning, since the reordering rules covered in Odoo Reordering Rules & MTO Bangladesh can account for stock committed to subcontractors when calculating what to cut or procure next, rather than treating that fabric as simply gone.

Where Subcontracting Setups Break

In practice, the following patterns account for nearly every subcontracting configuration failure I have seen in Bangladesh Odoo deployments:

Subcontractor delays without a linked purchase order status

If nobody updates the purchase order's expected date when a subcontractor runs late, the reordering and production planning modules keep assuming the input will arrive on schedule, and downstream shipment dates silently slip without an early warning.

Material reconciliation disputes with no documented baseline

Without recording the agreed wastage allowance as an explicit BOM ratio, every shortfall becomes a negotiation instead of a calculation. Build the tolerance into the BOM component quantity so Odoo's variance reporting flags genuine overages automatically.

Multiple resupply routes left active on the same product

If a component's route is set to both Buy and Resupply Subcontractor simultaneously, Odoo can generate duplicate or conflicting stock moves. Each subcontracted component should have exactly one resupply route active per subcontracting relationship.

No quarantine location for failed QC lots

Factories that skip this step end up manually holding defective cartons on the floor with a sticky note, which defeats the traceability that buyer audits are specifically checking for.

For factories still running core manufacturing configuration for the first time, the Odoo Manufacturing Module Bangladesh guide is the right starting point before layering subcontracting on top, since a clean manufacturing order structure makes the subcontracting BOM chain far easier to model correctly.

Subcontracting Setup Consultation

If your factory runs embroidery, washing, printing, or cut-and-sew job-work through subcontractors and your ERP still tracks it on paper challans, I can map your actual job-work routes into Odoo's subcontracting BOMs and resupply flows, with proper WIP valuation and QC gates on return. Contact me for a strategy session →

Frequently asked questions

How do you track raw material sent to a subcontractor in Odoo?

Odoo tracks this through the resupply subcontractor flow. When a subcontracting route is enabled on a product, Odoo automatically creates a delivery order that moves raw material from your warehouse to a virtual internal location that represents the subcontractor. This location still belongs to your company in Odoo's stock valuation, so the material remains on your books as work-in-progress inventory at a third-party location rather than being written off as consumed. You can view stock on hand at the subcontractor location at any time from Inventory > Reporting, filtered by that location, which gives you a live answer to how much fabric or WIP sits outside your own four walls.

What is a subcontracting BOM in Odoo?

A subcontracting BOM is a Bill of Materials with its type set to Subcontracting instead of Manufacture. It lists the components that must be supplied to the subcontractor to produce the finished or semi-finished good, but instead of generating a manufacturing order in your own facility, Odoo generates a purchase order for the subcontracted service and a linked delivery of the listed components to the subcontractor's location. When the vendor bill or the receipt is validated, Odoo automatically consumes the components from the subcontractor location and receives the output into your warehouse, keeping the accounting and inventory in sync without manual journal entries.

How do you cost a subcontracted embroidery or washing operation in Odoo?

The subcontractor's service fee is entered as the price on the purchase order line for the subcontracted product, exactly like a normal vendor bill. Odoo then rolls this fee into the landed cost of the finished good alongside the cost of the components you supplied, so the receiving product's valuation reflects raw material cost plus the job-work charge. For operations where the subcontractor also adds a consumable (thread, dye, chemical) that you do not supply, that cost is simply built into their quoted per-piece rate rather than tracked as a separate component in Odoo.

How do you handle quality control on goods returned from a subcontractor?

Odoo's Quality module lets you attach a quality check point to the receipt operation type used for subcontracted goods, so every incoming lot from a job-work vendor is flagged for inspection before it is added to sellable or next-stage stock. Common configurations for Bangladesh RMG include a Worksheet-based check for shade and print consistency, a Measure check for size tolerance, and a simple Pass/Fail check tied to an AQL sampling plan. Failed lots can be routed to a quarantine location instead of being received directly into stock, which prevents defective subcontracted output from being packed and shipped to the buyer.

How do you reconcile fabric wastage disputes with subcontractors in Odoo?

Because the subcontracting route creates a full stock ledger at the subcontractor's virtual location, you can run an Inventory Valuation report or a Moves History report filtered to that location for any date range and see exactly how much material was issued, how much finished output was received back, and what quantity remains unreconciled. Comparing this to the subcontractor's own consumption report against the agreed BOM ratio (including an approved wastage allowance, typically 2 to 5 percent for cutting and embroidery job-work in Bangladesh) turns a verbal dispute into a documented variance that both sides can review line by line.