Tax Compliance & Duty Estimation
How CargoLint automatically calculates customs duties and import taxes on your documents.
When you upload a customs document, CargoLint doesn’t just extract data - it estimates the tax liability associated with the shipment. Duties, import VAT, and GST are calculated automatically based on the goods, their HS codes, and the destination country.
What gets calculated
CargoLint runs three tax-related checks on every document that contains the necessary fields (line items, HS codes, origin and destination countries, and an incoterm).
Per-line-item customs duties. Each line item with an HS code is matched against the relevant duty rate for the destination country. Rates are stored at the HS-2 chapter level and sourced from EU TARIC, US HTS, and China Customs schedules. For destinations outside these three, CargoLint averages the available MFN (Most Favored Nation) rates as a reasonable estimate.
Import VAT or GST. After duties are calculated, CargoLint applies the destination country’s standard VAT or GST rate to the combined value of goods plus duties. This reflects how import taxes are actually assessed - on the CIF value plus duty, not on the goods alone.
Incoterm-based responsibility. The incoterm on your document determines who is responsible for taxes. For DDP (Delivered Duty Paid) shipments, the seller must include duties and taxes - if they’re missing from the invoice, CargoLint flags this as an error and shows the estimated liability. For all other incoterms (EXW, FOB, CIF, etc.), the buyer is responsible, so CargoLint treats the presence of taxes on the invoice as unusual and flags it as informational.
How duties are calculated
The formula for each line item is straightforward:
Line item duty = Item value × Duty rate for HS chapter in destination country
For example, an item classified under HS chapter 84 (machinery) shipped to Germany carries a 2.0% EU duty rate. On a $500 item, that’s $10.00 in duty.
Total duty is the sum across all line items. Items without HS codes are flagged separately - their duty cannot be estimated.
How import VAT is calculated
Import VAT is calculated on the full landed cost, not just the goods value:
Import VAT = (Goods value + Total duties) × Destination country VAT rate
Continuing the example: $800 in goods plus $19.00 in total duty gives a taxable base of $819.00. Germany’s standard VAT rate (Umsatzsteuer) is 19%, so import VAT = $155.61.
Tip: Some countries apply reduced VAT rates to specific goods categories (food, medicine, books, children’s items). CargoLint uses the standard rate as a baseline and allows a 15% tolerance when validating existing tax amounts on invoices.
Country coverage
CargoLint maintains VAT and GST rates for 78 countries, including all 27 EU member states, the UK, US, Canada, Mexico, China, Japan, Australia, Brazil, India, and key markets across the Middle East, Africa, and Southeast Asia.
Each country record includes the standard rate, the local tax name (e.g., MwSt in Germany, IVA in Mexico, GST in Australia), and notes on special cases like subnational taxes.
EU intra-community trade is handled as a special case - shipments between EU member states carry 0% customs duty, since goods move freely within the single market.
Duty rate sources
Duty rates are stored per HS chapter (the first two digits of the HS code) for three major customs territories: EU, US, and China. These rates are MFN averages sourced from the World Bank WITS database and the respective customs authorities.
Rate selection follows this logic: if the destination is an EU member state, EU rates apply; if US, US rates apply; if China, Chinese rates apply. For all other destinations, CargoLint averages the three available rates.
Important: These are estimates based on HS-2 chapter averages. Actual duty rates vary by the full 6-10 digit HS code and may be affected by trade agreements, preferential tariffs, anti-dumping duties, or quota restrictions. Always confirm final rates with the destination country’s customs authority for binding classifications.
What you see in the app
Tax compliance results appear in the Document Issues panel alongside other compliance checks. When a tax issue is found, you’ll see:
- Severity level - Error (red) for critical issues like missing taxes on a DDP shipment, Warning (yellow) for domestic VAT discrepancies, or Info (blue) for advisory notices.
- A plain-language message explaining what was found and why it matters.
- A detailed breakdown showing the per-line-item duty calculation, the import VAT computation, and the estimated total tax liability.
For example, on a DDP shipment to Germany with no taxes on the invoice, you’d see an error like:
DDP shipment to Germany - import duties and taxes should be included on this invoice but no tax amount was found.
Customs duty: Electronics (HS 84) 2.0% on $500 = $10.00, Cables (HS 85) 3.0% on $300 = $9.00. Total duty ≈ $19.00. Import VAT (DE): 19% on $819.00 ≈ $155.61. Estimated total tax liability: ≈ $174.61.
Domestic transactions
For domestic invoices (origin and destination in the same country), CargoLint checks whether VAT or GST is present and reasonable. If no tax is found, it flags a warning with the expected amount. If tax is found but doesn’t match the standard rate (within a 15% tolerance for reduced-rate goods), it flags the discrepancy and shows the effective rate versus the standard rate.
Keeping rates current
Tax rates are updated from two sources: EU VAT rates from the European Commission’s TEDB database (via the VATcomply API), and HS duty rates from the World Bank WITS API. Both are free, publicly available datasets. Rate files include metadata with the last update date and next scheduled review.
What’s next
- How confidence scoring works - understand how extraction certainty interacts with compliance checks
- Reviewing documents - how to handle flagged tax issues during review
- HS code classification - how HS codes are matched and why they matter for duty calculation