top of page

Shopify Commercial Invoice: How to Create One for Any Order

Writer: Customs Buddy
Customs Buddy
Mar 20, 2023
8 min read

Updated: Sep 23

Shopify doesn't generate commercial invoices. Its own help centre says every international order needs one, then sends you to the carrier's website to fill one in. What Shopify gives you instead is an order invoice, a printable order summary and a customs form on the shipping label. None of those is a commercial invoice.

So you have three ways to get one: the carrier's form, a custom print template, or an app that builds it from the order. This guide covers all three, fastest last. It also covers the one-time setup inside Shopify that makes any of them work.

Example commercial invoice generated by Customs Buddy for an order shipped from Leeds, United Kingdom to Berlin, Germany. The From section lists the seller's company name, address, VAT, EORI and IOSS numbers next to the invoice date, invoice number, DDP terms of sale and reason for export. Ship To and Sold To show the buyer. Three lines give units, a material-based description, a six-digit HS code, a two-letter country of origin, unit and total value in euros. The footer has the declaration statement, shipper, signature and totals including freight and tax.

Does Shopify generate commercial invoices?

No. Merchants have reported since late 2023 that Shopify no longer has an option to generate a simple commercial invoice, and no current Shopify help doc describes a native one.

Shopify says as much itself. Its page on duties and import taxes reads: "Every international order requires a commercial invoice. You can fill out digital commercial invoices provided by the carrier on the carrier's website."

A commercial invoice is your own statement, as the exporter, of what you sold, to whom, for how much, and where it was made. Customs reads it line by line. Here's what Shopify has that looks like one:

Shopify document

What it actually is

Customs fields on it

Order or draft order invoice

A payment request to your customer

None. No HS code, no country of origin

Shopify Order Printer "Invoice"

A printable order summary. The default templates are Invoice, Packing slip and Pick list

None, and the app's template variables can't reach HS code or country of origin

Customs form on a Shopify Shipping label

The carrier's customs declaration

HS code, origin, value and description, entered or checked per label

Managed Markets

Global-e, as merchant of record, handles commercial invoices for you

Covered, but only if you're on Managed Markets

The label customs form is the closest match, so it's worth being clear about its limits. When you buy a label, Shopify asks you to "verify your product information such as weight, quantity, value, and description," pick a country of origin and enter an HS code. For countries without paperless trade, you print the form and attach it to the parcel. USPS forms hold at most 3 items (Priority Mail Express International) or 10 (Priority Mail International and First-Class Package International). Anything longer goes through USPS Customs Forms Online.

DHL Express through Shopify Shipping does paperless commercial invoicing to supported destinations, so you print only the label. That page describes shipping from the continental US. If you ship from the UK or EU, ask your carrier what it needs from you.

Comparison table of what Shopify's native documents contain against what a commercial invoice needs. Four columns: order invoice, Shopify Order Printer invoice, shipping label customs form, and commercial invoice. Six rows: HS code, country of origin, EORI or IOSS number, Incoterm, signature, and many product lines. The order invoice has none of the customs fields. Order Printer has no HS code or origin field and can carry EORI or Incoterm only as hard-coded text. The label customs form takes HS code and origin typed per label, DDP or DAP on DHL Express, and caps USPS forms at 3 or 10 lines; Shopify's docs don't say whether it carries EORI, IOSS or a signature. Only the commercial invoice column is filled in every row.

What has to be on a Shopify commercial invoice?

