Skip to content

For Shopify merchants shipping into the US

De minimis is gone. Your checkout may be undercharging duties.

Every order entering the US now clears customs against a 10-digit HTS code. If that code is wrong or missing, you eat the difference. DutyLookout classifies your catalog, prices the full duty stack, and watches the tariff schedule so you don’t have to.

Codes picked from the published tariff, never generatedNo AI anywhere in the duty mathRate monitoring included, not an add-on

Harmonized Tariff Schedule — excerptRates of duty · Col. 1 General
SubheadingArticle descriptionGeneral
3926.90.99Other articles of plastics, other5.3%
4202.92.31Travel and sports bags, outer surface of man-made fibers17.6%
6505.00.60Hats and headgear, knitted, of man-made fibers20¢/kg + 7%
9503.00.00Toys, scale models and similar recreational articlesFree
Rate watch: 14 of your products sit under 6505.00.60 — you hear from us the day a duty rate on this line moves.
Illustrative excerpt. DutyLookout reads products only — never orders or customers. In-app estimates cite the exact rate snapshot they were computed from. Estimate — not legal or customs advice.

What DutyLookout does

Three jobs. Done properly.

Classification runs in two passes and is always reviewable — the second pass is explained in full below. Duty math is pure arithmetic against a versioned rate database — no AI anywhere near your numbers. Monitoring runs every day against official sources and is part of the product, not an add-on.

Classify

Correct HTS codes for your whole catalog

Every product gets a suggested 10-digit US HTS code with a confidence score and a one-line, plain-English reason. Approve, edit, or bulk-approve — approved codes are written straight to Shopify, where checkout, labels, and carriers pick them up.

Codes validated against the current HTS revision before any write-back.
Cost

The full duty stack, not a guess

Base MFN rate, Section 301 and 232 surcharges, postal rules, and processing fees — computed per product and origin country from our versioned, internally maintained rate database. Every estimate names the rate snapshot it came from.

No LLM is involved in rate math. Ever.
Watch

Daily monitoring of official sources

We check the USITC tariff schedule, Federal Register notices and CBP bulletins every night. When a change touches a code you hold, you get one email — old rate → new rate, and exactly which SKUs are affected. One digest a day at most, and nothing at all on the days nothing moves.

“Your checkout may now be undercharging on these 14 SKUs.”

How it works

From install to watched catalog

  1. Install & sync

    One-click install from the Shopify App Store. Your catalog syncs automatically — we read products only, never customers or orders.

  2. Your whole catalog, classified

    Suggested HTS codes arrive with confidence scores and one-line rationales, so you can see why each code was chosen. Small catalogs are done in minutes; large ones run as a bundled overnight batch, and the app tells you while it is working.

  3. Review & approve

    Approve one by one or in bulk; override anything. Approved codes are written back to Shopify’s HS-code field on each product.

  4. Rates watched daily

    From then on, DutyLookout stands watch. Rate changes affecting your products trigger an alert with the exact SKUs and deltas.

Why a classification costs what it costs

We don’t let the model type the code.

Ask a language model for a 10-digit tariff code and it will give you ten digits. Some of those codes do not exist. The dangerous ones do exist — right subheading, wrong statistical line — so every downstream check passes and nothing ever flags them. We watched a fully described snowboard come back as 9506.11.2000, “Cross-country skis”. That is a real code. It is simply not the one that product is imported under. So we take the code out of the model’s hands.

  1. Pass one: what is it?

    The first pass reads your title, description, product type, vendor and tags, and works out the heading and subheading — the six digits that say what kind of thing this is. It also guesses the last four from memory, and those four are the ones we do not trust: they are the difference between a snowboard and a cross-country ski.

  2. Pass two: which line?

    A second, separate pass looks up every statistical line actually published under that subheading and hands the model that list. Its job is no longer to recall a code but to choose one of yours. If none of them fit, it is allowed to say so — and the product comes to you instead of getting a code that nearly fits.

  3. Then we check it against the tariff

    The chosen line has to resolve in the published tariff revision and sit under the subheading we asked about. If it doesn’t, it is discarded, not written. A code we cannot pin to a real line is never written to your Shopify product: the product is flagged for a person instead, with the subheading and reasoning already filled in.

  4. The numbers are arithmetic, not inference

    No model touches the money. Base rate, Section 301 and 232 surcharges, postal rules and fees are computed from a versioned rate snapshot that carries its revision label, with surcharge programs resolved by effective-date window. Every estimate names the snapshot it came from, so anyone can check it.

