Skip to main content

We use analytics cookies to see which pages people actually read. Reject and nothing about how the site works changes. Read the cookie policy.

Operations

The New EU Duty Is Not €3 Per Parcel. It Is €3 Per Tariff Sub-Heading.

Nadira · 13 October 2026

Most of the coverage of the EU's new small parcel duty described it as €3 a parcel.

It is not. It is €3 per item category, and the Council's own worked example explains it better than any of the commentary did:

A parcel contains 1 blouse made of silk and 2 blouses made of wool. Therefore the parcel contains two distinct items and €6 in customs duty should be paid.

Three garments. Two tariff sub-headings. €6.

Read it again with your own catalogue in mind, because the implication has nothing to do with shipping. Your duty per order is now a function of how many distinct tariff sub-headings your product data says are in the box. Most operators cannot answer that for a multi-item order without opening something and sighing.

What was agreed, and what was not

Worth separating these, because they have been conflated everywhere, including in our own planning notes, which I have since corrected with a certain amount of muttering.

Agreed, and live. The Council gave final approval on 11 February 2026 to abolish customs duty relief for parcels valued under €150. In its place, a flat rate of €3 per item category applies, running from 1 July 2026 to 1 July 2028. After that, once the EU customs data hub is operational, normal customs tariffs are expected to replace the interim flat rate.

Not agreed. The €2 handling fee. The Council's own press release is explicit that the duty measure "is distinct from the proposed so-called 'handling fee' currently under discussion in the context of the customs reform package." No handling fee amount exists yet.

So if you have been modelling €2 per consignment, you are modelling a fee that has not been agreed while missing a duty that has been live since July. Which is an impressive way to be wrong in both directions at once.

Why this breaks the usual margin calculation

The standard way to work out contribution margin on a cross-border order is per order. Revenue, minus product cost, minus fulfilment, minus fees, minus shipping. One number in each slot.

A per-item-category duty does not fit that shape. It is not a fixed cost per order. It is not a percentage of order value. It is a count, of something that is not in your order data.

Which produces three problems worth naming.

The same basket value can carry different duty. A €60 order of three identical units is one item category, so €3. A €60 order of three different products across three sub-headings is €9. Same revenue, same weight, triple the duty. Any model treating duty as a per-order constant is wrong on exactly the orders you most want to encourage, which are the multi-line ones.

Your bundles have a cost nobody costed. If you built a multi-product bundle to lift average order value, you may have lifted duty faster than margin. Whether you did depends on whether the components share a tariff sub-heading, which is a question about commodity codes and not about merchandising.

It interacts with your variant structure. Five colourways of the same garment in the same fabric are one sub-heading. Five colourways where two are a cotton blend and three are synthetic may not be. Your listing treats them identically. Customs does not.

The equation, written out

For a cross-border order into the EU under €150, the duty component is:

€3 × the number of distinct tariff sub-headings in the consignment

So your landed contribution margin per order is:

Revenue − COGS − fulfilment − marketplace fees − shipping − (€3 × distinct sub-headings) − VAT handling

The only genuinely new term is that count, and it is the only one you cannot read off a report. Everything else arrives in a settlement file whether you ask for it or not. This one has to be derived from your product data at the moment the order is composed.

That is the whole difficulty. It is not a hard calculation. It is a calculation that needs a field most catalogues do not carry reliably, which is the commodity code, correct, per variant.

What to do about it this month

1. Get commodity codes onto your product records, per variant. Not per product. Per variant, because that is the level at which fabric and composition actually differ. If you hold one code for a product family, you hold an assumption wearing a code's clothing.

2. Count sub-headings across your top 20 multi-line basket patterns. Pull your most common combinations and count distinct codes in each. You are looking for the ones where the count is higher than you expected. Those are the baskets quietly costing more than your model thinks.

3. Re-test your bundles. For each one, count the distinct sub-headings. A bundle spanning three that sells for €45 carries €9 of duty, which is 20% of order value before anything else happens to it. That may still be the right product. It should be a decision rather than a discovery.

4. Give duty its own line in reporting. If it is absorbed into a general "shipping and import" bucket you will never see any of this. It needs its own line, counted per order, so the relationship between basket composition and duty becomes visible instead of theoretical.

5. Stop modelling the €2 fee. It is not agreed. When it is, it will be a per-consignment constant and far easier to handle than what is already live. Model what exists.

The part that is actually the point

Nothing above requires new information from outside your business. The commodity codes exist. The order data exists. The basket combinations exist. All three are in your possession right now.

What does not exist is a place where those three things are looked at together, which is why a duty that has been live since July is still being described as €3 a parcel by people paying €9 on it.

Iman, who runs strategy and growth here, puts the underlying pattern better than I do. Her line when she joined was that European sellers are chronically underserved, because tools designed for US mega-brands do not translate to our reality: different tax systems, logistics nightmares, and a market that speaks 24 languages.

This duty is that sentence with a number attached. A rule whose cost depends on a data relationship, reported by tools built for a market where the rule does not apply. The duty is not the expensive part. Not knowing which orders it lands hardest on is.


Where this goes next

FinFlow is Finnito's operator command deck. The layer where product data, channel data and margin sit in one view rather than twelve tabs, so a question like "which baskets carry three sub-headings" stops costing an afternoon.

FinFlow is not live yet. It is in active build with MVP launch in 2026. What is available today is the Founders Circle: £400 one time, 250 seats, lifetime access to FinFlow at launch and to every Finnito module after it. 250 seats, then it closes for good.

Vision Studio is live now if you would rather try something before buying into a roadmap. Five free generations, no card.


Fact base

Claim Source
Council gave final approval 11 February 2026 Council of the EU press release
Duty relief for parcels under €150 abolished ibid.
Flat rate €3 per item category ibid.
Each distinct tariff sub-heading is a separate item ibid.
Worked example: 1 silk + 2 wool blouses = 2 items = €6 ibid., quoted verbatim
Interim period 1 July 2026 to 1 July 2028 ibid.
Normal tariffs expected after the customs data hub is operational ibid.
The €2 handling fee is not agreed and remains under discussion ibid., "distinct from the proposed so-called 'handling fee' currently under discussion"

Correction to our own brief: this post was originally planned around a "€2 Union Handling Fee." That fee has not been agreed. The €3 per-item-category duty has been live since 1 July 2026. The post was rewritten around the measure that exists.

Iman's quote is paraphrased from her bio on the Finnito about page, attributed in the body. Check it reads the way she wants before publishing, since it is her line and not mine.