GoatLabels GoatLabels
Twenty-seven markets. Three tax routes.

Shipping to the EU: the three VAT collection routes


Pick the route, then make the label agree with it.

Every EU-bound parcel is taxed from the first euro, but collection splits three ways: through a marketplace's IOSS number, through your own IOSS registration, or at the buyer's door with a carrier fee on top. The label and customs declaration must match the collection route you chose.

Four carriers into the EU, one declaration standard

USPS, UPS, FedEx, and DHL all feed the same unified EU customs data model — the carrier picks the speed, the IOSS route decides who collects the tax.

UPSFedExDHLUSPS all quoted
Three routes Marketplace, own IOSS, or door.
Number attached IOSS rides the customs data.
Route declared Label and tax story agree.

One declaration per SKU, reused across 27 markets

Description, declared value, origin, and your HS code saved as customs templates — the EU takes one setup, and the setup is stored, not retyped.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
Saved templates Same SKU, same paperwork.
Prepaid wallet Card, Apple Pay, ACH, crypto.
All-in quote Tax portion visible inside.

Why there is no duty-free floor in the EU anymore

For years, small parcels into Europe slipped under a value floor below which nobody assessed anything, and a generation of sellers built habits on it. The EU abolished that VAT exemption in a single reform: every commercial parcel entering the union is now liable for VAT from the first euro of declared value. What survived is a separate, narrower relief — customs duty, as opposed to VAT, still has a low-value line below which it is not charged, and that line doubles as the ceiling for the checkout-collection scheme this page is about. The exact figure and the reform date sit in the dated block below.

The reform's real content was not the tax; it was the plumbing. If every parcel owes VAT, collecting it parcel-by-parcel at the border would bury both the customs services and every buyer's doorstep in fees. So the EU built a route for the tax to be collected where the sale happens — at checkout — and carried to the border as data instead of as a doorstep transaction. That route is the Import One-Stop Shop, and every US seller shipping to the EU is on one of three versions of it, whether they chose deliberately or not.

Route one and two: marketplace IOSS vs your own IOSS number

The first two routes collect at checkout and differ only in whose registration does the work. On a marketplace, the platform is the deemed supplier for qualifying consignments: it charges the buyer VAT at the rate of the buyer's country, remits it under its own IOSS number, and that number must travel with your parcel's customs data. You register nothing — but you also cannot opt out, and your declaration has to carry the marketplace's arrangement correctly for the parcel to clear as already-taxed. Selling on Etsy, this is the machinery humming underneath every EU order; the shipping side of those orders is covered on shipping labels for Etsy.

Selling from your own website, the same checkout-collection privilege requires your own IOSS registration — one number, obtained once, covering all member states, with monthly remittance of what you collected. It is genuinely one setup for the whole union, but it is accounting overhead with a fixed cost in attention, which is why the honest advice for a seller doing a handful of direct EU orders a month is often route three instead. The threshold question is volume: enough direct EU orders to make a monthly filing routine, and the number pays for itself in doorstep experience.

Route three: collection at the door, and what it does to the buyer experience

The default route — no IOSS anywhere in the chain — still works. The parcel arrives, the destination country assesses VAT on it, and the delivering carrier or postal operator advances the tax, then bills your buyer for it plus a clearance fee before handing the parcel over. The fee is the sting: it is fixed or semi-fixed, so on a small order it can exceed the tax itself, and it lands on a buyer who believed they had already paid in full. Some buyers pay it grudgingly. Some refuse, and a refused EU parcel comes back across the Atlantic with return charges attached — package returned to sender covers who pays for that. Route three is not wrong; it is simply the route where the border's costs become your buyer's problem, and it should be a choice you make with open eyes rather than a default you fell into. Prepaying the charges yourself is the other way out — the DDP-versus-DDU decision, covered on the customs guide.

Making the declaration match the route

The three routes fail in one shared way: a declaration that tells a different story than the checkout did. An IOSS number is not printed on the parcel — it travels in the electronic customs data ahead of it, which means the label workflow that generates your customs data is where the route is actually implemented. A marketplace sale must carry the marketplace's number; a direct IOSS sale must carry yours, mistyped by nobody; a route-three parcel must carry none. Get the data wrong and the failure modes are concrete: already-taxed parcels taxed again at the door, or over-ceiling parcels carrying a number that cannot apply, held while the border reconciles the contradiction. GoatLabels keeps the declaration itself accurate the same way on every lane — customs items with description, declared value, origin, and your HS code, saved as per-SKU templates so the paperwork that cleared last month ships identically this month. Billy drafts the plain-word description from a pasted order; the value and code remain yours, because they are the seller's legal statements. The form, field by field, is customs forms for small parcels.

