In short
- The comparison is a fixed cost against a per-order cost. That is all it is, and it has exactly one crossing point.
- On the assumptions below the two routes cross at about 69 parcels a month to a single country, with one product type per parcel.
- At two product types per parcel the crossing moves down to about 34 a month, because the duty side doubles and the local side does not.
- Below the crossing, IOSS plus the €3 is genuinely cheaper. Above it, the registration pays for itself and keeps paying.
- Delivery time is not in the sum. If a domestic transit time converts better for you, the crossing point is lower than the money alone suggests.
- Every number here is an assumption you should replace. The calculator further down takes your own.
Since 1 July 2026 an import into the EU carries €3 per product type in the consignment. IOSS handles the VAT and does nothing about that charge.
Holding stock inside the EU removes the charge entirely, because the border is crossed once on a bulk shipment instead of on every order. It costs you a local VAT registration.
So the whole decision is one line of arithmetic: at what monthly volume does a fixed cost become cheaper than a charge on every parcel? This article does that sum and then hands you the inputs.
The five assumptions, stated up front
€8.00 for a cross-border label, €5.00 for a domestic one, €3.00 duty per product type, €3.10 in fulfilment on the local route, and €200 a month for a VAT registration with a fiscal representative. Only the fulfilment figure is ours; the other four are yours to replace.
What are you actually comparing?
| Import every order (IOSS) | Hold stock in the EU | |
|---|---|---|
| Fixed cost per month | None | VAT registration, fiscal representative, bookkeeping |
| Customs per order | €3 per product type | None — the import happened once |
| Shipping label | Cross-border | Domestic |
| Fulfilment | You or your existing setup | A fee per order |
| Delivery time | Cross-border, with a clearance step | Domestic |
| What it scales with | Your order count, linearly | Your order count, minus a fixed base |
That is why "which is cheaper" has no answer without a volume attached to it. At five parcels a month the fixed cost dominates everything; at five hundred it is a rounding error.
What does each route cost per parcel?
| Cost item | Import every order | Hold stock in the EU |
|---|---|---|
| Shipping label | €8.00 | €5.00 |
| Customs duty | €3.00 per product type | — |
| Fulfilment | Your own time or 3PL | €3.10 |
| Total per parcel, one product type | €11.00 | €8.10 |
| Total per parcel, two product types | €14.00 | €8.10 |
Note what the second product type does. On the import route it adds €3.00 to every single parcel; on the local route it adds nothing at all, because there is no import to charge.
Where is the break-even?
| Parcels a month | Import route | EU stock route | Difference |
|---|---|---|---|
| 25 | €275 | €403 | €128 more with local stock |
| 50 | €550 | €605 | €55 more with local stock |
| 100 | €1,100 | €1,010 | €90 saved with local stock |
| 200 | €2,200 | €1,820 | €380 saved with local stock |
| 400 | €4,400 | €3,440 | €960 saved with local stock |
Below 69 parcels a month you are paying a registration to save duty you were barely paying. That is the honest reading of the top two rows, and it is the reason this article exists rather than a landing page.
Above it the gap widens every month, and it widens fastest for the shops with the most orders and the smallest baskets.
How do product types move the crossing point?
More than anything else in the sum. The duty is per tariff heading in the parcel, so a shop that ships bundles pays a multiple of what a single-product shop pays.
| Product types per parcel | Duty per parcel | Import cost per parcel | Break-even |
|---|---|---|---|
| 1 | €3.00 | €11.00 | 69 parcels a month |
| 2 | €6.00 | €14.00 | 34 parcels a month |
| 3 | €9.00 | €17.00 | 23 parcels a month |
| 4 | €12.00 | €20.00 | 17 parcels a month |
A shop shipping three-product sets crosses at roughly 23 parcels a month rather than 69. If that describes you, run the sum before you assume you are too small.
How the per-product-type counting works, and why splitting a parcel does not help, is in The EU's €3 customs charge.
What is really in that fixed cost?
- The VAT registration itself. Free to apply for, but it comes with periodic returns that someone has to file.
- A fiscal representative, for businesses established outside the EU. That is a fee, and they will usually want a security deposit or bank guarantee on top.
- Bookkeeping. A second set of returns in a second country is real work, whether you do it or pay for it.
- One customs clearance on the bulk shipment. It is a one-off rather than a monthly cost, but it belongs in the first year.
- The stock itself. Inventory sitting in another country is working capital that is not in your bank account.
What the registration involves in the Netherlands, and why OSS does not remove it, is set out in VAT when you store stock in another EU country.
The fulfilment side has no fixed cost in our model — no storage fee, no minimum, no contract. That is what makes the local line start at the registration rather than well above it.
Put your own numbers in
With a 3PL
€3.95
Per order
€395 a month
With AirPost
€3.10
Per order
€2.25 sender fee + €0.85 platform fee, at any volume
€0.85 per order cheaper here.
Set-up cost spread over twelve months. Excludes carrier rates, returns and VAT.
What does this calculation leave out?
Four things, and they do not all point the same way. Two make local stock look better than the sum suggests, and two make it look worse.
| What is missing | Which way it pushes | Why |
|---|---|---|
| Delivery time | Towards local stock | A domestic transit time converts better than a cross-border one. It is real money and it is not in the cost line. |
| Refused and undelivered parcels | Towards local stock | A domestic parcel has no customs step to fail at, so fewer parcels come back. |
| Working capital in stock | Away from local stock | Inventory sitting in another country is money you cannot spend on advertising or on more inventory. |
| Returns handling | Away from local stock | A return to a person with a spare room is a different problem from a return to a warehouse. Agree it before you start. |
The honest way to use them is as a tiebreaker rather than as an input. If the sum says the two routes are close, the first two rows usually decide it in favour of local stock.
If the sum says importing is clearly cheaper, none of the four is big enough to overturn that.
When does IOSS stay the right answer?
- Under about 69 parcels a month to any single EU country.
- A wide catalogue where orders pull from too many SKUs to hold locally.
- Seasonal or unpredictable volume, where a fixed cost runs all year and the orders do not.
- High average order values, where €3 to €9 of duty disappears in the margin.
- Weekly volume into one country with small, light products — that is the case local stock was built for.
- Bundles of three or more product types, where the duty multiplies and the local route does not.
There is no shame in the top half of that list. Most shops selling into the EU should be on IOSS and should stay there until the volume argues otherwise.
How do you check it on your own numbers?
Take one country and one real month
Not your EU total. The registration is per country, so the sum is per country, and your largest EU market is the only one worth starting with.
Count distinct product types per order
Not items — tariff headings. This is the input that moves the answer most, and it is the one nobody has to hand.
Get a real quote for the registration
A fiscal representative quotes on your situation. Use their number rather than ours, and ask about the deposit separately.
Price a domestic label in that country
A domestic parcel is a different rate card from a cross-border one. Take the real figure for the size you actually ship.
Divide the fixed cost by the per-parcel gap
Monthly fixed cost divided by the difference in cost per parcel. That is your break-even, in parcels a month, and it is one line of arithmetic.
Add delivery time to the decision, not to the sum
Keep it out of the money so the money stays honest. Then ask separately what a domestic transit time is worth to your conversion rate.
Frequently asked questions
At how many orders a month is an EU warehouse worth it?
On the assumptions in this article, around 69 parcels a month to a single country with one product type per parcel, and around 34 if you typically ship two product types. Your own break-even depends mostly on those product types and on what a fiscal representative charges you.
Does IOSS become pointless if I hold stock in the EU?
No. Orders shipped from your EU stock are domestic or intra-EU supplies, but anything you still import stays under IOSS. Most sellers end up running both.
Is the €3 charge really per product type?
Yes — per tariff heading in the consignment. Two identical items are one product type; two different products are two. That is why bundles move the break-even so far.
What if I sell into five EU countries?
You do not need stock in all five. Goods held in one EU country ship intra-EU to the other four without any import duty; the only question is transit time and the local rate card.
Does delivery time belong in the calculation?
Not in the cost calculation — keep that honest. Handle it separately: estimate what a domestic transit time does to your conversion rate, and treat it as a second reason rather than a discount.
What happens if my volume drops after I register?
The registration and its returns continue while the orders do not, which is exactly the risk of any fixed cost. That is why the honest advice below the break-even is to wait.
Sources
A break-even is not an opinion. Take the fixed cost, divide it by the gap per parcel, and the number that comes out is yours rather than ours.
See the domestic rate and transit time per country
Where we are active