Bangladesh exports over 2 million bicycles annually, primarily to the European Union, USA, and Japan. The major exporters operate EPZ factories that import 60–80% of components and assemble finished bicycles for re-export. The duty drawback system, the HS code complexity of bicycle components, and the lot-level traceability required for duty claims make this one of the most ERP-intensive manufacturing categories in Bangladesh.
Most cycle factories I have worked with are running procurement in Excel, production records in handwritten registers, and have no ability to quickly answer the question a duty drawback officer always asks: "Show me which imported components — with which import entry numbers — went into the bicycles on this export invoice." Odoo can answer that question in three clicks. This guide shows you how to set it up.
For the underlying manufacturing module setup, see the Odoo manufacturing module guide for Bangladesh factories. For customs and HS code management more broadly, see the HS code and customs management guide.
A bicycle has over 100 components. Each one is a procurement decision, a quality check, and a traceability requirement. ERP that cannot see all 100 is not ERP — it is expensive data entry.
Bangladesh cycle export: the ERP context
Bangladesh cycle manufacturers face a specific combination of challenges that makes ERP configuration non-trivial:
- Component import dependency: Frames and some components are locally produced. Derailleurs, hubs, bottom brackets, tyres, and many precision parts are imported — primarily from China and Taiwan. Each import shipment has a Bill of Entry, import duty, and AIT/VAT. The duty on these components is what creates the duty drawback claim at export.
- Multi-level assembly: A bicycle is not a simple assembled product. It has sub-assemblies (wheel assembly, frame assembly, drivetrain assembly) that may be produced in different departments or subcontracted. The BOM is 3–4 levels deep, not flat.
- Model proliferation: A typical cycle exporter has 30–80 active models (mountain bikes, road bikes, children's bikes, e-bikes). Each model has a distinct BOM. Managing 80 BOMs manually is unscalable.
- Buyer-specific requirements: European buyers under EUDR and Green Deal requirements are increasingly asking for component traceability documentation. EPZ-based exporters have additional compliance requirements from BEPZA.
- Duty drawback value: Import duty on bicycle components can represent 8–25% of the CIF import value, depending on the component. For a factory importing $2M of components annually, the drawback claim is $160,000–$500,000. Losing this due to poor traceability records is a significant cost.
Multi-level BOM structure in Odoo
A bicycle BOM in Odoo should be structured as a multi-level BOM with sub-assemblies. This gives you production planning and traceability at the sub-assembly level, not just the finished bicycle level.
In Odoo, set all sub-assembly BOMs (Level 1) with BOM Type = Manufacture. This means Odoo creates a separate Manufacturing Order for each sub-assembly — you get separate production tracking for frame assembly, wheel building, and drivetrain assembly. The top-level bicycle MO consumes these sub-assemblies as components.
If you want sub-assemblies to be produced inside the same MO as the finished bicycle (not separately planned), use BOM Type = Kit for the sub-assemblies. Use Kit when the sub-assembly is never stored separately; use Manufacture when it is produced in batches, inspected independently, or shared across multiple bicycle models.
Imported component procurement
Most high-value components in Bangladesh cycle manufacturing are imported from China (Tianjin, Wuxi) and Taiwan. Here is how to configure the procurement workflow in Odoo:
- Vendor configuration: Create vendors with their country (China/Taiwan), currency (CNY/USD), payment terms, and lead time. Set the pricelist currency per vendor. Purchase Orders are automatically generated in the vendor's currency.
- HS codes on product: Enter the import HS code on each component's product master (Inventory → Products → product form → General Information → HS Code field). This is used in the purchase receipt documentation and for the duty drawback claim.
- LC-linked procurement: When sourcing under an LC, record the LC number as an external reference on the Purchase Order. Set a scheduled activity reminder for the LC expiry date. This ensures no LC expires without the shipment being tracked.
- Bill of Entry (B/E) recording: When the shipment clears Chittagong Customs, the Bill of Entry number is the key reference for the duty drawback claim. Record the B/E number and import duty amount as a note on the Purchase receipt, or use a custom field. Some factories create a separate "Import Shipment" record using Odoo's Lot/Serial Number notes to store B/E data per import lot.
- Landed costs: Import duty, C&F charges, port handling, customs broker fees, and freight (if not included in CIF price) are landed costs. In Odoo, go to Inventory → Operations → Landed Costs, link the receipt, and distribute the costs across components by quantity or value. This gives you the true landed cost per unit for each imported component — critical for accurate BOM costing and margin analysis.
Production routing in Odoo
| Operation | Work Centre | What happens | Duration (est.) | Odoo tracking |
|---|---|---|---|---|
| Frame Cutting | Tube Cutting WC | Steel tubes cut to length for frame, fork, and stays per model specifications | 0.5 hrs/unit | Work Order — Tube Cutting |
| Frame Welding | Welding WC | TIG/MIG welding of frame joints. Jig fixtures ensure geometry consistency. Post-weld inspection (visual, weld quality) | 1.5 hrs/unit | Work Order — Welding |
| Frame Painting | Paint WC | Powder coating or wet paint. Colour as per buyer colour code. Oven curing. Visual inspection for runs/chips | 0.75 hrs/unit | Work Order — Painting |
| Wheel Building | Wheel Assembly WC | Lacing spokes to rim and hub. Truing on tensioning machine. Tyre and tube mounting | 0.6 hrs/pair | Work Order — Wheel Assembly (separate MO) |
| Final Assembly | Assembly Line WC | Install fork, headset, wheels, drivetrain, brakes, handlebars, saddle, pedals. Gear and brake cable adjustment | 1.0 hrs/unit | Work Order — Final Assembly |
| QC & PDI | QC WC | Pre-delivery inspection: gear shifting, brake pull, wheel true, paint defects. AQL sampling per buyer spec | 0.3 hrs/unit | Quality Check + Scrap Order (rejects) |
| Packing & Cartonning | Packing WC | Semi-knock-down (SKD) packing per buyer spec (handlebar loose, pedals loose, partially assembled). Carton label, buyer barcode sticker | 0.4 hrs/unit | Work Order — Packing |
HS code classification for bicycle components
In Odoo, enter each HS code in the product's HS Code field. When you generate a commercial invoice or packing list from a Delivery Order, the HS code is available for the customs declaration. For the duty drawback claim, you need the HS code of the imported component (input) and the HS code of the exported bicycle (output) to demonstrate eligible input-output relationship under the Customs Duty Drawback Rules.
Export documentation from Odoo
A standard bicycle export shipment from Bangladesh requires these documents, all of which Odoo can generate or support:
- Commercial Invoice: Generated from the Odoo Sales Order invoice. Shows: exporter details, importer details, LC number, country of origin (Bangladesh), quantity (pieces and cartons), HS code (8712.00XX), unit price, total FOB/CIF value in USD. Configure a custom QWeb report template to include the certificate of origin declaration and the LC reference.
- Packing List: Generated from the Delivery Order. Shows: carton numbers (sequentially numbered), pieces per carton, gross/net weight per carton, dimensions, total cartons, total pieces. For SKD packing, list the loose components per carton separately from the assembled bicycle.
- Certificate of Origin (CO): Applied for from the Bangladesh Export Promotion Bureau (EPB) or Chamber of Commerce. The CO references the commercial invoice number and verifies Bangladesh origin. In Odoo, store the CO reference number as a note on the Delivery Order for record-keeping.
- EXP Form: The Bangladesh Bank EXP (Export) form is required for all export shipments. The EXP number is issued by the bank and references the LC and the export invoice. Store the EXP number on the Sales Order or invoice for traceability.
- Bill of Lading: Issued by the shipping line after cargo is loaded. Attach the B/L PDF to the Delivery Order in Odoo's chatter. The B/L number is required for the duty drawback claim.
Duty drawback traceability in Odoo
The duty drawback claim in Bangladesh requires you to prove, for each export shipment, which imported materials were used and what import duty was paid on them. Odoo enables this through lot-level traceability:
- Enable lot tracking on all imported components: In the product master, set Tracking = "By Lot" for all imported components (derailleurs, hubs, tyres, rims, etc.). When you receive these components against a PO, assign lot numbers that correspond to the import shipment batch (e.g., LOT-2026-CN-042 for the 42nd China import shipment of 2026). Record the Bill of Entry (B/E) number and duty amount in the lot notes.
- Record component lot consumption in production: In the Manufacturing Order work order, when components are consumed, Odoo records which specific lots were used. This is the key step — it links imported component lots to specific finished bicycle MOs.
- Trace from export delivery to import lot: After a shipment is exported, go to Inventory → Traceability → select the finished bicycle product and the export delivery date range. Odoo's traceability report shows the chain: Export Delivery → Manufacturing Order → Component Lots → Purchase Receipts. From the Purchase Receipts, you have the import shipment details, the B/E numbers, and the duty paid amounts needed for the drawback claim.
- Generate drawback claim data: Export the traceability data to Excel. The drawback application to Bangladesh Customs requires: export invoice number + date, FOB value, imported component description + HS code + quantity + B/E number + duty paid. All of this is in Odoo's traceability data.
Bangladesh cycle export — specific considerations
- EPZ operations: Many large cycle exporters operate inside Bangladesh Export Processing Zones (EPZ). EPZ factories have different VAT and duty treatment — they operate under BEPZA rules with bonded warehouse status. In Odoo, configure EPZ facilities as separate warehouses with "bonded" stock locations. Transfers between bonded and non-bonded locations trigger duty events that need to be tracked. See the EPZ compliance guide for the full setup.
- EU GSP+ and EUSR requirements: Bangladesh benefits from EU GSP+ preferences for bicycle exports (reduced import duty in the EU). This requires a REX (Registered Exporter) statement of origin on the commercial invoice or a Form A certificate. The origin declaration language must appear on the export invoice — include it in your Odoo commercial invoice QWeb template as a fixed text block.
- Component quality and supplier management: Chinese components vary significantly in quality across suppliers and batches. In Odoo, use the Quality module to set up incoming quality checks (IQC) for high-value imported components — derailleurs, hubs, brakes. Failed IQC items are rejected at the receipt stage and returned to the supplier via a Return operation on the receipt. This keeps your inventory clean and prevents defective components from reaching production.
- Model changeover planning: European buyers issue seasonal orders with specific model changes (colour, component upgrades, geometry changes). Each model change requires a BOM revision in Odoo. Use Odoo's BOM versioning (create a new BOM version rather than modifying the existing one) so historical production orders retain their original BOM and do not pick up the new component specifications retroactively.
The two configurations that deliver the most value for a Bangladesh cycle exporter are: (1) multi-level BOM with sub-assemblies, so you have production planning and traceability at every level; and (2) lot tracking on all imported components, so you can generate the duty drawback claim with confidence. Both require upfront configuration discipline — but the return is measurable in both operational visibility and recovered duty. Need help setting up Odoo for your cycle factory? Get in touch →
Frequently asked questions
How to configure Odoo BOM for bicycle manufacturing in Bangladesh?
Use a multi-level BOM structure: the finished bicycle (Level 0) references sub-assemblies (Frame Assembly, Wheel Assembly, Drivetrain Assembly) as Level 1 BOMs. Set sub-assembly BOMs to type "Manufacture" if they are produced separately and inspected independently, or "Kit" if they are assembled inline with the finished bicycle. Imported components are set with their HS codes and lot tracking enabled. This gives you separate production orders per sub-assembly, full traceability from finished bike to imported component lot, and correct cost accounting at every BOM level.
How does Odoo handle imported components for cycle export in Bangladesh?
Imported components are received against Purchase Orders with HS codes recorded on the product. Enable lot tracking on all imported items — the lot number corresponds to your import shipment batch, and you record the Bill of Entry number in the lot notes. Landed costs (import duty, freight, clearing charges) are applied to receipts and distributed across components. When production consumes these lots, Odoo records the chain from finished bicycle → MO → component lots → import receipts — enabling the duty drawback traceability claim.
What HS codes apply to bicycle export from Bangladesh?
Finished bicycles export under HS 8712.00 (subcodes 8712.0010 children's, 8712.0020 mountain/road, 8712.0090 other). Key import component codes: frames/forks (8714.91), rims/spokes (8714.92), brakes (8714.94), saddles (8714.95), derailleurs/hubs/pedals (8714.99), tyres (4011.50), chains (7315.11). Enter HS codes in Odoo's product HS Code field — they appear on commercial invoices and packing lists for customs clearance at both import and export stages.
How do I track duty drawback for bicycle exports in Odoo?
Enable lot tracking on all imported components. Assign lot numbers that map to import shipment batches, and record the Bill of Entry number and duty amount in the lot notes. When production MOs consume these lots, Odoo records which import lots went into which bicycle MOs. After export, use Odoo's Traceability report (Inventory → Traceability) to trace from the export delivery back to the input component lots and their import receipts. This gives you the B/E numbers, duty amounts, and component HS codes needed for the Customs duty drawback application.