One setup, twenty-seven markets: what actually varies country to country

The unified machinery is real: one registration or one marketplace arrangement, one customs data standard, one declaration discipline, and your parcel clears the same way into Portugal as into Finland. What the union did not harmonise is the percentage and the pavement. VAT rates are national, and checkout collection charges the buyer's country's rate, so the same item carries different tax to different buyers by design. And the final mile belongs to national posts and local courier operations whose delivery habits differ far more than their customs handling does — signature culture, locker networks, redelivery patience. Quoting USPS, UPS, FedEx, and DHL against each EU order catches both kinds of variation at once, which is the same argument cheap shipping labels makes domestically, sharpened by the fact that international quotes diverge harder. One setup covers the paperwork; the quote still deserves to be per-parcel.

The three routes side by side — verified against European Commission IOSS guidance on 2026-08-15

Route Who collects What the declaration carries What the buyer sees When it applies
Route one: marketplace IOSS The marketplace, at checkout, as deemed supplier under its own IOSS registration The marketplace's IOSS number travels in the electronic customs data with your honest description and value Nothing at the door — tax was in the checkout total Marketplace sales under the scheme's value ceiling
Route two: your own IOSS You, at checkout, remitting monthly through one EU registration that covers all member states Your IOSS number in the customs data; a missing or mistyped number means double taxation at the door Nothing at the door when the data is right Direct sales under the ceiling, once volume justifies the accounting
Route three: collection at the door The border — the delivering carrier or postal operator advances the VAT and bills the buyer, plus a clearance fee No IOSS data; description and value drive the assessment A doorstep bill of tax plus fee, and the option to refuse the parcel Any consignment over the ceiling, and under-ceiling direct sales where the seller has no IOSS

Dated figures, all in one place. As of the verification date above: the EU abolished its low-value VAT exemption on 1 July 2021, so VAT applies from the first euro of declared value. The IOSS scheme and the customs-duty relief share a ceiling of €150 intrinsic value per consignment — above it, IOSS cannot apply, and duty joins VAT in the border assessment. National VAT standard rates currently span roughly 17% to 27% across member states, applied by the buyer's country. Carrier and postal clearance fees on route three are set nationally and per operator. These are European Commission figures, re-checked every 6 months by the named review owner recorded with this page — the EU has an announced reform pipeline for customs, so verify before building a checkout on them.

One EU order, one route, one label

Pick the route once. Attach it to every single order.

An IOSS number is never printed on a parcel — it travels ahead of it in the electronic customs data, which means the label workflow is where an EU tax route stops being a policy and becomes a fact. This is that loop: the order arrives with its channel, Billy drafts a description twenty-seven customs services can classify, the route's data is attached, and four carriers are priced before the wallet moves.

1
The EU order, and which route it is on
Marketplace, your own, or the door
instagram buyer

can you ship the linen tablecloth to Ghent? 9000, Belgium

Shopify
Your own checkout — your route
TikTok Shop
Marketplace — its registration travels
Customs items on the shipment
Description
A linen tablecloth, in plain words
Declared value
The price actually paid — yours to state
Country of origin
Where it was made
Route data
The number that must not be mistyped
Paste the order or drop a screenshot

Twenty-seven destinations share one declaration standard, so the form does not change between Lisbon and Helsinki. What changes is the buyer's country — which sets the rate charged at checkout, and which national network knocks on the door.

2 Billy AI

One description that clears in every member state.

Billy AI
  • Drafts a specific, plain-word description from a pasted order — a linen tablecloth, never homewares
  • Validates the address against the destination country's own format before money moves
  • Leaves the declared value and the HS code with you, because the route's ceiling turns on the value you declare
  • Included on every plan, so a store testing four EU markets pays nothing extra to draft them
Described. Validated. Route attached.
3
One label, twenty-seven markets
A national post or a courier, per order
Paid from the prepaid wallet
Card, Apple Pay, Google Pay, ACH, or crypto
all-in
USPS
Label and customs form purchased
Declaration saved against the SKU
all-in

