...
EU Customs Reform

EU PID Requirements: What D2C Sellers Need to Know

From 1 November, every B2C parcel up to €150 shipped into the EU under remote sales must carry customs product identifiers. Commission Delegated Regulation (EU) 2026/1022 sets the rule, and (EU) 2026/2108 sets the broader customs reform that puts the EU Customs Data Hub into motion. For D2C brands sourcing from China and shipping to Germany, France, the Netherlands, Italy, Spain, Poland, and the rest of the EU 27, this is a real deadline with real customs consequence: a missing or wrong PID turns a clean 5-9 day DDP air shipment into a hold at destination. 

1. What the EU PID Mandate Is and Why It Matters for D2C

A Product Identifier (PID) is a code that tells EU customs exactly what is inside a parcel, in a structured format that the new EU Customs Data Hub can process automatically. Until 1 November 2026, the EU’s 27 member states use a patchwork of national declaration systems, each asking for product description in free text. That worked when the bulk of EU imports came in pallets with full commercial invoices. It does not work for cross-border eCommerce, where a single 1.5 kg parcel might carry three different SKUs and no invoice beyond a marketplace-generated PDF.

Commission Delegated Regulation (EU) 2026/1022 introduces a 3-field PID structure for B2C remote-sales imports up to €150. Council Regulation (EU) 2026/2108, published 19 September 2026 and effective 20 September 2026, replaces the long-standing Union Customs Code (Regulation 952/2013) and brings the EU Customs Data Hub online by 1 July 2028, with all eCommerce participants fully on board by that date. The hard date for PID enforcement on B2C parcels is 1 November 2026. Before that date, PIDs are voluntary. After that date, a missing PID is an incomplete declaration, and an incomplete declaration does not clear.

For D2C brands shipping from China, the practical impact is not on the carrier or on us as the 3PL. It is on the seller’s product master. If your Shopify or Amazon catalogue does not carry the codes, your carrier or customs broker cannot submit the declaration, and the parcel sits at destination until you provide them. The fix is not complicated, but it has to happen before 1 November, not after.

2. The 3 PID Types: M-PID / NS-PID / S-PID

Each item in a B2C parcel needs up to three PIDs, depending on what your product carries. They map directly to the EU’s customs data element codes (C127 / C128 / C129), so a carrier or broker submitting your declaration already knows where each PID goes.

2.1 M-PID (C127) — Merchant PID

The Merchant PID is the seller’s own product code — the SKU or ASIN you already use in your store. For Amazon sellers, that is typically the ASIN or FNSKU. For Shopify sellers, the SKU. For multi-platform sellers, the code you treat as the primary identifier across channels. M-PID is mandatory on every item in scope, with no exception path. If your catalogue does not have a stable code per product variant, the gap is in your catalogue, not in the regulation.

2.2 NS-PID (C128) — Non-Standardised Manufacturer PID

The manufacturer’s own model or part number — sometimes called the MPN (Manufacturer Part Number), SKU at the factory, or internal catalog code. NS-PID is mandatory if the manufacturer has assigned one. If the manufacturer has not assigned a separate reference beyond the barcode, DG TAXUD guidance permits repeating the S-PID value here. Unlike M-PID and S-PID, NS-PID has no exception code — the field is either populated or the manufacturer genuinely does not have one.

2.3 S-PID (C129) — Standardised PID

The barcode printed on the product packaging: GTIN-8, GTIN-12, GTIN-13, GTIN-14, EAN-8, EAN-13, UPC-A, UPC-E, or ISBN. S-PID is mandatory if the product carries a standard barcode, and the Y081 exception code applies when the product genuinely has no barcode (custom-made, unbranded, bulk, made-to-order). The Y081 exception is an active customs data element, not an absence — sending Y081 with a barcode is a contradiction that comes back as a parcel error.

2.4 Decision tree for which PIDs to send

For each item, the workflow is short:

  • Product has a barcode? → M-PID (your SKU) + NS-PID (manufacturer’s code, if separate) + S-PID (the barcode) + spCodeNotApplicable = false
  • Product is unbranded or custom-made? → M-PID (your SKU) + NS-PID (if exists) + S-PID = empty + spCodeNotApplicable = true (claims the Y081 exemption)
  • You don’t hold the barcode but the product has one? → This is a data-sourcing task, not an exemption. Do not send true on Y081 — that is a false declaration. Omit both S-PID and spCodeNotApplicable until you source the barcode.
  • Manufacturer has no part number? → Ask the supplier to assign one. NS-PID has no exception, and after 1 November, an empty NS-PID on an in-scope item is a parcel error.

