Model the EU's New €3 Parcel Duty Without Miscounting It
Calculate the EU's temporary €3 duty per declaration line on parcels up to €150, compare landed cost before and after 1 July 2026, and plan tracker columns.

The EU ended its €150 customs-duty exemption for parcels on 1 July 2026. Under Council Regulation (EU) 2026/382, a business-to-consumer distance sale of imported goods with a consignment intrinsic value of €150 or less now carries a temporary €3 customs duty per tariff-classification item, and customs systems apply it to each qualifying customs-declaration line. It is not €3 per parcel and not €3 per physical unit: five T-shirts under one classification pay €3, three T-shirts plus a watch pay €6. Import VAT was already due on these goods and is unchanged. A spreadsheet that models this correctly checks eligibility first, calculates duty at the declaration-line grain, and keeps customs duty in a separate column from VAT and fees. The rules and dates are set out in the European Commission’s official implementation guidance.
Enter the consignment value, the number of distinct classifications and the buyer type; the before/after landed cost updates beside the inputs.
Temporary €3 duty: landed cost before and after 1 July 2026
Optional: physical units and VAT rate
| Line | Before 1 Jul 2026 | From 1 Jul 2026 |
|---|---|---|
| Goods value | €60.00 | €60.00 |
| Customs duty | €0.00 | €3.00 |
| Import VAT | — | — |
| Landed cost | €60.00 + VAT | €63.00 + VAT |
Per-unit misreading: 5 units × €3 = €15.00, which is €12.00 too high. VAT was due before and after; add a rate to see it.
Sources: Council Regulation (EU) 2026/382; Commission guidance and worked examples, June 2026. Duty relief applied to values of €150 or less before 1 July 2026. VAT is an estimate (~) on goods value plus duty; the real taxable amount can include transport and other charges. Broker, carrier, member-state and any Union handling fees are not included.
What Changed on 1 July 2026
Regulation 2026/382 abolished threshold-based customs-duty relief and created a temporary €3 duty for qualifying distance sales of imported goods to consumers where the consignment’s intrinsic value is €150 or less. The regime applies whether import VAT is handled through IOSS, the Special Arrangements or the standard import-VAT procedure, subject to the eligibility conditions and exceptions.
This is a customs-duty change, not a VAT change. Low-value imported goods were already subject to VAT; IOSS is a mechanism for collecting and reporting VAT on eligible distance sales. UPS’s implementation summary draws the same line between the former customs-duty relief and the continuing VAT and customs-declaration requirements. Keep customs_duty and import_VAT as separate fields rather than folding them into an unexplained tax total.
The temporary regime is intended to run until 1 July 2028. Normal tariffs based on the goods’ classification are then scheduled to apply alongside the planned EU Customs Data Hub, although the temporary arrangement may be extended if that infrastructure is not operational by the deadline.
| Date | Status | Event |
|---|---|---|
| 11 February 2026 | Approved | Council gave final approval to the new small-parcel customs rules |
| 1 July 2026 | Effective | Threshold-based relief ended and the temporary duty began |
| 1 November 2026 | Scheduled | Product-identifier requirements become mandatory |
| 1 July 2028 | Planned | Temporary duty due to give way to normal tariff treatment, subject to extension |
The approval date, the 1 July start and the planned 2028 transition are documented in the Council’s final-approval announcement. Avalara reports that implementation began without a grace period. That is useful context, but a tracker should cite current EU materials as its primary authority.
The €150 threshold has not become irrelevant. It no longer grants customs-duty relief, but it still defines the scope of the temporary regime and remains relevant to VAT procedures such as IOSS.
Why €3 Per Parcel Is the Wrong Formula
The assessment unit is a tariff-classification item, not the parcel and not every physical unit inside it. An item can comprise one or more goods sharing the relevant tariff classification, description and, where applicable, origin. Because customs systems calculate the charge from declarations, the €3 is operationally applied to each qualifying declaration line.
| Consignment contents | Classifications | Qualifying lines | Duty |
|---|---|---|---|
| Five T-shirts sharing one classification | 1 | 1 | €3 |
| Three T-shirts and a watch in different classifications | 2 | 2 | €6 |
These figures follow the Commission’s official worked examples. Multiplying five T-shirts by €3 overcounts the first consignment by €12; charging one €3 for the whole mixed consignment undercounts the second by €3.
The model has to keep these entities distinct:
- Consignment: the goods covered by the shipment transaction.
- Parcel: the physical package; logistics metadata, not the assessment unit.
- Declaration: the customs filing for the import.
- Declaration line: the operational record the temporary duty is applied to.
- SKU: a merchant inventory identifier, which is not necessarily a customs classification.
- Physical quantity: the number of units represented by a line or SKU record.
- Tariff classification: the HS, CN or TARIC code required for the declaration.
Declaration type changes classification granularity. H7 uses six-digit HS classification, H6 uses eight-digit Combined Nomenclature classification and H1 uses ten-digit TARIC classification. Goods that share a line under one declaration type may therefore split under another. The Commission’s Access2Markets guidance also states that artificial combinations intended to reduce declaration lines are prohibited.
Once eligibility and declaration structure are settled, the calculation is one sentence: expected temporary duty equals the number of qualifying declaration lines multiplied by €3. A planning model built from product classifications can estimate the charge before the declaration exists, but the filed declaration line is the authoritative grain. Parcel count and physical quantity stay in the sheet as descriptive fields; neither replaces the line-level assessment.
Which Consignments Get the €3 Treatment
The following is an initial triage model, not a complete legal test. Eligibility can depend on the statutory distance-sale conditions, supplier involvement in dispatch or transport, declaration type, origin treatment and supporting evidence. Unresolved cases go to customs review rather than through an automated formula.
| Case | Basic facts | Additional status | Initial treatment |
|---|---|---|---|
| A | B2C distance sale; recipient not VAT registered | Value ≤€150; no preference claimed | Candidate for €3 per qualifying line |
| B | B2C distance sale; recipient not VAT registered | Value ≤€150; IOSS, Special Arrangements or standard VAT | Candidate, subject to full eligibility checks |
| C | B2B import; recipient VAT registered | Value ≤€150 | Outside temporary B2C treatment; ordinary duty may apply |
| D | Distance-sale status unclear | Value ≤€150 | Customs review |
| E | B2C distance sale | Preferential origin or customs-union treatment claimed | Exception and evidence review |
For a reproducible dataset, keep each decision variable in its own column: transaction_type, recipient_VAT_status, distance_sale_status, consignment_intrinsic_value, VAT_procedure, IOSS_status, preferential_origin_status, expected_treatment and review_flag. Case D would carry a review_flag of distance_sale_unresolved; case E would carry origin_evidence_required. Cases A and B resolve to candidate_temporary_duty, case C to ordinary_tariff_review.
IOSS does not switch the temporary customs duty off. Qualifying consignments remain within the regime under IOSS, the Special Arrangements or standard import VAT. In the other direction, DHL describes B2B imports addressed to VAT-registered recipients as outside the temporary B2C treatment and identifies the customs declarant as responsible for the duty in its operational guidance.
Do not infer the customs declarant from IOSS participation. Record the party identified under the actual customs arrangement. An authorized representative, carrier or broker may submit the declaration or advance the payment and recover it contractually, but those roles should not be assumed from VAT status.
Preferential-origin and customs-union cases need a status such as claimed, validated, rejected or review_required. Country of origin by itself does not prove entitlement; the applicable arrangement and its supporting evidence must be checked.
A Declaration-Line Schema for the Tracker
Use the customs-declaration line as the canonical duty-calculation row. Store consignment-level eligibility and value separately, then connect line records through stable keys. If several SKUs map to one declaration line, use a bridge table rather than duplicating the €3 duty on every SKU row.
The declaration-line header groups into six blocks. Keys: consignment_id, declaration_id, declaration_line_id. Goods: product_description, quantity, line_value, consignment_intrinsic_value, currency, country_of_origin, HS_CN_TARIC_code, declaration_type. Eligibility: transaction_type, recipient_VAT_status, distance_sale_status, VAT_procedure, IOSS_status, preferential_origin_status, eligible_for_temporary_duty. Money: duty_amount, customs_duty, import_VAT, broker_fee, carrier_fee, proposed_EU_handling_fee, member_state_fee. Identifiers: merchant_product_id, manufacturer_product_id, standardized_product_id, standardized_id_not_available. Provenance: source_url, source_type, publication_date, effective_from, effective_to, legal_status, last_checked, caveat, review_flag.
Store the classification column as text. Tariff codes can begin with a zero, and a numeric column silently drops it; see CSV Leading Zeros: Preservation Checklist.
The SKU bridge has three columns: declaration_line_id, SKU and quantity_allocated. The hierarchy runs consignment to declaration to declaration line; each line carries its classification and origin, its calculated duty, and one or more SKU bridge records.
Define the monetary fields explicitly:
line_valueis the value allocated to that declaration line.consignment_intrinsic_valueis the consignment-level value used for the regime’s threshold test.duty_amountis the model’s calculated temporary line duty.customs_dutyis the amount recorded from the customs or brokerage record, when available.import_VAT,broker_fee,carrier_fee,proposed_EU_handling_feeandmember_state_feeremain independent amounts.
Merchant and non-standardized manufacturer identifiers become mandatory for covered import distance sales on 1 November 2026. A standardized manufacturer identifier should be supplied when one exists, with an explicit “not available” indicator recording its absence. The deadline and identifier structure are described in the Access2Markets guidance cited above. A timing-aware check flags a row as missing_merchant_product_id when the effective date is on or after 1 November 2026, the row is a covered import distance sale and merchant_product_id is blank.
The provenance fields turn the sheet into a policy tracker. source_url and source_type identify the authority; publication_date records when the source appeared; effective_from and effective_to bound the rule’s applicable period; legal_status distinguishes effective, scheduled, proposed and superseded records; last_checked records the latest review; caveat preserves exceptions.
The proposed Union handling fee is separate from the enacted €3 customs duty. The Commission’s guidance described its amount and start date as unresolved, so it stays marked proposed and excluded from enacted-duty totals unless a later authoritative measure establishes otherwise.
Worked Dataset: One Parcel, Two Different Totals
This synthetic dataset contains no real customers, tariff codes, VAT rates or order identifiers. It has three declaration-line records, a SKU bridge and a consignment rollup.
Declaration-Line Records
| Consignment / line | Contents | Eligibility inputs | Line duty |
|---|---|---|---|
| SYN-A / A-L1 | Five T-shirts; one classification | B2C, ≤€150, eligible, H7 | €3 |
| SYN-B / B-L1 | Three T-shirts; one classification | B2C, ≤€150, eligible, H7 | €3 |
| SYN-B / B-L2 | One watch; different classification | B2C, ≤€150, eligible, H7 | €3 |
SKU-to-Line Bridge
| Declaration line | Synthetic SKU | Quantity allocated |
|---|---|---|
| A-L1 | TSHIRT-BASIC | 5 |
| B-L1 | TSHIRT-BASIC | 3 |
| B-L2 | WATCH-BASIC | 1 |
| B-L2 | WATCH-PACKAGING-REF | 0 |
The fourth bridge row shows that an internal reference can attach to a declaration line without generating another duty amount. Duty is stored only on the declaration-line table.
Consignment Rollup
| Consignment | Physical quantity | Qualifying lines | Total duty |
|---|---|---|---|
| SYN-A | 5 | 1 | €3 |
| SYN-B | 4 | 2 | €6 |
The formulas are short. Line duty is 3 if eligible_for_temporary_duty is true and 0 otherwise. Consignment duty is the sum of line duty across rows sharing the same consignment_id. That reproduces the Commission’s classification-based examples exactly.
Before applying the line formula, validate classification, origin, consignment intrinsic value, transaction type, recipient VAT status, distance-sale status and declaration type. After 1 November 2026, also validate the required product identifiers. A missing or unresolved input should produce a review state, not a number: if classification is blank, origin is unresolved, consignment intrinsic value is blank, transaction type is unknown, recipient VAT status is unknown or distance-sale status is unclear, set review_flag to review_required. That stops a tidy €3 or €6 from hiding an eligibility problem.
Publish the Tracker Without Exposing Shipment Data
Keep the private operational file separate from the public policy tracker. The private file can hold declarations, internal SKUs, commercial values and the evidence compliance work needs. The public version uses only synthetic, aggregated or deliberately anonymized records, and excludes customer names and addresses, real order, consignment and declaration identifiers, contact details and account credentials, IOSS credentials, commercially sensitive pricing or sourcing terms, and any customs document that could identify a customer or trading partner.
A finished sheet can be published with TablePage as a public interactive data page, so readers can explore the policy dataset without opening the operational workbook. Fields worth exposing for filtering or comparison: effective date, legal status, B2C or B2B status, IOSS status, origin, declaration type, qualifying-line count, expected duty and review status.
Add a terminology crosswalk to the public version:
| Term | Meaning in the tracker | Modeling treatment |
|---|---|---|
| Physical unit | One individual product | Store as quantity |
| Item or item category | Goods sharing relevant classification attributes | Map to the applicable line |
| Tariff subheading | Classification distinguishing goods categories | Preserve code and system |
| Declaration line | Operational record receiving the charge | Use as calculation row |
| Parcel | Physical package | Keep as logistics metadata |
Prioritize EU regulations and current Commission or Council guidance for legal status, scope and dates. DHL, Avalara and other carrier or compliance pages are useful for attributed workflow observations, but they do not override official EU material.
Maintain a dated change log covering the 1 July 2026 effective date, the 1 November 2026 product-identifier requirement, any authoritative decision on a Union handling fee, any verified member-state fee, changes to declaration guidance, and confirmation or extension of the planned 1 July 2028 transition.
The rule cannot be modeled with one row per parcel and a blanket €3 formula. Classify eligibility first, calculate at the declaration-line grain, keep customs duty separate from VAT and other charges, preserve dated provenance and legal-status fields, and publish only the non-sensitive version of the table.