The failure mode here is a declaration telling a different story than the checkout did — a route number missing, mistyped, or attached to a consignment it cannot cover. Saving the declaration per SKU takes the improvisation out of the half you control.

The channel decides whose registration travels

Every storefront, and the tax arrangement each one brings with it.

Shopify, Etsy, WooCommerce, TikTok Shop, Amazon, eBay, Squarespace, Wix, Walmart, Square, BigCommerce, Magento, and Temu sync into one To Ship queue. For the EU that queue is carrying two different tax stories side by side: a marketplace order rides the platform's registration, a direct order rides yours or none at all. Same box, same declaration discipline, a different number in the customs data.

Via AItiles: paste a DM or a screenshot — a direct EU sale is a direct sale, and its route has to be attached deliberately.

Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
TikTok Shop logo TikTok Shop
Instagram logo Instagram AI Facebook logo Facebook AI
Amazon logo Amazon
eBay logo eBay
Show 15 more Show less
Squarespace logo Squarespace
Wix logo Wix
Walmart logo Walmart
Shopify Plus logo Shopify Plus Soon
Square logo Square
BigCommerce logo BigCommerce
Magento logo Magento
Zapier logo Zapier Soon
NetSuite logo NetSuite Soon
Ecwid logo Ecwid Soon
Temu logo Temu
Shein logo Shein Soon
ChannelAdvisor logo ChannelAdvisor Soon
SkuVault logo SkuVault Soon
Zoho Inventory logo Zoho Inventory Soon
What an EU label needs

The route is a tax decision.
The label is where it becomes real.

IOSS lives or dies in the customs data your label workflow generates. Everything below exists to make that data accurate, reusable, and priced honestly before the wallet moves.

One prepaid wallet
for all 27 markets

Card, Apple Pay, Google Pay, ACH, and crypto fund one balance that buys labels to Munich, Madrid, and Milwaukee alike. No monthly plan underneath, so an EU experiment that sells four parcels costs exactly four parcels.

Wallet balance
$1,247.36 USD
AI

Billy drafts the
clearable description

Paste the order and Billy writes the specific item description EU customs data classifies on the first pass — a linen tablecloth, not homewares. Declared value and HS code stay yours: they are legal statements, and the scheme ceiling turns on the value you declare.

Billy LIVE
Where's the package to Maya?
It's in transit via UPS. Expected Friday, Aug 7.
UPS
1Z8923A6B05G4123456
In transit
Austin, TX → Dallas, TX
Ask Billy anything...

The door bill,
visible pre-purchase

Every EU quote is one all-in number with the taxes-and-duties portion broken out inside it, so route three's doorstep economics are on screen before you commit to them. What you approve is exactly what leaves the balance.

Shipment summary
UPS Ground $12.49
Insurance $0.75
Fuel surcharge $0.32
Total $13.56

Postal stream and
couriers, same screen

USPS hands to national posts with their locker networks and letterbox reach; UPS, FedEx, and DHL clear and deliver on their own networks. The four diverge harder on transatlantic parcels than on anything domestic, which is why this lane rewards a per-order quote.

Compare rates
UPS UPS $12.48
FedEx FedEx $13.22
DHL DHL $14.10
USPS USPS $11.79
Duties & taxes paid

IOSS-ready data
over the REST API

Customs items ride the same shipment objects the dashboard uses, on unlimited calls with signed webhooks, so your checkout can pass the route's tax data and generate the matching declared label in code — with per-SKU customs templates applied automatically.

POST /v1/shipments
{
"to": { "name": "Maya" },
"from": { "name": "Alex" },
"service": "ups_ground",
"label_format": "pdf"
}
Webhook delivered
GoatLabels mobile queue showing an EU parcel with its customs items attached
Billy drafting an EU customs description from a pasted order on mobile

Declared label ready

Ghent, BE · route data attached

Twenty-seven markets, one thumb

One setup for the union. One phone for the parcels.

The paperwork does not change from Porto to Tallinn, and that is precisely what makes an EU order shippable from a phone: the declaration is stored against the product, the validator knows the destination country's address format, and the taxes-and-duties portion sits inside every quote.

Paste the order and Billy drafts a description that clears in any member state.
The address is validated against the destination country's own format before you pay.
Four all-in prices side by side, with the tax portion broken out inside each one.
The SKU's saved declaration attaches itself, so the Belgian order reuses the Spanish one's paperwork.
One tap prints the label and the customs form, to the share sheet or a thermal printer.
Billy is included in all twenty-seven markets