3. Who Is Affected: B2C ≤ €150 Remote Sales, B2B Exempt

The mandate is narrower than the press coverage suggests. The 1 November deadline applies to a specific transaction type, not all imports into the EU. Getting the scope right prevents a brand from spending the next two months building product master data they do not actually need.

3.1 In scope: B2C remote sales up to €150

Remote sales means business-to-consumer transactions where a non-EU seller ships directly to an EU consumer. This is the typical D2C model: a Shopify merchant in Berlin placing an order on a US-storefront, fulfilled from Shenzhen and shipped to a German address. The €150 threshold is per parcel declared value, tested on the parcel-level value you submit. If parcelValue is omitted or 0, the threshold test falls back to quantity × valuePerItem summed across all items in the parcel. A multi-item parcel where the sum exceeds €150 falls outside the PID mandate entirely.

3.2 Out of scope: B2B imports, parcels above €150, non-remote-sales flows

B2B imports — where a registered EU business is the consignee and the goods are destined for resale or further processing — are exempt from the PID mandate. Amazon FBA inbound shipments to a registered EU business are B2B. Wholesale and palletized imports to a registered EU importer are B2B. If your product is going to Amazon DE FBA via your carrier, you do not need to send PIDs on that flow (the FBA inbound uses the regular commercial invoice flow, not the B2C declaration). Likewise, parcels declared above €150 in customs value fall outside the mandate, though the carrier may still accept the PIDs voluntarily.

3.3 IOSS-registered and non-IOSS shipments

If you are registered for IOSS and your carrier files under the IOSS scheme, the declaration data structure already requires some form of product identifier (the legacy IOSS product code), and your carrier or platform handles the mapping. The new PID mandate replaces the legacy IOSS product code with the 3-field structure, and the carrier maps your SKU and barcode to M-PID and S-PID automatically. If you ship DDP without IOSS, your carrier or broker handles the full EU declaration and needs the 3 fields per item. The scope of who files the declaration does not change your responsibility to provide the data.

4. Timeline: Transition Period (Jul-Oct) and Hard Date (1 Nov)

The PID mandate has a soft period and a hard period. The soft period is the runway for data cleanup. The hard period is the point of no return. Knowing which window you are in determines whether a missing PID is an inconvenience or a customs hold.

4.1 Transition period: 1 July 2026 – 31 October 2026

From 1 July 2026, the PID data elements are live in the EU declaration schema, and carriers can accept and pass them through. The Commission has stated that no sanction applies to missing or incorrect PIDs during this window. The transition period is not a “no action needed” period — it is a “no enforcement yet” period. Parcels still clear, but the declaration completeness check is running in the background, and customs is using the data to validate the new schema. Treat the transition as a free dress rehearsal, not a free pass.

4.2 Hard enforcement: 1 November 2026 onward

From 1 November 2026, a B2C parcel up to €150 imported into the EU without the mandatory PID fields is an incomplete declaration. Customs will not release the parcel. The carrier or broker receives a parcel-level error, the parcel is held, and the seller is asked to send the missing data. There is no soft-enforcement period afterwards — the date is hard. Customs does not assess PIDs against a central product database (no such EU-level database exists yet), but it does cross-check plausibility: the PID must match the description, the HS code, the declared value, and the country of origin. A barcode that looks like it belongs to a different product category is a red flag, not a typo.

4.3 EU Customs Data Hub: full effect by 1 July 2028

Beyond 1 November 2026, the broader (EU) 2026/2108 reform brings the EU Customs Data Hub online by 1 July 2028 for eCommerce, and 1 March 2034 for all trade. The Data Hub replaces 111 national customs systems with a single submission platform, and integrates risk feeds including RASFF (Rapid Alert System for Food and Feed). For D2C brands, this is a longer-term compliance trajectory: data governance built in 2026-2027 will compound into faster clearance and lower inspection rates once the Data Hub is fully operational.

