Duty mismatch, explained

Why is my Shopify duty
different from what I was billed?

If Shopify estimated 6% duty and your carrier billed you 27%, one of four things went wrong — and every one of them is fixable before the next shipment. Here is the plain-English diagnosis, with the specific fix for each case.

Check a product now

The four reasons

Every surprise duty bill traces back to one of these

1. The HTS code is wrong

The classification you priced against is not the classification the carrier used at the border. Shopify accepts whatever HS code you type; a broker at the port uses what they see on the commercial invoice. A cotton sweater classified as a t-shirt, or a leather bag classified as a textile, lands in a different chapter with a different duty rate.

Fix: classify the product under the General Rules of Interpretation before you set the price. Keep the rationale with the product so the code is defensible the next time a broker questions it.

2. The country of origin is wrong

Origin is not where you bought the product — it is where it was substantially transformed. If your supplier ships from Taiwan but the product was knit and finished in China, the product is China-origin for customs purposes. That turns a clean 10% duty into a Section 301-loaded 35%.

Fix: confirm the country of substantial transformation with your supplier, not where the shipment leaves. Store it with the product and revisit whenever you change sourcing.

3. A Section 301 or 232 overlay was missed

The base HTS rate on your product might be 6.5%. But the same code on the Section 301 List 3 adds 25%. Section 232 adds origin-specific rates on steel and aluminum. AD/CVD can push rates past 100% on specific combinations. Most Shopify-native duty estimates ignore these entirely.

Fix: use a duty tool that stacks the overlays automatically whenever origin and HTS match a live list. ImportPilot does this by default on every estimate.

4. A tariff change happened and nobody told you

You classified the product correctly six months ago. Since then, a new Section 301 list was published, a CBP ruling reinterpreted a heading, or a base rate moved. Your code is still technically right — the rate that applies to it has changed. You find out when a shipment clears and the bill is higher.

Fix: monitor your saved products against the official tariff data. When a change touches one of your codes, you get an alert and can adjust Shopify pricing before the next shipment.

How to stop this from happening again

A repeatable workflow instead of a surprise

All four reasons above come from the same root cause: the duty number you used to set your price was not built on a defensible classification. ImportPilot fixes that by making classification the first step, not the last.

Classify before you price

Run the product through guided intake. Pick the HTS code you trust. See the full duty stack with overlays. Then set your Shopify price with a number you can defend.

Store the rationale

Every saved product keeps the code, the origin, the duty stack, and the reasoning — so you or a broker can answer "why this code?" months later without redoing the work.

Monitor for changes

When Section 301 lists update, when CBP publishes a new ruling, when base rates move — affected saved products get flagged. You re-price before the next shipment, not after.

Export clean data back to Shopify

The Shopify CSV export populates HS code and country of origin on every variant, so carriers and brokers see the same codes you priced against.

Check one product and see where the gap is

Free trial, no credit card. Classify a SKU and compare against what your broker charged.

Shopify duty mismatch FAQ

Why is my carrier's duty bill different from my Shopify estimate?

Because Shopify's estimate and the carrier's customs entry almost always use different HTS codes. Shopify's built-in duty estimate relies on whatever HS code (and often no code) you have on the variant. Your carrier's broker classifies the product at the border based on what they see on the commercial invoice. If those two disagree, the bill wins.

Why is my Shopify duty higher than I expected?

Usually one of three reasons: the HTS code being used at the border is not the one you priced against, the origin is a Section 301 country and the 301 surcharge was not included in your estimate, or an origin-based overlay like Section 232 or AD/CVD is hitting the product. Getting the HTS code and origin right up front fixes most of these.

Can a customs broker override Shopify's HS code?

Yes. Carriers and customs brokers will re-classify at the border if they see something that looks wrong on the invoice. That is not an argument for leaving the field blank — blank fields make brokers guess, and guesses usually err high. The right move is to put a defensible code in Shopify and include the rationale if asked.

What do I do when a shipment already has a wrong duty rate?

Short term, pay it to clear the shipment. Then investigate: compare the code the broker used against the code your classification supports. If you have a defensible alternative, you can ask the broker to file a post-summary correction, or in some cases a protest. Long term, fix your pre-shipment classification so this does not repeat.

How does ImportPilot prevent this next time?

ImportPilot classifies the product before you ever set a price, shows you the full duty stack including 301/232/AD-CVD overlays, stores the decision with rationale, and flags saved products when tariff changes would move the number. You stop guessing and start pricing on defensible codes.