Every product crossing Bangladesh's border needs an HS code — and the wrong HS code is one of the most common causes of customs delays, additional duty assessments, and failed bonded warehouse reconciliations I've seen at export factories. Customs officers at Chittagong Port will hold a shipment if the HS code on the export declaration doesn't match the product's physical description.
Odoo is the place to enforce correct HS code discipline. When the code lives on the product record, it flows into every sales order, delivery, commercial invoice, and packing list — automatically. This guide covers the full setup for Bangladesh exporters.
Wrong HS codes don't just cause customs delays. They create duty liability that auditors can recover years later.
The HS code system in Bangladesh
The Harmonized System (HS) is an international standard for classifying traded goods. Bangladesh uses 8-digit HS codes — the standard international 6-digit HS code plus 2 country-specific digits defined by Bangladesh Customs.
The first 6 digits (61.09.10) are international and consistent across all WCO member countries. The last 2 digits (10 in this example) are Bangladesh-specific and determined by the Bangladesh Customs Tariff Schedule, published by NBR. Always use the 8-digit code for Bangladesh — a 6-digit HS code from an international source may not match exactly in the Bangladesh Tariff.
The Bangladesh Customs Tariff is available on the NBR website and is updated periodically. Confirm the current 8-digit code with your C&F (Clearing and Forwarding) agent before entering it in Odoo — they deal with customs daily and know the practical classification for your specific products.
Common HS codes for Bangladesh export industries
| HS Code (8-digit) | Product description | Industry |
|---|---|---|
| 6109.10.10 | T-shirts, singlets and other vests of cotton, knitted — the most exported Bangladesh product | RMG / Knitwear |
| 6203.42.10 | Men's or boys' trousers of cotton, woven — denim and woven bottom wear | RMG / Woven |
| 6204.62.10 | Women's or girls' trousers of cotton, woven — ladies bottomwear | RMG / Woven |
| 8712.00.10 | Bicycles (not motorised) — complete bicycle export | Cycle Export |
| 8714.99.90 | Parts and accessories for bicycles — cycle components and parts | Cycle Export |
| 5209.41.00 | Denim woven fabric of cotton (≥85%, >200g/m²) — grey or dyed denim fabric | Textile |
| 5205.11.00 | Cotton yarn (single, uncombed, ≥85% cotton) — spinning mill output | Spinning |
| 5208.21.00 | Plain woven cotton fabric (≥85%, ≤100g/m²) — voile, poplin | Weaving |
| 2933.59.00 | Pharmaceutical compounds (heterocyclic) — API or finished medicines | Pharma |
| 6116.10.10 | Knitted gloves, mittens and mitts of cotton — work gloves export | Accessories |
The HS codes above are illustrative. Bangladesh Customs tariff headings and subheadings are revised periodically. Always confirm the exact 8-digit code for your specific product with your C&F agent or the current NBR tariff schedule. Misclassification — even unintentional — can result in duty reassessment, penalties, and shipment holds.
Setting HS codes on Odoo products
First, enable the HS code field in Odoo: Settings → Inventory → Customs → tick "Customs". This adds the HS Code field to all product records.
Then, for each exported product: Inventory → Products → [select product] → General Information tab → HS Code field. Enter the full 8-digit Bangladesh HS code (e.g., 6109101000 — some systems prefer no dots, others use dots. Odoo accepts both formats).
Key points for HS code data management in Odoo:
- Set on the product, not the product variant — for RMG with colour/size variants, the HS code is usually the same across all variants of the same style. Set it once on the product template.
- Use product categories for HS grouping — create product categories aligned with HS chapters (e.g., "Knitwear — Chapter 61"). This makes bulk HS code assignment easier and supports reporting by HS chapter.
- Audit HS codes quarterly — when you add new products or styles, the HS code must be set before the first shipment. Build a product creation checklist that includes HS code sign-off by your C&F agent.
- Country of Origin — also set this field on the product (same location). For Bangladesh exports under BGMEA certification, this is always "Bangladesh" — required for EU GSP and US duty preference applications.
Fiscal positions for customs duty on imports
Bangladesh imports attract customs duty at rates defined by the HS code. When you import raw materials (yarn, fabric, accessories, bicycle parts), the landed cost in Odoo should reflect the actual import cost including customs duty. There are two main scenarios:
| Import type | Customs duty treatment | Odoo approach |
|---|---|---|
| General import (non-bonded) | Full customs duty, VAT, and advance income tax (AIT) payable at time of import | Use Landed Costs to add customs duty, VAT, and AIT to the product cost. These are posted to inventory valuation via the landed costs feature. |
| Bonded warehouse / EPZ import | Duty-free import of raw materials for 100% export production. Duty is suspended, not exempted — must be consumed in production and export evidenced. | Create a fiscal position "Bonded Import — Duty Suspended". Map import duties to a Duty Suspended liability account instead of expensing. Clear it when export proof is submitted. |
| SRO/duty concession import | Reduced duty rate under a Statutory Regulatory Order (SRO) for specific industries or products | Create a specific purchase tax at the concessionary rate and assign a fiscal position to the relevant vendor type. Document the SRO number for audit reference. |
Fiscal positions for customs duty work alongside your NBR VAT configuration. If you haven't set up tax groups and output/input VAT accounts yet, read the NBR VAT compliance guide for Odoo first — the fiscal position framework there applies equally to customs duty mapping.
Export documents generated from Odoo
When a Sales Order is confirmed and goods are shipped, Odoo generates the core export documents. Each one relies on correct product data — especially HS codes — to be usable by your C&F agent.
The quality of your Odoo product data directly determines the quality of your export documents. A product with missing weight means a blank packing list. A missing HS code means the C&F agent has to call your factory every shipment. Build a product data quality standard and enforce it before the first shipment — not after.
Handling import duty on raw materials in Odoo
When you import yarn, fabric, accessories, or components, the actual cost to your business includes the CIF value plus import duties, supplementary duty (SD), regulatory duty (RD), VAT, advance income tax (AIT), and C&F charges. Odoo's Landed Costs feature handles this.
Go to Inventory → Operations → Landed Costs → New:
- Link the purchase receipt — select the incoming shipment that received the imported goods
- Add cost lines — one line per import charge type:
- Customs Duty (by product value — split method: "By Current Cost")
- Supplementary Duty (if applicable)
- VAT on Import (note: this may be claimable as input VAT — check with your tax advisor)
- AIT — Advance Income Tax (a deductible tax credit, posted separately)
- C&F Charges (freight, handling, agency fees)
- Validate — Odoo calculates the additional cost per product unit and adds it to the inventory valuation. Your raw material cost now reflects the true landed cost.
Accurate landed costs feed into product cost reporting which ultimately informs your export pricing. When I set up the Odoo Sales & CRM for Bangladesh exporters, the starting point is always: are your product costs accurate? If raw material landed costs are wrong, your margin analysis on Sales Orders is meaningless. HS code accuracy and landed costs are foundational to any Bangladesh export business running on Odoo.
For bonded warehouse factories (EPZ or bonded under BGMEA), the duty treatment is different — covered in detail in the EPZ & SEZ compliance guide for Odoo. The short version: import duty is suspended (not paid), tracked as a liability, and extinguished when you provide proof of export within the bonded quota period.
Frequently asked questions
Where do I enter HS codes for products in Odoo?
Go to Settings → Inventory → enable "Customs". Then open any product record: Inventory → Products → [product] → General Information tab → HS Code field. Enter the full 8-digit Bangladesh HS code. Once set, the code is available on delivery orders, customs reports, and can be added to your commercial invoice PDF template. Set HS codes before the first shipment of any product — changing them retroactively doesn't update historical documents.
What HS codes do Bangladesh garment exporters use?
RMG exports primarily fall under Chapter 61 (knitted garments — T-shirts, polo shirts, sweatshirts, sportswear) and Chapter 62 (woven garments — trousers, shirts, jackets). The specific 8-digit code depends on the material (cotton, synthetic, blended), construction (knitted vs woven), and gender category. Always confirm with your C&F agent — they can check the current Bangladesh tariff classification and advise on the correct code for each style.
Does Odoo automatically generate a Bangladesh customs export declaration?
No. Bangladesh customs export declarations (Bill of Export) are filed by the C&F agent through ASYCUDA++ or the NBR electronic system — not through Odoo. Odoo generates the commercial invoice, packing list, and delivery documentation that the C&F agent uses as source documents for the customs filing. Ensure your Odoo commercial invoice prints clearly with product description, HS code, quantity, unit price, and Incoterm — these are the fields the C&F agent needs.
How does Odoo handle customs duty on imported raw materials?
Use the Landed Costs feature (Inventory → Operations → Landed Costs). Link the import receipt and add cost lines for each import charge: customs duty, supplementary duty, VAT on import, AIT, and C&F fees. Odoo distributes these costs across the imported products and adds them to inventory valuation. This gives you an accurate landed cost per unit, which flows into your cost of goods sold and margin analysis on export sales orders.