Ask about one parcel in a queue spanning a continent.

A store selling into the EU ends up tracking parcels across a dozen national networks with a dozen delivery habits — a locker here, a letterbox there, a neighbour somewhere else. Ask out loud and Billy finds the shipment and reads its status back, so a buyer in Ghent gets an answer without you first working out which network is holding it. Included on every plan. This is the real product, not a render.

goatlabels.io/dashboard/shipments — Billy
Billy reading back an EU shipment's tracking history over the purchased labels list

Listening

"Where is the Ghent parcel now?"

Out for delivery

Ghent, BE · with the national carrier

Speaks plain English · finds the parcel whichever national network has it · included on every plan, never a pricier tier.

One parcel, four carriers

The same box to Berlin, priced with the tax inside.

An EU-bound parcel quoted across the postal stream and the couriers at once — each column one all-in number with the taxes-and-duties portion visible inside it, so route three's doorstep bill is a number you saw before buying, not a surprise your buyer reports.

US → DE (Berlin) 2.1 lbs 11×8×4 in
USPS

USPS

Priority Mail Intl

7–12 days

$33.80

$7.10 of taxes & duties shown inside the total

all-in · route three priced honestly

Cheapest all-in
FedEx

FedEx

Intl Connect Plus

3–6 days

$31.40

$7.80 of taxes & duties shown inside the total

all-in · route three priced honestly

DHL

DHL

Express Worldwide

1–3 days

$43.90

$8.60 of taxes & duties shown inside the total

all-in · route three priced honestly

Declaration matches the IOSS route Void → credit straight back to your wallet EUR shown alongside USD
Public API v1

The route is a field. Send it with the shipment.

An EU tax route lives or dies as a value in the electronic customs data, and a value is exactly the sort of thing that should never be retyped by a human at the end of a packing session. Pass it with the shipment, attach the customs items, buy — REST, JSON, one Bearer header, unlimited calls on every plan including Free.

Customs items on the shipment object, carrying the description, declared value, origin, and HS code
The route's tax data passed with the order, so a number is never mistyped at packing time
Signed webhooks for tracking events across national carriers, instead of polling each one
Real idempotency keys and an OpenAPI 3.1 spec, with unlimited calls on Free
Read the API docs Get a free API key $0 on every plan
curl https://api.goatlabels.io/api/v1/shipments
POST /api/v1/shipments
Authorization: Bearer sk_live_…
Idempotency-Key: ord_8421

{
  "to": { "name": "Joyce", "city": "Berlin", "country": "DE" },
  "parcel": { "weight": 2.6, "weight_unit": "lb" },
  "service": "fedex_intl_priority"
}
Pricing for twenty-seven markets you are still testing

One wallet for the union. No per-market plan.

Selling into the EU means a few parcels each to a lot of different countries, which is the shape a monthly plan handles worst. Customs items, per-SKU declarations, and all four carriers are on the free plan, so an experiment in four member states costs the postage on the parcels it sends and nothing else.

Pro

Most popular
$40 / month
Unlimited shipments — for the market that finally took off
Cheaper label pricing as your volume grows
Billy AI on Telegram — check a parcel on a national network without opening the dashboard
API access still free and unlimited

Volume pricing

illustrative
less volume more volume

more volume → lower per-label rates

Free

$0 / forever

Four parcels to four countries this month, and nothing owed for the twenty-three you did not reach.

50 shipments a month, no monthly minimum to print
Customs items and per-SKU saved declarations, reused across every member state
USPS, UPS, FedEx, and DHL rate-shopped on every parcel, wherever in the union it lands
Billy AI in the web app — drafts a description that clears in any member state, unlimited use
REST API with unlimited calls; fund by card, Apple Pay, Google Pay, ACH, or crypto

Billy is not an upsell

The assistant that drafts one description clearing in any member state — a linen tablecloth, not homewares — runs on Free, unlimited, in the web app. Pro adds Billy on Telegram.

Web — every plan Telegram — Pro

API free on every plan

GET /api/v1/shipments

200 OK · plan: free

Unlimited calls on Free — still unlimited on Pro.

We'll beat your current rates

Bring your invoice — on Pro we work with you to beat the rates you're getting from

ShippoPirateShipShipStation
No contracts No per-country pricing Start in seconds
USPS UPS FedEx DHL

