Technical Lab · 0019

HS code & customs management in Odoo — the Bangladesh exporter's configuration guide.

How to classify products with the correct 8-digit Bangladesh HS codes in Odoo, map fiscal positions for duty-free and zero-VAT treatment, generate export documents that your C&F agent can actually use, and handle customs duty on imported raw materials. Built from RMG, cycle export, and textile deployments.

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.

61
Chapter
Broad product category (e.g., knit garments)
09
Heading
Product group within chapter (e.g., T-shirts)
10
Subheading
Material or construction (e.g., of cotton)
10
BD digits
Bangladesh-specific further split

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 descriptionIndustry
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
Important

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.

Note · Knitwear exporter, new style introductionCustoms hold at Chittagong
A factory had added a new garment style to Odoo by duplicating an existing product record — and the duplicate carried over the original style's HS code. The two garments were classified under different subheadings. The export declaration the C&F agent filed used the inherited code; customs flagged the mismatch between the declared code and the physical goods, and the container sat at port for two days while the declaration was amended. The cost was not the duty — it was the demurrage and the delayed vessel. The fix was a product-creation rule: no exported product is marked sellable in Odoo until its HS code has a sign-off note in the chatter from the C&F agent. Duplicating a product record never carries a verified code — it carries a guess.

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:

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 typeCustoms duty treatmentOdoo 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.
Linked reading

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.

From Odoo
Commercial Invoice
Sales → Orders → Invoice. Shows buyer, seller, products, quantities, unit price, total value, currency, Incoterm. HS code prints if added to the invoice template.
From Odoo
Packing List
Delivery Order → Print. Shows carton count, gross/net weight, dimensions. Requires product weight to be set on each product record (kg).
From Odoo
Delivery Order
Inventory → Delivery Orders. Contains all lot/serial numbers, quantities shipped. Used for garment shipment count verification.
External (C&F agent)
Bill of Export
Filed in NBR ASYCUDA++ by your C&F agent. Uses HS codes, values, and quantities from Odoo commercial invoice.
External (C&F agent)
Export General Manifest
Submitted to Bangladesh Customs upon vessel loading. References the Bill of Export. Not generated by Odoo.
External (BGMEA/EPB)
Certificate of Origin
Issued by BGMEA (garments) or EPB. Required for GSP preferential duty access to EU, UK, Canada. Data sourced from Odoo invoice.

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:

  1. Link the purchase receipt — select the incoming shipment that received the imported goods
  2. 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)
  3. 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.
Sales CRM connection

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.