FOR CUSTOMS & TRADE

Classify a product with the missing questions and the evidence.

A product title is rarely enough to classify, and a code without proof gets rejected by the forwarder. The Customs Classification API asks for the facts that decide the code, returns the line for your destination and date, quotes the notes behind it, and keeps a dossier. One product or a whole catalog.

The pain first

What brokers and merchants tell us

“Most commercial invoices I’ve seen in my career are not descriptive enough on their own for classification” (thread)

“i sell over 10k products and now EU want me to fill all tariff/HS code in all products” (thread)

From a product title to codes in your catalog

  1. Facts

    Send the description, the destination and the facts you know. When a fact decides the code, the answer is needs_information with the questions to ask your supplier, not a guess. How

  2. Evidence

    Each candidate quotes the HS notes and EU classification regulations behind it, verbatim, with a reference, a link and the source version. How

  3. Dossier

    Keep the classification as a dossier, JSON or PDF, that you can hand to your forwarder or a licensed broker. How

  4. Review

    A named reviewer approves, rejects or requests changes. An approved code is locked until someone requests changes, and every decision stays in the history and the dossier. How

  5. Batch

    Classify a catalog of up to 2,000 items in one request, follow it by job id or webhook, and download the answers as CSV. How

  6. Write-back

    Put the approved codes back into Shopify, or into Odoo, SAP GTS and WooCommerce through CSV profiles. Shipped in @cleo-legal/sdk 0.9.0 as npx @cleo-legal/sdk connectors … (installable from the GitHub release; npm registry publication pending). How

Coverage, measured on 25 September 2026 with GET /v2/customs/coverage/countries: 249 territories, 112 of them at the national tariff line and 137 at HS6 only, across 26 tariff systems. Per-country detail.

Three ways in

Try it without an account

The playground classifies a product with the shared demo: 30 calls a day, no account.

Try it

Sandbox, no card

Create an account and a key: 200 units to wire a real integration. One classification costs 1 unit plus 1 per kit component.

Get a Sandbox key

Buy a plan

Starter: 100,000 units a month. Pro: 1,000,000 units a month. One click to checkout.

Buy Starter

Pro: buy Pro · Compare plans on pricing.

Customs Intelligence

Built for cross-border trade.

Classify products, detect dual-use risks, and split obligations by client type. Classification covers 249 territories, 112 of them at the national tariff line, across 26 tariff systems (measured on 25 September 2026 with GET /v2/customs/coverage/countries).

POST /v2/customs/classifications

Classification with evidence

Send a product, its destination and the facts you know. Get candidate codes for that tariff with the verbatim notes behind each one, or the questions to ask when a fact is missing.

GET /v2/customs/dual-use-check

Dual-Use Detection

Wassenaar and EU 2021/821 cross-check for a description or a code and a destination, before the shipment is blocked.

GET /v2/customs/obligations

Project Context

Government vs private buyer? GOST mandatory vs contractually expected? We split the obligations for you across 8 buyer contexts.

One call, full pack

POST /v2/compliance/check

Classify the product, list obligations split by buyer context, cross-check dual-use, surface defensible alternatives and check EAEU parallel-import recognition — in one round-trip.

  • 5 units per call — Pro includes 1,000,000 units a month.
  • Always returns advisory_disclaimer — surface it verbatim to your end user.
  • Wired as a single MCP tool call — install once in Claude Desktop or Claude Code.
curl -X POST \
  -H "Authorization: Bearer ld_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "product": {
      "description": "Pompe centrifuge pour pétrole brut",
      "lang": "fr"
    },
    "origin_country": "FR",
    "destination_country": "KZ",
    "client_type": "government",
    "options": {
      "include_alternatives": true,
      "include_dual_use_check": true,
      "include_parallel_import": true
    }
  }' \
  "https://api.legaldata.cleolabs.co/v2/compliance/check"
FAQ

What trade teams ask.

Which countries answer at the national tariff line?

On 25 September 2026, 112 of 249 territories answered at the national line (EU cn8, US hts, UK, EAEU TN VED and others) and 137 at HS6 only. GET /v2/customs/coverage/countries answers for any country; the customs guide lists them.

Is the answer a binding classification?

No. Every classification is advisory and carries advisory_disclaimer. The dossier is built to be reviewed by a licensed broker or the competent authority; for US entries, CBP ruling H350722 treats deriving HTS subheadings beyond six digits as customs business.

What does the dual-use check cover?

Wassenaar and EU 2021/821. Every result carries advisory_disclaimer: an export licence decision stays with the competent authority.