4.4 What a missing PID actually costs

For sellers who do not adapt, the operational impact is not theoretical. A held parcel in a member state warehouse costs the seller per-day storage fees (typically €5-15 per parcel per day after a 5-7 day grace period, depending on the carrier). At 90 days without resolution, the parcel is re-exported, returned, or destroyed at the shipper’s cost. For a brand doing 1,000 orders per day, even a 5% PID-related hold rate (50 parcels/day stuck) becomes a €25,000-€75,000 monthly cost line. The cost of cleaning the product master is far less.

5. What D2C Sellers Need to Prepare on Their Product Master

For most brands, the preparation is not a regulatory project — it is a data cleanup project that touches your catalogue. The data is already there in most cases; it is just not in the right field or not in the right format. Here is the four-step workflow we use with our own sellers.

5.1 Step 1: Identify which products actually ship under remote sales

Not every product you sell is in scope. A product that goes to Amazon FBA (B2B), to a wholesale customer (B2B), or in pallets above €150 (B2B high-value) does not need PIDs. Pull a 90-day export of your orders, tag each line as B2C remote sales / B2B FBA / B2B wholesale / other, and run the per-parcel value filter at €150. The subset that is B2C + ≤ €150 is your PID scope. In most catalogues, this is 60-80% of units but 20-40% of revenue — the long tail of small orders, not the bulk replenishment.

5.2 Step 2: Audit the existing product data for the in-scope set

For the B2C ≤ €150 subset, check three fields per product: (a) do you have a stable M-PID (your SKU) per product variant? (b) does the manufacturer assign a part number that you can use as NS-PID? (c) does the product carry a GTIN/EAN/UPC barcode, and do you hold it in your system? The audit produces a list of products with at least one of the three fields missing. That list is your work queue for the next four weeks.

5.3 Step 3: Source the missing codes

For products missing an M-PID, the fix is internal: assign a stable code per variant and stop reusing the same code for different products. For products missing an NS-PID, the fix is supplier outreach: ask each manufacturer to confirm or assign a part number, and store it in your supplier data. For products missing an S-PID barcode, the path depends on whether the product carries one physically. If yes, source the barcode from the supplier or a GS1 registration. If no (custom-made, unbranded, bulk), the Y081 exception applies and your declaration must explicitly claim it. Do not claim Y081 for products that carry a barcode you simply do not hold yet — that is a false declaration and a customs risk.

5.4 Step 4: Push the data to your carrier or platform

Once the product master is clean, push the data upstream. The technical surface is your carrier’s API or your marketplace platform’s product feed. For Shopify sellers, this means extending your product feed to include manufacturer part number and barcode fields beyond SKU. For Amazon sellers using FBA, the FNSKU is already in the right place, but B2C orders from your own Shopify store (if you run multi-channel) still need the same data on the Shopify side. The carrier or platform handles the mapping to the EU declaration schema; your job is to provide the source data.

6. How EU Carriers Handle PID Submission and What They Need from You

The PID mandate is a carrier-side change at the declaration layer, not a seller-side change at the catalogue layer — but the seller still has to provide the source data. Understanding the split keeps the scope of your work honest.

6.1 The carrier owns the technical submission

When a parcel is tendered to the EU by a postal operator (consolidated DDP air or rail, e.g. via 4PX / YunExpress / PostPlus) or by a private express carrier (DHL, FedEx, UPS), the carrier is the declarant. The carrier receives your parcel with the 3 PID fields populated per item (from your API call or spreadsheet), maps them to the EU’s C127/C128/C129 customs data elements, and files the declaration on your behalf. You are not filing EU customs declarations yourself unless you are a registered EU importer with a direct EORI — and most D2C sellers are not.

6.2 The carrier needs the data, formatted to the right schema

Each carrier has a slightly different API schema for PIDs. The PostPlus documentation uses skuCode / nsCode / spCode / spCodeNotApplicable. Other carriers use MPID / NSPID / SPID or equivalent. The field names differ; the underlying EU data elements (C127/C128/C129) do not. The practical implication: when you talk to your carrier or platform, ask which field names they expect, then map your product master to those field names. If you use a multi-carrier setup, the mapping is per-carrier.