Both the classification call and the verification call on the paid path run on Claude Sonnet 5 — a frontier model on each, because a wrong code costs a merchant far more than the tokens do. The free lookup on this site runs on a smaller model and is labelled indicative for exactly that reason.

Yours first

The codes you already have are respected

If a product already carries a code, we try yours before we classify anything. A full 10-digit line that exists in the current schedule is kept as-is and marked as yours. One that doesn’t — retired, mistyped, or only six digits — is flagged for review with the reason, and you choose. A code you set is never silently replaced with ours.

Flagged for a person, not overwritten.
Included

Monitoring is not a separate line item

The nightly watch comes with the product. We diff each new rate snapshot against the one your codes were priced from, and re-resolve surcharge windows against the clock — so a program that opens or closes overnight is caught that night, not at the next tariff revision. You get one email naming the SKUs and the old and new rates.

Deterministic diff. Zero LLM involvement.
Free tool

The free lookup is a different thing

The public lookup answers one question quickly: a smaller model, an indicative duty range, nothing written to your store and nothing watched afterwards. We do keep the description you type, with no identifier attached to it, so a repeat of the same query can be answered from cache — the privacy policy sets out exactly what that means. The second pass, the tariff resolution, the full duty stack and the daily watch are the paid path — and they are what a classification is actually paying for.

Indicative only. Nothing touches your store.

Where it fits

Built for the merchants in between

Shopify’s built-in duty tools are a reasonable start, and enterprise platforms are excellent at enterprise scale. DutyLookout covers the ground between them: a statistical line verified against the published tariff, a duty stack you can audit line by line, and a daily watch — with no enterprise contract and no implementation project.

Shopify’s built-in estimatesEnterprise platformsDutyLookout
ClassificationAutomatic, with no rationale shownStrong, often with broker services attachedTwo passes: a proposed subheading, then the exact line chosen from the real published lines under it — with confidence, rationale, and your approval before anything is written
Duty mathOfficially “an estimate”; rate freshness not visibleFull landed-cost enginesFull US duty stack from a versioned rate database; every estimate cites its snapshot
Change alertsNoneVaries by contractDaily watch with SKU-level email alerts
PricingIncluded with ShopifyPriced for larger merchantsNo subscription — pay per classification, first 25 free each month
Audit trailYesCSV export of every code, rationale, and approval — ready for your customs broker

Pricing

No subscription. Pay for what you classify.

Classifying a catalog is mostly a one-time job, so we do not charge you every month for it. The first 25 classifications each month are free — after that you pay per product, and less as you scale.

A 1,000-product store$56 onceto classify the whole catalog
  • No monthly fee before or after
  • Then nothing at all while you add fewer than 25 products a month
  • Nothing to cancel if you stop
See the rate table

No catalog limits and no trial to expire. Nothing is bought up front, so there is nothing to size in advance and nothing to lose unused — and a product you have already classified is not billed again unless it changes. Billed through Shopify on your regular app invoice — uninstall any time and you are simply not charged again.

Try it first

Look up one product, free

Describe a product in plain English and get its HS code with an indicative US duty range — no account, no install. A few free lookups a day, on the house.

Open the free HS lookup

Questions merchants ask

What is an HTS code, and why does my Shopify store need one?

An HTS code is the 10-digit US Harmonized Tariff Schedule number that determines the duty rate on an imported product. Since the US de minimis exemption ended, shipments that previously entered duty-free under the $800 threshold now clear customs against a specific code, so every product you ship into the US needs one.

Can DutyLookout find the HS code for my products automatically?

