I have worked with RMG factories ranging from 200-machine operations running a single buyer's programme to 2,000-machine multi-floor setups managing 12 buyers simultaneously. The ERP failure pattern is the same across both ends of the scale: the factory buys a generic manufacturing system, maps their process to the system's assumptions rather than the other way around, and within six months is running parallel records in Excel because the system "doesn't work for garments."
Odoo works well for RMG — but only when it is configured to reflect how garments are actually made. That means understanding the sample approval cycle, the size-colour BOM structure, the work centre flow from cutting through packing, and the BGMEA-compliant payroll that makes up the largest operating cost in most factories. This guide covers all of it.
For the foundational manufacturing module configuration that applies across all industries, see the Odoo manufacturing module setup guide for Bangladesh factories. This article builds on that with RMG-specific configuration.
The factories that struggle with ERP are not the ones with complex products. They're the ones with simple products and complex workflows — which describes every RMG factory in Bangladesh.
Why RMG needs different ERP configuration
Standard manufacturing ERP assumes: one product → one BOM → one production order → one finished goods unit. RMG breaks every one of these assumptions:
- One style has 15–30 variants. A men's polo shirt in 5 sizes and 6 colours is 30 product variants. Each variant has slightly different fabric consumption. A factory running 50 active styles has 1,500+ variants. Generic ERP creates a product per variant — 1,500 products, 1,500 BOMs, impossible to manage.
- Production is not by unit — it's by line and day. The KPI that matters in RMG is pieces per line per day by size. A production order for 5,000 pieces of Style A is spread across 3 sewing lines over 8 days. ERP needs to track daily output per line, not just total completion.
- Material consumption is by cut — not by MO. Fabric is consumed when the fabric is cut, not when the finished garment is completed. A cutting lot may feed 3 different production orders. Fabric yield (the ratio of actual fabric consumed to the standard BOM quantity) is the most important cost control metric in cutting — generic ERP ignores it.
- Buyer requirements vary by purchase order. The same style may have different label specifications, packing requirements, or carton marks for different buyers. The ERP needs to track buyer PO-level instructions, not just style-level configurations.
- BGMEA wage compliance is non-negotiable. Labour law in Bangladesh mandates attendance-linked salary, overtime records, PF deduction, and gratuity provision. Payroll that is not compliant with the prevailing BGMEA/BKMEA wage board notification creates legal and audit risk.
Each of these challenges has a correct solution in Odoo — but requires deliberate configuration. Let's walk through each.
Sample-to-shipment workflow in Odoo
The RMG production cycle starts months before the first fabric roll arrives on the cutting table. Here is how each stage maps to Odoo:
Bill of Materials for garments — the size-colour approach
The most consequential configuration decision in an RMG Odoo setup is how you structure the Bill of Materials. Get this wrong and you will be managing thousands of products and BOMs. Get it right and the system scales to any number of styles.
The correct approach: Product Variants with one BOM per style (template level).
Configure each style as a product with two attributes: Size (XS, S, M, L, XL, XXL) and Colour (White, Navy, Red, etc.). Odoo automatically creates variants. The BOM is defined at the product template level and uses Apply on Variants to specify size-dependent quantities:
| Component | Unit | Qty (S) | Qty (M) | Qty (L) | Qty (XL) | Apply on Variants |
|---|---|---|---|---|---|---|
| Fabric | ||||||
| 100% Cotton Jersey 160GSM — White | Metre | 1.40 | 1.52 | 1.65 | 1.78 | Colour = White |
| 100% Cotton Jersey 160GSM — Navy | Metre | 1.40 | 1.52 | 1.65 | 1.78 | Colour = Navy |
| Trims (size-independent) | ||||||
| Sewing Thread — White 40/2 | Cone | 0.08 | 0.08 | 0.09 | 0.10 | All variants |
| Collar Rib — White | Metre | 0.35 | 0.38 | 0.42 | 0.46 | Colour = White |
| Main Label — woven | Pcs | 1 | 1 | 1 | 1 | All variants |
| Size Label (S/M/L/XL) | Pcs | 1 | 1 | 1 | 1 | Size-specific variant |
| Hangtag + Barcode sticker | Set | 1 | 1 | 1 | 1 | All variants |
| Packaging | ||||||
| Poly bag — size S/M | Pcs | 1 | 1 | — | — | Size = S or M |
| Poly bag — size L/XL | Pcs | — | — | 1 | 1 | Size = L or XL |
| Export carton (12 pcs/ctn) | Pcs | 0.083 | 0.083 | 0.083 | 0.083 | All variants |
This structure gives you correct fabric and trim quantities per production order, regardless of the size ratio in the buyer's order (the assortment mix). When the buyer places an order for 3,000 pieces of Style A in a 1:2:3:2:1 size ratio (XS:S:M:L:XL:XXL), Odoo generates one MO with the correct aggregate component requirements across all sizes.
Work centre setup for RMG
Configure the following work centres in Odoo Manufacturing → Configuration → Work Centres. Each work centre has a capacity (machines or operators), a cost rate (BDT/hour for overhead absorption), and efficiency factors.
- Spreading & laying fabric
- Marker placement & cutting
- Numbering & bundling
- Fusing (interlining)
- One work centre per line
- Tracks daily output per line
- Efficiency = actual vs target pcs
- SMV-based standard time
- Ironing & pressing
- Spot cleaning
- Final thread trimming
- Measurement check
- AQL inspection (2.5 or 4.0)
- Reject classification by defect
- Scrap vs rework decision
- Final audit pass-rate logging
- Folding & poly-bagging
- Hangtag & barcode placement
- Carton packing to buyer spec
- Carton sealing & marking
- Embroidery (internal or subcontract)
- Screen / digital print
- Heat transfer application
- Subcontract PO if outsourced
For subcontracted processes (embroidery, washing, printing), use Odoo's Subcontracting BOM type. The cut panels are sent to the sub-contractor via a subcontracting PO, and the finished panels arrive back as receipts. Odoo handles the material tracking and cost accounting automatically.
BGMEA wage board compliance in Odoo
RMG workers in Bangladesh are covered by the BGMEA/BKMEA wage board notification, which sets minimum wages by worker grade. Odoo's payroll module must be configured to match these requirements exactly — a payroll audit by BGMEA or the Department of Inspection for Factories and Establishments (DIFE) will check payslips against this structure.
For the full payroll configuration including the grade structure, PF, gratuity, and leave policy, see the BGMEA wage board setup guide in Odoo. Key points for RMG specifically:
- Grade-based salary structures: Create one salary structure per worker grade. Each structure contains Basic (as per the current gazetted wage-board minimum for that grade), House Rent, Medical, Transport, and Food allowances. Always configure these against the latest gazetted figures rather than hard-coding amounts — the wage board is periodically revised. Configure each as a salary rule with its correct computation type (fixed or percentage of basic).
- Attendance integration: Biometric devices (ZKTeco, Suprema, etc.) export attendance logs as CSV or push them via API. Odoo's attendance module imports these, and the payroll module uses the attendance record to calculate per-day deductions for absent days (Basic ÷ 26 × absent days for monthly-rated workers).
- Overtime: Under the Bangladesh Labour Act, overtime is paid at 2× the basic hourly rate. Configure an overtime salary rule: (Basic ÷ 208) × 2 × overtime hours. The input for overtime hours comes from the attendance log — hours beyond 8 per day or 48 per week are overtime.
- PF contribution: Worker contributes 5% of Basic, employer contributes 5% of Basic. Configure as two payroll rules — one deduction (employee PF) and one in the employer contribution category (employer PF). The employer PF appears on the payslip for transparency but does not reduce the employee's net salary.
- Gratuity provision: Not deducted from salary — it is a monthly provision accrual. Configure a manual journal entry rule that debits Gratuity Expense and credits Gratuity Provision liability, computed as (Basic × 1/12 × years of service factor). In practice, many factories run this as a monthly provision journal rather than through the payroll engine.
- Annual Leave Encashment: Employees earn annual leave at 1 day per 18 days worked (for factory workers). If leave is encashed at year-end or on separation, the payment is Basic ÷ 26 × number of leave days. Configure as a separate one-time salary rule applied only in the encashment month.
LC and export documentation in Odoo
RMG exports in Bangladesh are almost entirely LC-based (Letter of Credit). The LC sets the payment terms, the shipment deadline, and the document requirements. Odoo's sale and accounting modules need to be configured to support LC-linked export documentation.
- Sales Order as the LC anchor: When a buyer LC is received, create the Sales Order in Odoo and record the LC number, LC value, expiry date, and shipment deadline in the order's Notes or a custom field. All downstream operations (purchasing, production, delivery) trace back to this Sales Order.
- Shipment deadline alert: Use Odoo's scheduled date on the Delivery Order. Set it to the LC shipment date minus 2 days (buffer for customs processing). The Manufacturing Order completion date should be set 5 days before the shipment date. Odoo's activity reminders alert the responsible person when deadlines approach.
- Export invoice: The invoice is raised in USD (or the LC currency). Configure the USD currency in Odoo and use the pricelist for the buyer in USD. The invoice references the LC number in the "Customer Reference" field. This reference appears on all export documents.
- Packing list: The Delivery Order in Odoo generates a packing list. Configure a custom QWeb report template that shows: style, colour, size breakdown, carton numbers, gross and net weight, measurement, and total pieces. This is the primary export document besides the commercial invoice.
- Export accounting: Export sales in Bangladesh are zero-rated for VAT (0% output VAT). Configure a separate tax group "Export — 0%" in Odoo's fiscal positions. Apply this fiscal position to all export buyers. The tax report will show export turnover separately from domestic turnover, which is required for the monthly VAT return (9.1) under the Mushak system.
Production reporting in Odoo RMG
The reports that RMG factory management uses daily are not all built into Odoo by default, but can be configured or extracted:
- Daily production board: Manufacturing → Reporting → Production Analysis. Filter by date = today, group by Work Centre. This shows pieces produced per work centre per day. Export to Excel for the morning production meeting if needed.
- WIP (Work in Progress) by stage: The difference between cutting output and sewing completion gives you WIP at the cutting-to-sewing stage. Configure an Odoo pivot view on Manufacturing Orders filtered to "In Progress" status, grouped by routing step. This gives you WIP by production stage in real time.
- Shipment readiness by order: Sales → Reporting → Sales Analysis. Filter by Delivery Date (this week / this month). This shows which buyer POs are due for shipment and what percentage has been delivered.
- Fabric yield: Compare actual component consumption (from Work Orders) to BOM standard consumption for completed MOs. The variance is fabric yield loss. This requires a custom report or a scheduled Odoo filter on Manufacturing Orders comparing component_qty_done vs product_qty × BOM component qty.
- Quality rejection rate: Scrap Analysis report in Manufacturing → Reporting → Scrap. Filter by product and period. Total scrap ÷ total production = rejection rate %. Group by scrap reason to see your defect Pareto.
Bangladesh RMG — configuration notes specific to the local context
- Subcontracting is the norm, not the exception. Most RMG factories subcontract washing, embroidery, and printing. Use Odoo's subcontracting BOM type for each subcontracted process — do not use stock transfers and manual POs. Subcontracting BOMs handle material flow, costing, and finished goods receipt correctly and automatically.
- Multiple buyers, multiple compliance requirements. Buyers from H&M, Inditex, PVH, and Li & Fung each have different label specifications, testing requirements, and packing standards. Store buyer-specific requirements as Sales Order notes and attach the buyer's compliance checklist PDF to each order via the chatter. Do not try to encode all buyer-specific requirements in the product master — keep the product master clean and use the order-level documentation for buyer specifics.
- Power outage contingency. On-premise Odoo deployments in factories with unstable power need a UPS that covers the server and at least the shop floor terminals. Configure Odoo's offline mode or use the Odoo mobile app for sewing floor production entry — the app caches entries locally if the server is briefly unreachable and syncs when connectivity is restored.
- Friday/Saturday weekend. Configure Odoo's work schedules to reflect the Bangladesh factory calendar: Sunday through Thursday as standard working days, Friday and Saturday as weekend (or Friday half-day + Saturday off depending on factory policy). This affects attendance calculation, overtime threshold, and delivery date scheduling.
- Compliance audit trail. BGMEA, buyer CSR audits, and DIFE inspections will request payroll records, attendance records, and overtime logs. Odoo generates all of these natively. Ensure the HR module data is complete and accurate — incomplete attendance records are the most common finding in factory compliance audits.
Odoo for RMG is not a plug-and-play deployment. The BOM structure, work centre configuration, payroll compliance, and LC documentation all require deliberate design decisions before go-live. Factories that invest 2–3 weeks in proper configuration get a system that tracks from sample to shipment with full traceability. Those that rush the setup get a system that runs parallel to Excel within 90 days. To scope the licensing and implementation budget for your factory before you start, try the Odoo cost estimator. Need help configuring Odoo for your RMG factory? Get in touch →
Frequently asked questions
How do I set up Odoo for an RMG factory in Bangladesh?
Set up Odoo for RMG by configuring: Manufacturing with work centres (Cutting, Sewing lines, Finishing, QC, Packing); BOM using product variants for size-colour (one BOM per style template, not per variant); HR/Payroll with BGMEA grade-based salary structures and biometric attendance integration; Inventory with lot tracking for fabric rolls; Sales for buyer PO management with LC reference tracking; Accounting for export zero-rated VAT and TDS. The BOM structure is the most critical decision — get it right before entering any products.
Does Odoo handle BGMEA wage board compliance?
Yes. Configure salary structures per BGMEA worker grade with Basic per the current gazetted wage-board minimums, plus House Rent, Medical, Transport, and Food allowances, PF deductions (5%/5% worker/employer), overtime at 2× basic hourly rate, and gratuity provision accrual. Attendance from biometric devices feeds into payroll for per-day deduction calculations. Odoo generates payslips, salary registers, and PF schedules that satisfy BGMEA and DIFE audit requirements.
How do I handle size and colour variants in Odoo garments BOM?
Use Odoo Product Variants: create one product per style with Size and Colour as attributes. Define the BOM at the product template level. Use "Apply on Variants" for size-dependent components (fabric, collar rib, poly bags) and leave colour-dependent components (fabric colour, thread colour) applied to the relevant colour variants. This keeps your product catalogue to one entry per style rather than one per size-colour combination — essential when you have 50+ active styles.
How does Odoo manage production tracking for garments?
Each buyer PO line becomes a Manufacturing Order in Odoo. The MO has work orders for each stage (Cutting → Sewing → Finishing → QC → Packing). Supervisors record daily output per work centre using the Manufacturing tablet view. Odoo shows real-time WIP by stage, daily output vs plan, and cumulative completion vs shipment date. Rejections are recorded as scrap orders, which deduct from inventory and post a scrap cost entry. The production dashboard gives management visibility of all active orders and their completion status against shipment deadlines.