Shopify Commercial Invoice: How to Create One for Any Order

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.

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.

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:
Open Products, then the product.
In Shipping, set Country of origin and the HS code. This main field holds the general 6-digit code.
For a longer country-specific code, click the ⋯ menu and choose Add HS codes by country/region.
Pick the country. Only markets you sell to appear in the list.
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.

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.

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.

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.

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.