Yes, and it does it in two passes rather than one. The first pass reads your Shopify product data and proposes the tariff heading and subheading. A second pass then reads the actual 10-digit statistical lines published under that subheading and picks the one that fits, so the last four digits are chosen from the real schedule instead of written from the model's memory. You get a 10-digit code with a confidence score and a plain-English rationale. Suggestions are for your review — DutyLookout is not a customs broker and does not certify classifications.

How do I know the code DutyLookout gives me is a real tariff line?

Because it is resolved against the tariff revision that is currently published before you ever see it: a 10-digit code that does not exist in that revision is rejected rather than shown. Where an 8-digit prefix covers several statistical lines that can carry different surcharge treatment, DutyLookout will not pick one by digit order — it sends the product to the line-selection pass, and if that cannot decide either, the product is flagged for a person. The same existence check runs again at the moment a code is written back to Shopify, against the revision published at that moment rather than the one in force when the suggestion was made. This guarantees the code exists in the current schedule; it does not certify that it is the right code for your goods, which remains your decision as importer of record.

Will DutyLookout overwrite the HS codes I already have?

No. A code you already hold is tried first, before any AI call is made. If it is a full 10-digit line that exists in the current published schedule it is kept as yours and marked as such. If it does not validate — a retired line, a typo, or a 6-digit code that cannot carry a duty estimate — the product is flagged for a person to decide, with the reason stated, and is never silently replaced. The write-back step refuses to overwrite a code you entered or overrode, independently of how the suggestion was produced.

Is the duty estimate what I will actually pay at the border?

No. It is an estimate based on the published general rate for the suggested code, shown with the dated schedule snapshot it came from. Actual landed cost depends on country of origin, trade programme eligibility, customs valuation, and shipment-specific fees, and may include antidumping or countervailing duties that a general rate does not capture.

Can I look up an HS code without installing the app?

Yes. The free lookup at https://dutylookout.com/lookup classifies a single product description with no account and no payment. It is capped — a limited number of lookups per visitor per day, plus a shared daily allowance across everyone using it; when that allowance is spent the page says so and it resets at 00:00 UTC. It also runs a smaller model than your catalogue does, so treat it as a preview of the format and the reasoning rather than a guarantee of the same code. Installing the app is what removes the cap, extends this to your whole catalogue, and adds tariff-change alerts.

What happens when a tariff rate changes?

DutyLookout checks the published US tariff schedule daily and raises an alert naming the specific products affected and how the rate moved, rather than a general notice you have to interpret. You can also receive a daily email digest.

How much does DutyLookout cost?

There is no monthly subscription. The first 25 product classifications each month are free, after which classifications are billed at graduated rates from $0.090 down to $0.032 each. Classifying a 1,000-product catalogue costs about $56 once, and only newly added or materially changed products are billed after that. There are no catalogue size limits, nothing to prepay, no credit packs to buy or leave unused, and tariff-change monitoring is included rather than sold as a monthly add-on.

What does the per-classification price actually pay for?

Four things that cost money on every product. First, two model passes instead of one: a classification pass, then a separate verification pass that picks the 10-digit line from the real published tariff lines under the chosen subheading. Second, your catalogue runs on Claude Sonnet 5, a frontier model, rather than the smaller model the free public lookup uses. Third, the duty figures are not produced by AI at all — they are deterministic arithmetic against a dated, versioned snapshot of the published schedule, with surcharge programs resolved by their effective-date windows. Fourth, daily tariff monitoring is part of the price rather than a separate monthly line item. There is no monthly fee and nothing to prepay, so the only thing you are buying is the classification itself.

What data does DutyLookout access in my store?

Product catalogue data only, using the read_products and write_inventory scopes. It never requests customer scopes and stores no customer personal data. Product text is sent to an AI provider for classification; duty calculations are deterministic and involve no AI.

Does DutyLookout support countries other than the United States?

No. It classifies and prices for US import only. It does not cover the EU, UK, Canada, or any other customs territory.

Stand a watch on your tariffs.

Install DutyLookout, get your catalog classified, and let the nightly rate watch flag what changes — before it costs you margin.

Install on Shopify — no subscription