# The right HS code for every product, in every country

> Classify products to the HS, HTS, CN, TARIC or UK code the destination expects, from a description, a product page URL or a photo, with reasoning, alternatives and confidence.

Source: https://border.bot/classify
Last updated: 2026-10-21

Describe the product, paste its product page or send a picture. Classify returns the code the destination country expects, the official description at each level of the code, a confidence score, its reasoning and the closest alternatives.

[Try the free classifier](https://border.bot/tools/hs-code-classifier) · [Read the API guide](https://border.bot/developers)

Reviewed by the border.bot editorial team on 2026-10-21 ([editorial policy](https://border.bot/about/editorial)).

## How Classify works

### 1. Start with what you have

A short description is enough. Paste a product URL and Classify reads the title, brand, materials and price from the page, and looks for [where the item was made](https://border.bot/tools/country-of-origin-finder). Send a photo (a public link or an upload up to 6 MB) and it reads material and construction from the image.

**Read from the product page**

| Field | Value |
| --- | --- |
| URL | https://shop.example/products/heavyweight-tee |
| Title | Heavyweight crew-neck T-shirt |
| Material | 100% cotton jersey knit |
| Price | $24.00 |
| Made in | Vietnam, from “Made in Vietnam” on the product page |

### 2. Narrowed one level at a time

The product is matched against the destination’s own tariff: [chapter, then heading, then subheading](https://border.bot/hs-codes), then the national line. You get the official description at every level, so you can see where the code was decided.

**US HTS code, 10 digits:** `6109.10.00.12` (high confidence)

| Level | Description |
| --- | --- |
| 61 | Articles of apparel and clothing accessories, knitted or crocheted |
| 6109 | T-shirts, singlets, tank tops and similar garments, knitted or crocheted |
| 6109.10 | Of cotton |
| 6109.10.00.12 | The 10-digit US statistical line the shipment is declared under |

### 3. It shows its working

Each answer comes with the reasoning behind it, ranked alternatives for details the description left out, and for US codes the [CBP rulings](https://border.bot/glossary#binding-ruling) it leaned on. Answers that need a person are flagged with needsReview, so you can clear the obvious ones and check the rest.

**Reasoning and alternatives**

| Item | Detail | Value |
| --- | --- | --- |
| 6109.10 | T-shirts, knitted, of cotton | Chosen |
| 6109.90 | If the main fibre is synthetic | Alternative |
| 6105.10 | If it has a collar and buttons | Alternative |

A T-shirt knitted from cotton jersey falls in chapter 61 (knitted apparel), heading 6109 (T-shirts and singlets) and subheading 6109.10 because cotton is the main material.

### 4. The rules travel with the code

Every code and every alternative carries the destination’s [import restrictions](https://border.bot/restrict) for that line, such as the US partner government agency flags. You see that a product needs FDA entry data before you list it, not when it is held at the border.

**Part of the response**

```json
{
  "hsCode": "6109100012",
  "hsCodeFormatted": "6109.10.00.12",
  "nomenclature": "us",
  "confidence": "high",
  "needsReview": false,
  "alternatives": [
    { "hsCode": "…", "restrictions": [] }
  ],
  "restrictions": []
}
```

Illustrative response, shortened.

## A wrong code costs more than the duty

The tariff code decides the duty you charge, the paperwork the parcel needs and whether customs lets it through. Get it wrong and you pay for it later: parcels held for review, duty under-collected at checkout, penalties after an audit.

### Parcels that clear the first time

Customs holds shipments when the declared code doesn’t match the goods. Classify picks the code from what the product is made of and what it’s for, the facts an officer checks, and records why.

### Duty charged correctly at checkout

The [duty rate](https://border.bot/calculate) follows the code. The right national line means the price your customer sees covers what the border will ask for, with nothing taken out of your margin later.

### A whole catalogue, not one SKU at a time

Classify thousands of products from the titles and URLs you already have, in bulk runs of up to 10,000, and send new products through the API as they are listed.

### An answer you can defend

Every code comes with its reasoning, the alternatives it ruled out and, for the US, the CBP rulings it relied on. When a broker or an auditor asks why, the answer is already on file.

## One product, the code each country expects

Customs in each country reads its own schedule. Classify answers in the destination’s nomenclature and length, and falls back to the 6-digit HS code where there is no national schedule yet.

|  | Value | Detail |
| --- | --- | --- |
| United States | 10 digits | Harmonized Tariff Schedule |
| United Kingdom | 10 digits | UK Global Tariff |
| Germany | 8 or 10 digits | EU CN and TARIC |
| France | 8 or 10 digits | EU CN and TARIC |
| Canada | 10 digits | Customs Tariff |
| Ireland | 8 or 10 digits | EU CN and TARIC |
| Netherlands | 8 or 10 digits | EU CN and TARIC |
| Japan | 6 digits | Harmonized System |
| Australia | 6 digits | Harmonized System |

Source: [WCO: what the Harmonized System is](https://www.wcoomd.org/en/topics/nomenclature/overview/what-is-the-harmonized-system.aspx)

## Who uses Classify

### Online stores

Classify the catalogue before opening a new market, so every product has the code that country expects and checkout can [charge the right duty](https://border.bot/calculate) from the first order.

### Marketplaces

Classify each seller’s listing from its URL or photo when it goes live, instead of trusting a code typed into a form or leaving the field empty.

### Carriers, posts and 3PLs

Fill in missing or invalid codes on manifests before the electronic declaration is filed. Safety filings such as the EU’s ICS2 need at least a 6-digit HS code for each item.

### Developers and AI agents

Call one endpoint from your stack, or connect the [MCP server](https://border.bot/mcp) and let Claude, ChatGPT or your own agent classify products as part of a larger job.

## How HS classification works

### One system, national extensions

The [Harmonized System](https://border.bot/glossary#hs-code) is maintained by the World Customs Organization and used by more than 200 countries and economies. It sorts every physical product into 21 sections and 97 chapters, then into headings (4 digits) and subheadings (6 digits). Those first six digits mean the same thing everywhere.

Countries then add their own digits for duty rates and statistics. The US [Harmonized Tariff Schedule](https://border.bot/glossary#hts-code) runs to 10 digits, the EU’s [Combined Nomenclature](https://border.bot/glossary#cn-code) to 8 and [TARIC](https://border.bot/glossary#taric) to 10, the UK and Canada to 10. A code that is right in one country can be incomplete or wrong in another, which is why Classify always asks for the destination.

### The rules customs uses

Classification follows the [General Rules of Interpretation](https://border.bot/glossary#gri). The first rule says the wording of the headings and the section and chapter notes decide; titles are only a guide. When a product could fit more than one heading, later rules choose the most specific description, then the material or component that gives the product its essential character.

That is why material, construction and use matter more than the product’s name. A [“T-shirt” knitted from cotton](https://border.bot/hs-codes/6109) and one woven from polyester fall in different chapters. Classify reads those facts from the description, the product page or the photo, and says which ones it relied on.

### What makes a code wrong

Most errors come from thin descriptions: a brand name with no material, a marketing title with no use, a set of different items treated as one. Others come from out-of-date codes, because national schedules change several times a year and the HS itself is revised about every five years.

A wrong code can mean the wrong duty, missing paperwork for a regulated product, a held shipment or a penalty after an audit. When a result is uncertain, Classify sets needsReview and lists the alternatives with what would change the answer, so a person can decide with the facts in front of them.

### When to get a binding ruling

For high-volume, high-value or regulated products, ask customs for a [binding ruling](https://border.bot/glossary#binding-ruling): a CBP ruling in the US, an Advance Tariff Ruling in the UK or a Binding Tariff Information decision in the EU. A ruling fixes the code for that product, and Classify’s reasoning and alternatives give you the draft for the application.

## Three ways to classify a catalogue

|  | Manual lookup | Customs broker | border.bot Classify |
| --- | --- | --- | --- |
| Time per product | Minutes to hours of tariff reading | Days, in batches | Seconds, as products are listed |
| National codes | One country at a time | Usually the broker’s own country | The destination’s schedule, or HS 6 elsewhere |
| Reasoning on file | Whatever notes you keep | On request | With every result, plus alternatives and rulings |
| Works from a URL or photo | No | No | Yes |
| In your systems | Copy and paste | Email or spreadsheet | API, bulk CSV, MCP |

## What you send, what you get back

**Request**

| Field | Example |
| --- | --- |
| Description | Heavyweight crew-neck T-shirt, 100% cotton jersey |
| Product page | shop.example/products/heavyweight-tee |
| Photo | tee-front.jpg |
| Destination | United States |
| Origin | Vietnam |

**Result**

| Field | Example |
| --- | --- |
| HTS code | 6109.10.00.12 |
| Levels | 61 › 6109 › 6109.10 › 6109.10.00.12 |
| Confidence | High |
| Alternatives | 6109.90 if synthetic, 6105.10 if collared |
| Restrictions | None for this line |

Illustrative example.

|  |  |
| --- | --- |
| Input | A description, a product page URL or an image, with the destination country. Optional: origin, title, brand, SKU, price and a code you already use as a hint. |
| Output | The code and its formatted form, the nomenclature, the description at each level, supplementary units, confidence, reasoning, a customs description, ranked alternatives, precedent rulings, web sources and the destination’s restrictions. |
| Code systems | US HTS (10 digits), UK Global Tariff (10), EU CN and TARIC (8 or 10), Canada’s Customs Tariff (10), and the 6-digit HS code for other countries. |
| Modes | Mini searches the tariff and reranks without a language model. Pro, the default, reads images, searches with rulings and identifies brand-only listings on the web. Max has an agent walk the tariff tree and read the rulings. |
| Volume | Up to 25 products per request, or bulk runs of up to 10,000 with a CSV export. |
| Corrections | Send feedback on a result, and keep a list of codes your workspace never wants returned. |
| Agency codes | For the US, the FDA import product code for the item, from the same description. |

## With or without code

Run single checks and CSV uploads in the dashboard, call the REST API, or connect the MCP server to an AI assistant. All three use the same engine and save every result in the workspace.

| Method | Path | What it does |
| --- | --- | --- |
| POST | `/v1/classify` | Classify one product |
| POST | `/v1/classify/batch` | Classify up to 25 products |
| POST | `/v1/classify/feedback` | Correct a result |
| POST | `/v1/classify/regulator` | Agency product code |

Example request body for `POST https://api.border.bot/v1/classify` (Bearer token from `/oauth2/token`):

```json
{
  "description": "Heavyweight crew-neck T-shirt, 100% cotton jersey",
  "destinationCountry": "US",
  "originCountry": "VN"
}
```

MCP tools at `https://mcp.border.bot/mcp`: `classify_product`, `classify_products`, `find_agency_product_code`. [Developer quickstart](https://border.bot/developers) · [Connect the MCP server](https://border.bot/mcp) · [API reference](https://border.bot/docs/api)

## Questions about Classify

### What do I need to send to classify a product?

A description and the destination country. A product page URL or a photo works instead of a description. Material, what the product is for and who it is for change codes most often, so include them when you have them.

### Which tariff codes does Classify return?

The 10-digit [HTS code](https://border.bot/glossary#hts-code) for the United States, 10-digit [commodity codes](https://border.bot/glossary#commodity-code) for the United Kingdom and Canada, [CN](https://border.bot/glossary#cn-code) and [TARIC](https://border.bot/glossary#taric) codes for the European Union, and the 6-digit HS code for other countries.

### How do I know when to check a result?

Every result has a confidence level, and results that need a person are flagged with needsReview. For high-value or regulated goods, have a licensed customs broker confirm the code or ask customs for a [binding ruling](https://border.bot/glossary#binding-ruling).

### Can it classify a listing that only gives a brand and model?

Yes. When a listing names a brand and model but not what the item is made of, Pro and Max look the product up on the web and list the pages they used in webSources.

### Is a code from Classify legally binding?

No. The importer is responsible for the code declared. Only customs can issue a binding ruling, such as a CBP ruling in the US or an Advance Tariff Ruling in the UK.

### How many digits should an HS code have?

The internationally shared HS code has 6 digits. Declarations need the destination’s full code: 10 digits for the US, the UK and Canada, and 8 (CN) or 10 (TARIC) for the EU. Classify returns the length the destination expects.

### Can Classify check codes I already use?

Yes. Send your existing code as a hint with the description, then compare it with the code Classify returns and its reasoning. Where they differ, the reasoning and alternatives show which one holds up.

### Does it work in other languages?

Yes. Descriptions and product pages in other languages are read and classified, and results include an English description alongside the official one.

### How do I classify a whole catalogue?

Upload a CSV in the dashboard or start a bulk run through the API, up to 10,000 products at a time, and download the results as CSV. New products can then be classified one by one as they are added.

### Can AI assistants use Classify?

Yes. Connect the border.bot [MCP server](https://border.bot/mcp) to Claude, ChatGPT, Cursor or another MCP client and the assistant can classify products, check origin and work out landed cost in the same conversation.

## Further reading

- [What is an HS code, and how do you find yours?](https://border.bot/blog/what-is-an-hs-code)
- [HS vs HTS vs CN/TARIC: the digits explained](https://border.bot/blog/hs-hts-cn-taric-commodity-codes)
- [Classify products from Claude and ChatGPT](https://border.bot/blog/classify-products-with-mcp)
- [Browse HS codes](https://border.bot/hs-codes)
- [Free HS code classifier](https://border.bot/tools/hs-code-classifier)

## Sources

- [USITC Harmonized Tariff Schedule](https://hts.usitc.gov/)
- [UK Trade Tariff](https://www.trade-tariff.service.gov.uk/)
- [EU TARIC](https://ec.europa.eu/taxation_customs/dds2/taric/taric_consultation.jsp)
- [CBSA Customs Tariff](https://www.cbsa-asfc.gc.ca/trade-commerce/tariff-tarif/menu-eng.html)
- [CBP rulings (CROSS)](https://rulings.cbp.gov/)

Examples are illustrative unless a source is named. Rules and rates change, so run a check for a current answer.

## Also in border.bot

- [Calculate](https://border.bot/calculate): Duty, import tax and fees, line by line, before the parcel ships.
- [Screen](https://border.bot/screen): Check a person or company against sanctions and denied-party lists.
- [Restrict](https://border.bot/restrict): Goods a country prohibits or restricts, and which agency reviews them.
- [Comply](https://border.bot/comply): What each agency needs at the border: the certificate and its citations, or the right disclaim.
