dutiable.io/Docs

Docs / Guides / Bulk Classification

Bulk Classification

Upload a spreadsheet of products and get HS codes, duty rates, and confidence scores back in minutes.

How it works

1

Upload a CSV or paste data

Go to the Classify page and upload a CSV file, or paste rows directly. The system accepts any column order — it maps columns by name automatically.

2

Review the preflight check

Before submitting, you see a summary: how many rows were detected, which columns were mapped, and a warning if many rows have vague descriptions (short names without material or category context reduce accuracy).

3

AI classification runs

Each product is sent to the AI classifier. Results come back one batch at a time — you can watch the progress bar update live. Identical products use cached results to save credits.

4

Review and approve

Browse the results table. Each row shows the HS code, confidence score, and duty rates for EU, US, and UK. Rows needing review are highlighted. You can approve, manually edit, or re-classify individual rows.

5

Export

Download the full results as CSV to use in your ERP, customs software, or logistics platform.

CSV format

Dutiable accepts flexible CSV input. The only required column is a product name. All other columns improve classification accuracy but are optional.

Column name(s)RequiredDescription
productName, name, titlerequiredProduct name used for classification.
skuoptionalYour internal SKU. Used as the catalog key.
descriptionoptionalDetailed description. Improves accuracy significantly.
materialoptionalPrimary material (e.g. polycotton, ABS plastic).
categoryoptionalProduct category (e.g. electronics, apparel, toys).
originCountry, countryOfOriginoptionalCountry of manufacture. Used for Section 301 risk warnings.
weightoptionalProduct weight. Helps classify items where weight affects tariff heading.

Column names are case-insensitive and can use spaces, underscores, or camelCase. For example, Country Of Origin, countryOfOrigin, and country_of_origin all map to the same field.

Example CSV

csv
sku,productName,description,material,category,originCountry
SKU-001,Wireless BT Headphones,Over-ear ANC headphones 30hr battery,plastic/silicone,electronics,China
SKU-002,Cotton T-Shirt,Basic crew-neck tee,100% cotton,apparel,Bangladesh
SKU-003,Ceramic Coffee Mug,12oz dishwasher-safe mug,ceramic,homeware,Portugal
SKU-004,USB-C Cable 1m,,nylon braid + copper,,China

Improving accuracy

The AI classifier uses all available context to pick the most specific HS heading. Here is what makes the biggest difference:

Add material

High impact

Many classification decisions hinge entirely on material. A bag can be Chapter 42 (leather), 63 (textile), or 39 (plastic). Always include material.

Add a description

High impact

Short product names like "Cable" or "Widget" are ambiguous. A one-sentence description resolves most ambiguity at low cost.

Add category

Medium impact

Category narrows the search space before the AI starts. It also helps distinguish consumer from industrial goods.

Add origin country

Medium impact

Origin does not affect the HS code itself, but enables Section 301 and anti-dumping duty warnings for US-bound goods.

Vague description warning

If more than 30% of your rows have product names under 5 words and no description, material, or category, the preflight step shows a yellow warning. This does not block submission — it is a signal that the batch may have lower average confidence, and you may need to review more rows manually.

Credits

Each classified row costs 1 credit. Rows that return a cached result (same product classified recently) are free. The fromCache field in the results indicates whether a cached result was used.

Credits are deducted after the job completes, not when it is submitted. If a row fails to classify, it does not consume a credit.