top of page

Commercial Invoice Automation for Shopify: The Real Gap

Writer: Customs Buddy
Customs Buddy
Sep 3
9 min read

Short version: nothing in your current stack generates a commercial invoice from your order data.

Shopify doesn't produce one. Shippo, FedEx Ship Manager, UPS WorldShip and DHL's API all handle a commercial invoice, but what they handle is formatting and electronic submission of data you supply. Somebody — you, an ops person, or a piece of software sitting between Shopify and the carrier — still has to put the HS code, country of origin, currency, Incoterm and (for the EU) the EORI number onto every single international order.

That's the actual gap. Everything below is about where it sits and what closes it.

What commercial invoice automation actually means

Commercial invoice automation, for a Shopify merchant, means one thing: software that reads the data already sitting in an order — buyer, line items, HS code, country of origin, price — and turns it into a customs-ready invoice, without anyone retyping product data into a carrier portal.

Search the phrase, though, and you get something else entirely: enterprise document-AI vendors — ABBYY Vantage, Shipamax, and a handful of agentic extraction platforms. They solve the opposite problem. Those tools read commercial invoices that arrive from suppliers and pull the data into a freight forwarder's system. Inbound extraction, for teams with a trade-compliance department.

You have the reverse problem. You're the exporter. The invoice doesn't exist yet, and you have to create it, correctly, for every parcel that crosses a border. Nobody ranking for the head term addresses that.

Can you suggest a solution that automates commercial invoice creation for international orders?

Yes, but it has to be a layer between Shopify and your carrier, not the carrier itself. Carrier tools automate the document's format and its transmission; they do not source per-line HS codes and countries of origin from your catalogue. What you want is an app that reads the Shopify order and generates the invoice from it — Customs Buddy does that.

Here's why that distinction is the whole decision.

Who offers commercial invoice automation for ecommerce shipments?

Four names cover almost every Shopify international order: Shippo, FedEx Ship Manager, UPS WorldShip, and DHL's API. Each formats a commercial invoice and transmits it electronically on paperless-trade lanes. None of them read your product catalogue — every one still needs a human, or an integration, to key in HS codes and countries of origin first.

