EU De Minimis & Product Identifier Changes

To help you maintain compliance with updated European Union regulations, this guide covers the removal of the €150 duty-free threshold for B2C shipments and the mandatory product identifier requirements for customs clearance in Metapack.

EU De Minimis Changes

Effective July 1, 2026, the European Union has removed the €150 duty-free threshold. Qualifying B2C shipments valued at €150 or less, originating outside the EU and destined for an EU member state, are subject to a flat €3 customs duty per unique HS code.

This requirement applies to shipments that:

  • Originate outside the European Union

  • Are shipped to an EU member country

  • Have a declared value of €150 or less.

Important Compliance and Exemption Notes

  • B2B Exemption: This duty, and the Product Identifiers requirement below, only apply to business-to-consumer (B2C) shipments, where the recipient is not VAT-registered in the destination country. Business-to-business (B2B) shipments (VAT-registered recipient) are not subject to either requirement.

  • Customs Risk: Providing complete and accurate PID data helps ensure smooth customs clearance. Missing or incomplete data may lead to processing delays, holds, or shipments being returned by customs authorities.

Implementation

Pass the shipment type in the <ns2:movementIndicator> field at the consignment level:

Movement Indicator

API Code

Use for

B2B

b2b

Business-to-business shipments

B2C

b2c

Business-to-consumer shipments

C2B

c2b

Consumer-to-business shipments

C2C

c2c

Consumer-to-consumer shipments

Example

The following XML snippet passes B2C in the <ns2:movementIndicator> element within the consignment block for a business-to-consumer shipment:

XML

<ns2:consignment>
    <ns2:movementIndicator>B2C</ns2:movementIndicator>
</ns2:consignment>

Product Identifiers Compliance

Required as of November 1, 2026, every product item in a B2C shipment to the EU, regardless of its value, must carry product identification data so customs authorities can identify the precise items being imported.

In MetaPack SOAP XML, product identifiers are passed within the <ns2:movementIndicator> element inside each product object.

The following table details the product identifier fields supported in MetaPack SOAP XML:

MetaPack SOAP Field

Description

Type / Enum

<productCode>

Internal SKU or product code (at the product level).

String

<manufacturerProductId>

The primary manufacturer identifier (GTIN, UPC, EAN, MPN, or SKU).

String

<manufacturerProductIdType>

The type code for manufacturerProductId.

Enum: gtin, ean, upc, isbn, mpn, sku, undefined

<manufacturerNsProductId>

An extra non-standard manufacturer part or model number.

String

Variant-Level Requirements

Identifiers must be assigned per distinct product variant (color/size combination). Lot/batch numbers will be rejected.

Complete MetaPack SOAP Example

The sample below demonstrates a complete MetaPack SOAP payload featuring the <ns2:movementIndicator> and <ns2:compliance> elements:

XML

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                  xmlns:ns2="http://metapack.com/shipping">
   <soapenv:Header/>
   <soapenv:Body>
      <ns2:CreateConsignmentRequest>
         <ns2:consignment>
            <!-- 1. Movement Indicator -->
            <ns2:movementIndicator>B2C</ns2:movementIndicator>
            <ns2:incoterm>DDP</ns2:incoterm>
            <ns2:parcels>
               <ns2:parcel>
                  <ns2:weight>0.236</ns2:weight>
                  <ns2:products>
                     <ns2:product>
                        <ns2:productCode>8379892</ns2:productCode>
                        <ns2:description>Test Product 1</ns2:description>
                        <ns2:quantity>1</ns2:quantity>
                        <ns2:unitValue>65.00</ns2:unitValue>
                        <ns2:currency>EUR</ns2:currency>
                        <ns2:countryOfOrigin>GB</ns2:countryOfOrigin>
                        <ns2:harmonizedProductCode>95134569</ns2:harmonizedProductCode>
                        
                        <!-- 2. Product Compliance Block -->
                        <ns2:compliance xsi:type="ns2:Compliance">
                           <ns2:manufacturerProductId xsi:type="soapenc:string">0123456789012</ns2:manufacturerProductId>
                           <ns2:manufacturerProductIdType xsi:type="soapenc:string">gtin</ns2:manufacturerProductIdType>
                           <ns2:manufacturerNsProductId xsi:type="soapenc:string">NS-PROD-001</ns2:manufacturerNsProductId>
                        </ns2:compliance>
                     </ns2:product>
                  </ns2:products>
               </ns2:parcel>
            </ns2:parcels>
         </ns2:consignment>
      </ns2:CreateConsignmentRequest>
   </soapenv:Body>
</soapenv:Envelope>

Carrier Readiness

Last updated: 30 September 2026

These carriers are ready to accept the movement indicator and product identifier data described above:

  • Starlinks

  • UPS

We're rolling out support to more carriers in stages, and we'll update this list as each one goes live.

If your carrier isn't listed yet, you can start preparing your integration now with the <ns2:movementIndicator> and <ns2:compliance> elements fields in your requests so you're ready when support is added.