The exact list depends on where the parcel is going, but the groups are the same everywhere:

  • Parties: you as seller and shipper, the buyer, and the ship-to address if it's different.

  • Lines: a plain description of each item (what it is and what it's made of, not its product name), quantity, unit value, weight, HS code and country of origin. An HS code is the international number that classifies what a product is. Country of origin is where it was made, not where you ship from.

  • Terms: currency, the Incoterm (the trade term saying who pays shipping and duty, such as DAP or DDP), freight and insurance, and the reason for export.

  • Tax IDs: your EORI, IOSS or VAT number, where the destination needs one.

  • Declaration and signature.

Even Shopify's own blog lists "the reason for export, order date, and the sender's signature" alongside contents, value and origin.

Shopify's help page adds two rules worth following exactly. The invoice has to match the Shopify order on HS code, country of origin, price, quantity, duties collected and tax registration numbers. And you mark it DDP if you collected duties at checkout, DAP if you didn't.

Two destinations change the detail. For the US, the regulation is 19 CFR 141.86, and US entries need the full 10-digit HTSUS code, not the 6-digit stem. US de minimis has ended for good, so that applies to every order. For the EU, low-value IOSS parcels use a 6-digit HS code, the importer of record needs an EORI, and product identifiers like SKU and barcode become mandatory on every line from 1 November 2026. Here's what changed in the EU.

If you ship both ways, our commercial invoice automation guide has the full US-versus-EU field table. If you sell in more than one currency, multi-currency invoicing covers which one goes on the invoice.

Where does Shopify store HS codes and country of origin?

On the product page. This is the setup step almost nobody writes about, and it decides how much typing you do later.

Shopify's HS code guide puts both fields in the product's Shipping section:

  1. Open Products, then the product.

  2. In Shipping, set Country of origin and the HS code. This main field holds the general 6-digit code.

  3. For a longer country-specific code, click the ⋯ menu and choose Add HS codes by country/region.

  4. Pick the country. Only markets you sell to appear in the list.

  5. Enter the code. Shopify describes it as "typically the standard six-digit code with additional digits or letters added."

That third step is the one most stores miss. The 10-digit US code has a home in the Shopify admin. It's optional, and nothing prompts you to fill it in.

You can also type an HS code when you buy a label, which overrides it for that shipment. The bulk editor takes HS codes too, but its docs don't mention country-specific codes. For a large catalogue that means going product by product, or using a CSV or API tool. (For developers: the data sits on each variant's inventory item as harmonizedSystemCode, countryHarmonizedSystemCodes and countryCodeOfOrigin.)

Here's the odd part. Shopify already knows the HS code and country of origin for every product you sell. It just won't put them on a commercial invoice, so right now someone on your team types them in again for every parcel.

How do you create a commercial invoice in Shopify? Three options

Option 1: Fill in the carrier's form

This is what Shopify's help page recommends. It's free and every carrier supports it. You open the carrier's site and retype the order: every line, every HS code, every origin, plus the header fields.

Option 2: Build a print template

Shopify Order Printer, Shopify's own free app, lets you write custom templates in HTML, CSS and Liquid. The catch is data. Its variables don't include HS code or country of origin. Order Printer Pro, a paid third-party app, ships a "Commercial Invoice for Exports" template, and its own docs state that "the Shopify Order Printer app does not support these variables." So this route means a paid app plus a Liquid template you maintain yourself.

Option 3: Use an app that reads the order

The app pulls the lines, HS codes, origins and values from Shopify and lays them out as a commercial invoice. Nobody retypes anything.

The difference between option 1 and option 3 is easiest to see as arithmetic. Take one line on an invoice: description, HS code, country of origin, quantity, unit value, weight. That's 6 fields. Add three header fields: Incoterm, currency, and your EORI or IOSS number. A two-line order is 15 fields.

At 50 international orders a month, that's 750 fields typed by hand. At 200, it's 3,000. This is an illustration, not a benchmark. Nobody has published a credible time-per-invoice figure, so count your own fields instead. Every one of them is data your store already has, and every one is a chance for a typo you'll only find when a parcel is held.

A merchant doing 200 orders a month can't hand-type 3,000 fields and expect none of them to be wrong. That's the job Customs Buddy does. It builds the commercial invoice from the Shopify order: lines, HS codes, origins, values, currency, and the tax IDs for the location you ship from. To be plain about the boundary: it makes the document. It doesn't file your customs declaration, pay your duties or act as your broker.

How to create a commercial invoice for a Shopify order with Customs Buddy

1. Fill in product data once. Set country of origin and HS code on each product, as above. Add country-specific codes for markets that need them, like the 10-digit US code. Your carrier needs them whatever tool you use.

2. Set up each shipping location. In the app's Locations, add your company name, Incoterm, signature and tax IDs: VAT, IOSS, EORI and others such as MID, REX or EIN. Every invoice picks up the numbers for the location it ships from.

Customs Buddy location settings for a warehouse in Leeds. The Tax credentials panel holds two VAT numbers, a UK and a Dutch one, plus an IOSS number and an EORI number, both highlighted, with empty MID and REX fields below. On the left, the company name, contact, export email and DDP terms of sale that fill the From section of every invoice from this location.