When you buy a label in Shippo, Shippo builds the commercial invoice from whatever you typed into the customs declaration at purchase time, and submits it electronically on Paperless Trade lanes (Shippo's own docs). Good — that's a real saving on printing and attaching documents. But the declaration is the input, and you filled it in.

FedEx Ship Manager creates the invoice as part of label creation and offers Electronic Trade Documents to send it digitally. UPS WorldShip does the same via electronic Commercial Invoice submission for destinations that accept Paperless Trade, and prints for the ones that don't. DHL's parcel API will accept a customs declaration and commercial invoice pushed to it programmatically. That last one is the clearest statement of the pattern: it's a data-in pipe. Something upstream has to build the compliant invoice.

None of them read your product catalogue. So the answer to "what automates this" is: whatever populates the line items.

Does Shopify generate commercial invoices automatically?

No. Shopify used to offer a standalone "print commercial invoice" option and merchants report it was removed in a March 2023 change, with no native replacement in the current help docs. What Shopify gives you now is a customs declaration attached to a shipping label, which is a different document with a different purpose.

Worth being precise about the three things people conflate:

  • A packing slip lists what's in the box. It has no value, no origin, no classification. Customs does not clear on it.

  • A customs declaration on a label is the carrier's electronic summary. For destinations that support paperless trade, Shopify submits the customs data with the label and nothing extra prints; for the rest, the customs form prints and you attach it.

  • A commercial invoice is the exporter's own signed statement of what was sold, to whom, for how much, made where. That's the document with legal field requirements.

Two structural limits inside Shopify matter more than the missing print button.

First, HS codes are stored per product, set on the product page, with optional per-country refinement. There's no per-order-line origin field distinct from the product record. You can override at fulfilment, but that's a manual action on a specific shipment.

Second, Shopify's own commercial-invoice handling is narrow. The international considerations doc says Shopify adds customer tax IDs to commercial invoices for Brazil, China and South Korea, and only under Managed Markets. For third-party carriers, Shopify tells you to contact your service to confirm they add the required fields. That's Shopify telling you, in its own documentation, that this isn't its job.

What a commercial invoice legally must contain — US vs EU

The baseline is similar on both sides: parties, description, quantity, value, currency, country of origin. Our Shopify commercial invoice guide walks the full field list. Neither side offers a low-value shortcut anymore, either — the US suspended its $800 de minimis exemption for good, and the EU's own €150 threshold went the same way, so full paperwork applies regardless of order value. What matters here is where the two regimes diverge, because if you ship both directions you need one document that satisfies both.

Field

US (19 CFR 141.86)

EU import

Trader ID number

No equivalent required

EORI for both parties. Customs can't process the declaration without it

Incoterm

Not named as a field; freight, insurance, commission and packing must each be itemised

Expected explicitly on the invoice

Responsible person

Invoice must name an employee of the exporter with knowledge of the transaction

No direct parallel

Classification detail

10-digit HTSUS on the entry

HS/CN/TARIC, extended to 10 digits

Value basis

Purchase price per unit; fair market value if not a sale

CIF — goods plus freight and insurance to the first EU entry point

Low-value extra

None (de minimis is gone)

IOSS number if you want VAT handled at point of sale on consignments under €150

Country of origin

Required

Required

Two notes on the US list. 19 CFR 141.86 wants a "detailed description" including name, grade, quality and marks — not your product title. And the named-employee requirement catches people out, because no other regime asks for it.

On the EU side, the EORI is the one that stops shipments. It's an economic operator registration number, and both the seller and the buyer-side importer need one on the invoice. Logistics providers advising EU sellers report that when the EORI is missing, expired, or registered to a different legal entity than the one named on the invoice, the declaration gets rejected or pushed to manual review. That's practitioner guidance rather than a published customs statistic, but it's consistent with the EU requirement itself: the number is how customs identifies you, so a mismatch means they can't.

What breaks when you do this by hand

Every manual route fails in a predictable place.

A Word or PDF template. Fine for one shipment. The failure mode is drift: someone copies last week's invoice, changes the buyer, and misses the HS code or the currency. Value and quantity stop reconciling. An industry review of recurring commercial-invoice errors groups the repeat offenders into party and ID errors, vague goods descriptions, missing or wrong HS codes and origins, unstated currency or Incoterm, and documents that simply disagree with each other. Every one of those is a copy-paste artefact.

The carrier portal. Correct by construction, but it's re-entry. Because Shopify holds HS codes at the product level and not on the order line, the person in the portal is retyping data that already exists in the store.

A spreadsheet mail-merge. Scales the typing, not the accuracy. One wrong lookup propagates to every order in the batch, silently.

Here's the arithmetic that decides this. Say five to six fields per line have to be keyed or checked: HS code, country of origin, description, unit value, currency, Incoterm. A store doing 40 international orders a week with two lines each is looking at roughly 400 to 480 field entries a week, all of them retyping data the store already has. Nobody's published a credible number for time saved per invoice, and the figures floating around for "invoice automation" come from accounts-payable processing, which is a completely different task. So do your own arithmetic rather than trusting anyone's percentage — the count of re-entries is the honest metric.

This is the point where an integration layer stops being optional. Customs Buddy is that layer: it reads the Shopify order — buyer, line items, HS code, origin, price, currency — and generates the commercial invoice from it, per order, so the data gets set once at the product level instead of retyped at the parcel. To be plain about the boundary: it produces the document. It does not file your customs entry, provide your bond, or act as your broker. Those stay with you or whoever you retain. If you're building the wider pipeline, our guide to automating Shopify customs covers the pieces around the invoice.

What it costs to get wrong

Lead with the part that's statute, not anecdote.

Under 19 USC 1592, a materially false invoice statement is a customs violation whether or not anyone meant it. Where the error caused a duty loss, civil penalties run up to twice the duty loss for negligence and four times for gross negligence, on top of the duties themselves, with recovery reaching back up to five years. Where no duty was lost, the statutory maximum is 20% of the goods' domestic value for negligence, 40% for gross negligence, and up to the full domestic value for fraud. A timely prior disclosure made before CBP opens a formal investigation can cap exposure at interest on the duty loss — which is the reason to fix a systematic error the moment you find it rather than quietly correcting it going forward.

The softer costs are real but badly sourced, and it's worth knowing which is which:

  • Hold duration. Industry guides put document-driven holds anywhere from a day to a month, with value disputes running longer. No customs authority or carrier publishes a service level for this, so treat any range you see as illustrative.

  • Storage fees. The per-day figures you'll find online are ocean-container demurrage and warehouse charges. They don't describe what happens to a courier parcel, and nobody should quote them at you as if they do.

  • Return to sender. Reverse logistics on a refused international parcel is slow and can take months. There's no published rejection rate worth citing.

The dependable statement is narrower and still enough: a wrong invoice is a legal exposure with a statutory multiplier, plus a delay of unpredictable length that lands on your customer.

What to do this month

  1. Set HS codes on every product, not at pack time. Six digits is the global stem; the last four are country-specific and set the duty rate.

  2. Add country of origin as product data. Where it was made, not where you ship from.

  3. Rewrite descriptions for customs. Material, function, form — the way our piece on why your product name doesn't work as a customs description lays out. Keep the marketing name on the storefront.

  4. Get your EORI on file if you ship into the EU, and check it's registered to the same legal entity named on your invoices.

  5. Pick your Incoterm and state it. Whichever you choose, it has to appear on EU-bound invoices.

  6. Decide where the invoice gets generated. If the answer is "in the carrier portal, by a person," you've found the task to automate.

Commercial invoice automation: frequently asked questions

Is a packing slip the same as a commercial invoice?

No. A packing slip lists what's in the box — no value, no country of origin, no classification, and customs doesn't clear a shipment on it. A commercial invoice is the exporter's own signed statement of what was sold, to whom, for how much, and where it was made, with the fields customs actually checks.

Do I still need a commercial invoice on low-value orders?

Yes. Both the US $800 exemption and the EU €150 threshold are gone, so there's no value floor left that exempts a shipment from full customs paperwork — a $14 order needs the same commercial invoice as a $1,400 one.

Who's legally responsible if the commercial invoice is wrong?

The exporter — you, not the carrier. Carriers format and transmit whatever data you gave them; they don't verify it. US regulation even requires the invoice to name a specific employee of the exporter who can answer for the transaction. Getting it wrong is a customs violation under 19 USC 1592 whether or not anyone meant to.

Can Shippo, FedEx, or UPS automate customs paperwork for Shopify orders on their own?

They'll format and transmit an invoice electronically once you've supplied the data — HS code, country of origin, value, Incoterm — through their customs declaration screen. None of them read your Shopify product catalogue on their own; something still has to populate the line items first.

Where this leaves you

The carriers already solved transmission. What's left is generation, and that's a data problem inside your store, not a shipping problem.

Customs Buddy generates a commercial invoice for every international Shopify order from the order data you already have — line-item HS codes, country of origin, values, currency, buyer details — formatted for the destination. You set the product data once. The document exists before the parcel does. Install it, ship a test order, and see what comes out.

bottom of page