6.3 What happens after customs receives the declaration

There is no real-time EU database check of PID values. Customs does not verify that the barcode you sent is registered to a real product. What customs does is cross-check plausibility: the PID must match the description, the HS code, the declared value, and the country of origin. A barcode that looks like it belongs to a different product category (a baby stroller barcode on a kitchen utensil) is a red flag, not a typo. If customs raises a discrepancy, the carrier receives a query, the carrier contacts you, and you return corrected data. The parcel is held during the query, which is where the daily storage cost comes in.

6.4 The role of your China-side fulfillment partner

At AlleasySCM, we coordinate the China-side flow for sellers shipping to the EU 27 through our 12,000+ m² network of 1 self-operated Shenzhen flagship plus 5 partner hubs in Guangzhou, Foshan, Dongguan, Huizhou, and Yiwu. We do not file EU customs declarations on your behalf — your carrier or broker does that. We do make sure that the parcel-level data structure (per-item weight, per-item value, per-item description, per-item country of origin) is complete and consistent, so that the carrier has what they need to attach the 3 PIDs per item without reconstructing data mid-flow. For sellers using our DDP air, DDP sea, and DDP rail services into Germany, France, the Netherlands, and the rest of the EU 27, this means a 5-9 day air DDP or 18-22 day rail DDP lane does not turn into a 14-21 day hold at destination because the PIDs were missing. The cost of the lane assumes the declaration clears; the cost of a hold is on top.

7. 7 Common Mistakes Sellers Make on the EU PID Mandate

Most of the mistakes are not regulation mistakes. They are data hygiene mistakes that surface in a new compliance window. The patterns we see in the China-side order data match the patterns EU customs agencies warned about in their 2026 Q3 briefings.

7.1 Treating PID as a carrier problem

The carrier files the declaration. The carrier maps your fields. But the carrier does not generate your M-PID, your NS-PID, or your S-PID from nothing. If your Shopify or Amazon catalogue has the wrong SKU on a variant, the carrier will dutifully file the wrong PID, and the parcel gets held for plausibility. The fix is upstream: the catalogue, not the carrier.

7.2 Claiming Y081 (no barcode) on products that have one

The Y081 exception is for products that genuinely do not carry a standard barcode — custom-made, unbranded, made-to-order. Using Y081 on a product that does carry a barcode (you just don’t hold the data yet) is a false declaration. Customs flags the contradiction and the parcel is held. The fix is to source the barcode, not to claim the exemption.

7.3 Reusing the same M-PID across product variants

If your SKU “BAG-001” is used for a 30L duffel in black and a 30L duffel in navy, you have one M-PID on two different products. The carrier files the same M-PID on both items, customs plausibility-check fails on the second variant, and both parcels get held. The fix is variant-level M-PIDs: one code per (size × color × material × packaging) combination.

7.4 Treating FNSKU as a substitute for M-PID on multi-channel orders

For Amazon FBA, the FNSKU is the right identifier. For multi-channel orders from your own Shopify store, the FNSKU is not always present in the order data — the carrier sees a vanilla order, not an FBA-tagged order. M-PID is your store’s SKU or ASIN, not the FNSKU. If you run Shopify alongside Amazon, map the M-PID carefully per channel.

7.5 Confusing the PID mandate with the €150 de minimis / €3 fee rules

The EU 2026/1022 PID mandate, the abolition of the €150 de minimis threshold, and the new €3 per-item fee under EU 2026/382 are three separate measures. The €150 / €3 rules cap duty liability at €150 per parcel and apply only to parcels routed through IOSS or designated postal operators. The PID mandate has no value cap and applies to every B2C remote-sales parcel regardless of value. Sellers sometimes assume that a parcel above €150 (or a parcel routed under H1 standard declaration rather than H7 low-value) is exempt from PID. It is not. The legal basis for PID sits in the supporting-document data element across H1, H6, and H7 declarations, not in the value threshold. For the full picture, see our EU customs clearance page and the China-to-DE application on our Shipping from China to Germany page.

7.6 Not coordinating the carrier API update

Carriers that serve EU remote sales have updated their API to accept the 3 PID fields. The fields stay optional until 1 November 2026, so a seller can deploy the API update the day they are ready. Sellers who wait until late October to integrate the new fields may find that their carrier’s transition period closes earlier, or that the API has a known issue they have not yet seen. Build the integration now, test against the carrier’s test environment, and validate against production in October.

