Guides / International shipping and customs forms

Shipping internationally from Shopify: HS codes, origin and customs forms

What goes on a customs form, where each piece lives in Shopify, which form your parcel needs, and the small mistakes that leave a box sitting in a customs shed.

The first international order feels like a win, right up until the label screen asks for an HS code, a country of origin and a contents type. Most of it is a one-time setup on your products. Get that right once and every parcel after it goes out with a form that customs can read in a few seconds.

What a customs form actually asks for

Whether it's a USPS form, a commercial invoice or the electronic data your label software sends, the same handful of fields come up:

The address, the parcel weight and the service come from the label itself. The rest comes from your products, which is why the setup below pays off.

HS codes, briefly

The Harmonized System is the shared classification customs offices use worldwide. The first six digits are the same in every country; countries can add more digits for their own tariffs. USPS asks, at minimum, for the 6-digit HS code for each item in the package, and says the sender is responsible for getting the classification right.

To find a code, search your product type in the US Census Bureau's Schedule B search (the first six digits of a Schedule B number are the HS code). Classify by what the thing is made of and what it does, not what you call it in your shop: a "cozy lounge set" is a knitted cotton garment as far as customs is concerned.

Country of origin is where it was made, not where you ship from

Shopify defines it as where a product is created or assembled into the form it's sold in. A mug made in Portugal and shipped from your garage in Ohio has a country of origin of Portugal. If you print designs on blanks, the origin is usually the blank's, unless the work you do substantially transforms it. When in doubt, ask your supplier; most put it on the invoice.

Where these live in Shopify

Details are in Shopify's HS code help page. Because the codes sit on the product's inventory item, label apps and shipping tools can read them from the order, so you set them once.

Which form your parcel needs (USPS)

USPS forms are generated electronically with the label now, but the form type still depends on the service. From the International Mail Manual:

ServiceForm
First-Class Package International, $400 or lessPS Form 2976 or 2976-A
First-Class Package International, over $400Not allowed: use Priority Mail International or Express
Priority Mail InternationalPS Form 2976-A
Priority Mail Express InternationalPS Form 2976-B

UPS, FedEx and DHL use a commercial invoice instead, which your label software builds from the same data.

The $2,500 line for US exporters

If the value of the goods under any single Schedule B number in a shipment is over $2,500, the US requires Electronic Export Information (EEI), filed through the Automated Export System, and the label carries the ITN you get back. Below that, the form carries an exemption instead, usually NOEEI 30.37(a) under 15 CFR 30.37. Shipments to Canada are generally exempt, and anything needing an export license must be filed whatever its value. Most small-shop parcels sit well under the line, but a wholesale order of one SKU can cross it fast.

Value: what the customer paid

Declare what the item sold for, after discounts, in your store's currency. Three things trip people up:

Since July 1, 2026, the EU also charges a flat €3 customs duty on low-value parcels (under €150) from non-EU sellers registered for IOSS. If you sell into the EU, check how your checkout or duties app passes that on.

Mistakes that get parcels held

  1. Vague descriptions. "Merchandise", "clothing", "parts". Say what it is and what it's made of.
  2. Missing HS codes. USPS lists them as required customs data, and a label without them can be refused or delayed.
  3. $0 lines. See above.
  4. Weights that don't add up. The items on the form shouldn't weigh more than the parcel.
  5. The wrong origin. Your address is not the origin of a product you bought in.
  6. No signer. Someone has to certify the form. Put a real name on it.

How Pickadoodl does it

I build Pickadoodl. On the Pro plan, its Ship step buys labels through your own EasyPost account, and when an order is going to another country it fills in the customs form from the order:

The details are in the shipping labels help.

A setup checklist

  1. List the products you actually ship abroad, and start with the best sellers.
  2. Find each one's HS code and country of origin; bulk edit them into Shopify.
  3. Set a store default country of origin for anything you make yourself.
  4. Write product titles or customs descriptions a customs officer would understand.
  5. Decide who signs your customs forms.
  6. Ship one test order to a friend abroad before a sale.

Questions

Do I need HS codes to ship internationally from Shopify?

For most carriers, yes. USPS asks for at least the 6-digit HS code for each item, and Shopify uses HS codes and country of origin to calculate duties when you collect them at checkout. Set them once on each product, in its Shipping section.

What's the difference between an HS code, an HTS code and a Schedule B number?

The first six digits are the international HS code, the same everywhere. The US adds digits for imports (HTS) and for exports (Schedule B). Customs forms for parcels need the 6-digit HS code at minimum.

Is country of origin where I ship from?

No. It's where the product was made or assembled into the form it's sold in. A product you buy in from overseas keeps its maker's country.

What value do I declare for a discounted or free item?

Declare what the customer paid after discounts. For a free item, use its normal price; a $0 line is a common reason for a hold.

When do I need to file EEI?

For US exports, when the goods under one Schedule B number in a shipment are worth more than $2,500, or when an export license is required. Below that, the form carries an exemption such as NOEEI 30.37(a). Shipments to Canada are generally exempt.

Can Pickadoodl fill in customs forms for me?

Yes, on the Pro plan with your own EasyPost account. It builds the form from the order and your products' HS codes and countries of origin, and lists anything missing before you buy a label.

Ship abroad without the form-filling.

Free up to 75 orders a month, with every feature. Labels and customs forms are on Pro. If anything trips you up, email me. I read every message.

Install free on Shopify