3. Optional: fix your descriptions with Rewrites. Customs wants "Floral skirt, 90% cotton, 10% elastane," not "Floral skirt." Rewrites builds the invoice description from Product Name, Variant Name, SKU, Barcode and Trade Item Description (a variant metafield for the material description). Here's why your product name doesn't work as a customs description.

4. Print one invoice from the order page. Open the order, click More actions → Print → Customs Buddy. You get a live preview. Tick Commercial Invoice and click Continue to print.

Shopify order page for order 1042, dimmed behind a Customs Buddy print window. The window shows a live commercial invoice preview: From Northfold Outfitters Ltd in Leeds with VAT and EORI numbers, DDP terms, shipping to Berlin, and three lines with material descriptions, six-digit HS codes and countries of origin Portugal, Italy and India. On the right, a Documents panel with Commercial Invoice ticked, Return Invoice unticked, and a Continue to print button.

5. Print many at once. In the Shopify Orders list, select the orders, click ⋯, then under Apps choose Print Commercial Invoices. Or tick orders on the app's Home page and click Generate Invoice.

Shopify Orders list with three unfulfilled orders selected. The bulk actions menu is open, and under its Apps heading the Print Commercial Invoices option is highlighted, below Run Flow automation.

6. Check the lines. Quick edit mode lets you change the HS code, country of origin (from a dropdown), weight and value on any line before you print.

Customs Buddy invoice editor in quick edit mode for an order of three items: a merino beanie with harmonised code 650500 made in Portugal, wool trail socks with code 611594 made in Italy, and a cotton canvas tote with code 420292 made in India. The harmonised code and country of origin columns are highlighted, and each description joins the product name to its material, like "Merino beanie-Knitted hat, 100% merino wool".

7. Hand it to the carrier. Print what your carrier asks for, or upload the PDF to its system. Every PDF is kept in Archives with a link back to the order.

The app also adds admin links for printing invoices on draft orders. Return invoices are on the Pro and Enterprise plans.

Automate it with Shopify Flow

On Pro or Enterprise, you can skip the clicking. A Shopify Flow action generates the invoice PDF, and a trigger fires when it's ready. From there Flow can email it, post it to Slack, or write the PDF link into the order note. It needs HS codes and origins on your variants and Rewrites set up, so no invoice needs a manual edit. Our guide to automating Shopify customs covers the wider setup.

Which option fits your volume?

International orders a month

Sensible route

Under 10

Carrier form, or the Customs Buddy Free plan (10 invoices a month)

Around 50

Starter, $15/month for 50 invoices

Up to 200

Pro, $45/month for 200 invoices, plus return invoices and Flow

More than 200

Enterprise, $150/month for up to 10,000

Prices and limits are from the Shopify App Store listing at the time of writing.

FAQ

Does Shopify have a commercial invoice template?

Not a customs one. Shopify Order Printer ships Invoice, Packing slip and Pick list templates, and its variables don't include HS code or country of origin.

Is the customs form on my Shopify label a commercial invoice?

It's a customs declaration. On some lanes, like DHL Express from the US to supported countries, the invoice data goes electronically. Whether you also need a standalone commercial invoice depends on your carrier and destination. USPS forms cap at 3 or 10 items.

Can I add the 10-digit US or EU HS code in Shopify?

Yes. On the product page, open the ⋯ menu in Shipping and choose Add HS codes by country/region. It works for markets you sell to.

Do I mark DDP or DAP?

DDP if you collected duties at checkout, DAP if you didn't. That's Shopify's own rule.

Can I make a commercial invoice for a draft order or a return?

Yes, with Customs Buddy. It adds admin links for draft-order invoices, and return invoices are on the Pro and Enterprise plans.

Shopify holds the data. It just won't turn it into the document customs asks for. Fill in origin and HS code on your products once, and the rest can come from the order.

Customs Buddy turns every international Shopify order into a commercial invoice: HS codes, country of origin, values, a customs-grade description, and the right VAT, IOSS or EORI number for the location it ships from. It makes the document. It doesn't file your declaration, pay your duties or act as your broker. Install it, print an invoice for a real order on the Free plan (10 a month), and compare it with what you'd have typed into the carrier's site.

bottom of page