8. FAQ: EU PID Questions We Hear from D2C Sellers

The EU Product Identifier (PID) mandate, introduced by Commission Delegated Regulation (EU) 2026/1022 and brought into force under Council Regulation (EU) 2026/2108, requires every item in every B2C remote-sales parcel imported into the EU to carry three customs product identifiers: M-PID (C127), NS-PID (C128), and S-PID (C129). The mandate has no value cap and applies at any parcel value. The mandate takes hard effect on 1 November 2026.

M-PID (C127, Merchant PID) is your own product code — SKU, ASIN, or FNSKU. NS-PID (C128, Non-Standardised Manufacturer PID) is the manufacturer’s model or part number. S-PID (C129, Standardised PID) is the barcode printed on the product (GTIN, EAN, UPC, or ISBN). M-PID is mandatory on every item. NS-PID is mandatory if the manufacturer has assigned one. S-PID is mandatory if the product carries a barcode; the Y081 exception code applies when it does not.

The declaration is incomplete. Customs will not release the parcel. The carrier or broker receives a parcel-level error, the parcel is held in destination storage, and the seller is asked to provide the missing data. Storage fees typically start at €5-15 per parcel per day after a 5-7 day grace period. Unresolved parcels after 90 days are re-exported, returned, or destroyed at the shipper’s cost.

Yes. The S-PID (C129) field accepts GTIN-8, GTIN-12, GTIN-13, GTIN-14, EAN-8, EAN-13, UPC-A, UPC-E, or ISBN. Send the barcode exactly as it is printed on the product, with the check digit intact and without padding. Spaces between groups are stripped, hyphens are kept (for ISBN), and the value is uppercased (which only matters for ISBN-10 X check digit).

From 1 July 2026 to 31 October 2026, the 3 PID data elements are live in the EU declaration schema, and carriers can accept and pass them through. The Commission has stated that no sanction applies to missing or incorrect PIDs during this window. The transition is a free dress rehearsal — use it to clean your product master, integrate your carrier API, and validate end-to-end. From 1 November 2026, the window closes.

Yes. PIDs are collected per item, not per parcel. A parcel with three different products carries three sets of PID data, one set per item. Two of the same product still need one set of PIDs (the carrier will count quantity within the same item).

The carrier or broker receives a customs query, contacts you with the parcel number and the reason, and the parcel is held pending your response. You return corrected item data, the carrier amends or re-lodges the declaration, and the parcel is released on acceptance. Each parcel travels under its own declaration, so a hold attaches to that parcel only — it does not block the consolidated manifest or the MAWB. 

Both regulations are part of the same EU customs reform wave, but they cover different data requirements. EU 2026/1022 requires product identifiers (M-PID / NS-PID / S-PID) on B2C remote-sales parcels of any value. EU 2026/382 introduces a per-commodity fee (currently €3) on certain low-value imports routed through IOSS or designated postal operators — that fee is capped at €150 per parcel. The same parcel can be subject to both. The fee is collected by your carrier at the per-item level; the PID data is submitted in the declaration. The fee is independent of the PID mandate.

The mandate is EU-wide, applied per member state under the shared (EU) 2026/2108 framework. From 1 November 2026, all 27 member states enforce the same rule on every B2C remote-sales parcel regardless of value. National implementation differences (language of declaration form, additional national codes, customs broker requirements) are governed by each member state and are subject to official EUR-Lex guidance and may continue to evolve. For D2C brands selling into Germany, France, and the Netherlands — the three largest EU destinations for China-origin eCommerce by parcel volume — the enforcement timeline is consistent with the rest of the EU.

Contact Us

Send Us Your Shipping Need

China-to-EU DDP shipments for Amazon FBA sellers, Shopify merchants, TikTok Shop brands, and Walmart Marketplace vendors. Specializes in EU 2026/382 reform compliance, EU 2026/2108 customs reform impact on D2C sellers, the per-commodity €3 fee structure for low-value imports, and the LCL/FCL cost stack for FBA replenishment.









    What do you need?
    Select all services you're interested in



    5000 / 5000