Customs declarations, duty and documents
Deep dive on declaration lines, HS codes, duty calculation, and per-country doc lists.
4 min readLast updated 13 Apr 2026
Deep-dive on the customs module's data model: declaration lines (the commodity-level detail), the duty calculator's logic, and how per-country document requirements drive the required-docs checklist on every declaration.
Declaration lines — what each one represents
A declaration has one line per HS code variation in the shipment. Most shipments have 1–3 lines; complex project cargo can have 20+.
Each line carries:
- HS Code — 6-digit minimum (international), often 8–12 digits for country-specific tariff classifications.
- HS Description — auto-filled from the HS catalog; editable for local-language clarification.
- Commodity Description — free text specific to the actual goods (what's in the box, not the HS category).
- Country of Origin — where the goods were made. Determines duty preferences under free-trade agreements.
- Quantity & Unit — units as defined by the HS code (kg for most; pieces / pairs / m² for others).
- Unit Value — per-unit invoice value.
- Total Value — auto Qty × Unit Value.
- CIF Value — Total Value + freight + insurance, adjusted for the declared incoterm (EXW → CIF adds freight + insurance; CIF → CIF is no-op).
- Duty Rate — pulled from the HS catalog for the destination country.
- Duty Amount — CIF × Duty Rate.
- VAT Rate — destination country's standard (5% UAE, 15% KSA, 18% India, etc.).
- VAT Amount — (CIF + Duty) × VAT Rate.
- Landed Cost — CIF + Duty + VAT.
The declaration's totals (total_cif_value, total_duty, total_vat, total_landed_cost) are the sum across all lines.
Incoterm handling
The incoterm on the booking determines the CIF adjustment:
- EXW / FCA / FOB — add freight + insurance to declared value to get CIF.
- CFR / CPT — add insurance only.
- CIF / CIP / DAP / DDP — no adjustment (value already includes relevant costs).
CargoSurge performs the right adjustment automatically — you don't recompute.
Duty calculator
Standalone Duty Calculator at Customs → Duty Calculator. Inputs:
- HS Code (autocomplete from the HS Code Validator).
- Goods value + currency.
- Incoterm.
- Destination country.
- Free Zone flag (exempts duty for free-zone destinations).
Outputs:
- CIF value (after incoterm adjustment).
- Incoterm factor applied.
- Duty rate (country + HS-specific).
- Duty amount.
- VAT rate + amount.
- Landed cost — the all-in number.
- Free-zone exemption flag + savings.
- Permit-required flag.
Use it at quote time to include accurate duties in your customer's pricing.
Document requirements (per-country)
Customs → Document Requirements shows a live list of required docs per destination country per declaration type (import / export):
- Universal: Commercial Invoice, Packing List, Bill of Lading / AWB.
- Origin-dependent: Certificate of Origin (required for FTA benefits, optional otherwise).
- Commodity-dependent: Halal Certificate (food to Muslim-majority destinations), Health Certificate (pharma / food), Phytosanitary (plants), MSDS (chemicals), Fumigation Certificate (wood packaging), COI (insurance), Export License (controlled goods).
- Country-specific: KSA requires SABER; UAE requires ECASS / ESMA; India requires LC / IEC; etc.
When you create a declaration, the platform pre-flags required docs based on destination + commodity. Missing required docs block the submitted → cleared transition.
Free zones & bonded status
Flagging the destination as Free Zone changes the calculation:
- Duty exempt as long as goods stay in the free zone.
- VAT deferred — payable only when goods leave the free zone for domestic circulation.
- Bonded movement — cargo can move between free zones under bond without triggering duty.
The platform flags free-zone vs bonded movement on the declaration header. Customs reviews the paperwork accordingly.
Permits
Some HS codes trigger a permit requirement:
- DG (IATA / IMDG) — class-specific permits.
- Restricted commodities — telecom equipment, defense items, encrypted devices, pharma.
- Quota goods — some textiles, steel.
- Dual-use — goods with potential military applications.
If a line's permit_required = true, the declaration is blocked at submitted until permit_reference is filled in. See Customs release blocked.
Common pitfalls
Was this article helpful?