Label prices are quoted live from USPS, UPS, FedEx, and DHL as one all-in number with the taxes-and-duties portion shown inside it. The scheme's rules, the national rates, and each operator's clearance fee belong to the authorities and carriers that set them — the dated block above names the source. Full pricing details

One union, twenty-seven doorsteps

The paperwork is harmonised. The pavement is not.

What the EU standardised was the declaration. What it left national is the rate your buyer pays and the network that delivers — which is why the route is a store-level decision and the carrier stays an order-level one.

Makers reaching the EU through a marketplace

The platform's registration travels

Nothing to register

The lightest version of Europe for a small US seller: the platform collects at checkout under its own arrangement, and your obligation narrows to a declaration that carries it correctly and a parcel that turns up.

27 markets, one declaration standard declaration saved per SKU tax portion inside the quote
goatlabels.io/dashboard/shipments
GoatLabels shipments queue showing EU parcels quoted across four carriers

Stores with real direct-to-EU volume

One registration, monthly filing

Direct volume is where registering into the scheme starts paying for its own accounting: one number covering every member state, and buyers who are never met at the door by a bill they did not agree to.

Route and declaration agree

The number in the customs data matches what the checkout did

Sellers quoting Europe from a DM

A direct sale with no platform behind it

do you ship to Belgium? what would it cost?
Four carriers quoted · tax portion shown

Sellers watching which market actually works

National networks, national habits

1

prepaid balance behind every member state you have ever shipped to

Shipping to the EU, answered

What is IOSS and do I need my own number?
The Import One-Stop Shop is the EU scheme that lets VAT on lower-value parcels be collected at checkout and remitted through a single registration covering all member states. Whether you need your own number depends on your channel: marketplace sales ride the marketplace's IOSS, so most small sellers never register. Your own number only becomes worth its accounting overhead when you have real direct-to-EU volume from your own website — below that, letting the border collect on direct orders is legitimate, just harsher on the buyer experience.
Does Etsy collect EU VAT on my orders?
For qualifying lower-value consignments, yes — as a deemed supplier the marketplace charges the buyer VAT at checkout and remits it under its own IOSS registration, and your parcel must travel with that marketplace's IOSS data attached. Practically, that means using the customs workflow the marketplace feeds or making sure its number rides your label data. What the marketplace never takes over is the declaration itself: description, value, and origin are still yours to get right.
Why did my buyer pay a fee on delivery anyway?
Almost always one of two mismatches. Either the parcel exceeded the scheme's value ceiling, so checkout collection could not apply and the border assessed it normally — VAT, any duty, and the carrier's clearance fee. Or the sale was IOSS-collected but the number never made it into the electronic customs data, so the border had no way to know the tax was paid and collected it again. The first is a rules boundary; the second is a data defect, and it is fixable on your side.
Can I ship to every EU country with one setup?
Yes — that is the point of the scheme. One IOSS registration, or one marketplace's, covers all member states, and the customs declaration format is unified. What varies country to country is the VAT rate applied at checkout, which follows the buyer's country, and the last-mile behaviour of each national post. The paperwork does not change from Lisbon to Helsinki; the percentage and the doorstep experience do.
What happens if my declaration does not match the IOSS route?
The border acts on the data it has. A parcel declared without an IOSS number for a sale that was IOSS-collected gets taxed a second time at the door, and your buyer eats it or refuses the parcel. A declared value above the scheme's ceiling with an IOSS number attached voids the checkout collection and reverts to border assessment. Route and declaration are one decision made in two places — make them agree per order, not per store default.

The rest of the international-lane series: Canada, the UK, and Australia — and the declaration every lane starts from, on customs forms for small parcels.

Real sellers, real words

What sellers say once one setup covers the whole union.

A video took off and I had 80 TikTok Shop orders by morning. I printed every label from my phone on the bus to the post office.
E

Early customer · TikTok

TikTok Shop seller

TikTok Shop
I run my Etsy shop from the kitchen. The AI reads the order, picks the carrier, the label prints. That's the whole workflow now.
E

Early customer · Etsy

Etsy maker

Etsy
The API is what every shipping API pretends to be. Idempotency that actually works.
S

Sasha R.

Staff engineer, marketplace

API user
No monthly minimum. One setup for the union.

Choose your route once.
Quote every parcel fresh.

Enter one real EU order, see all four carriers priced with the tax portion inside, and save the declaration as a template that covers all twenty-seven markets.

Sign up in seconds. No card required. Customs templates on every plan.