EU product identifiers (M-PID, NS-PID, S-PID) for Shopify stores
The EU product identifiers are up to three codes for each product in a parcel: the M-PID (your own product code, in Shopify the SKU), the NS-PID (the manufacturer's reference) and the S-PID (a standard barcode such as a GTIN, or the exception Y081 when there is none). From 1st November 2026 every product you send to a shopper in the EU from outside the EU in a parcel worth up to EUR 150 is declared to customs with them. Here is what each one is, where it lives in your Shopify store and what to do before the deadline.
Who needs them
Stores that sell to consumers in the EU and ship from outside it, for example from the UK, the United States or China: what the European Commission calls distance sales of imported goods. The requirement covers parcels worth up to EUR 150: the Commission's guidance of 5th October 2026 says so, and the Commission is amending the rule's annex to make it explicit. Sales between businesses are in principle not concerned. Your carrier, postal operator or customs agent files the customs declaration, so they will ask you for the identifiers. Parcels that stay inside the EU have no import declaration.
Key dates
- 1st July 2026: a temporary customs duty of EUR 3 per item applies to parcels worth up to EUR 150, until 1st July 2028. Product identifiers can be given voluntarily.
- 1st November 2026: product identifiers are required for distance sales of imported goods in parcels worth up to EUR 150, and customs start enforcing them. A Union handling fee of EUR 2 per item has applied since the same day, on parcels of any value (Delegated Regulation (EU) 2026/2152).
The three identifiers
| On your product | Customs call it | In Shopify |
|---|---|---|
| Your product code Your own code for the product. | M-PID | The variant's SKU. Every variant gets its own. |
| The maker's reference A model or part number from whoever makes the product. If you make it, it is yours. | NS-PID | An NS-PID barcode, after the product barcode (a variant metafield when there is none). |
| The barcode An EAN, UPC or ISBN, when the product has one. | S-PID | The variant's barcode. No barcode? The declaration carries the exception Y081. |
| The customs (HS) code What the product is. The first six digits are the same worldwide. | HS code | The HS code field on each variant. |
| Made in Where the product was made, not where you ship it from. | Origin | The country of origin field on each variant. |
M-PID (merchant product identifier, customs data element C127)
The code you, the seller, give the product. In Shopify it is the variant's SKU: give every variant its own, and use a real code rather than a placeholder such as N/A.
NS-PID (non-standardised manufacturer product identifier, customs data element C128)
The reference the manufacturer, producer or supplier gives the product, such as a model or part number. Since October 2026, Shopify has a barcode type for it, NS-PID, so it can sit on the variant after the product barcode. Where none exists, the manufacturer is expected to assign one, and no particular format is required: if you make the product, that is you. The Commission also accepts the barcode (S-PID) being used as the NS-PID.
S-PID (standardised manufacturer product identifier, customs data element C129)
A code that follows an international standard: a GTIN such as an EAN or UPC barcode, or an ISBN for books. In Shopify it is the variant's barcode. Not every product has one: when none exists, the declaration carries the exception code Y081 instead.
When one line of a declaration groups several different products, the identifiers of each product are reported.
Examples: what goes where
| Product | M-PID (your SKU) | NS-PID (the maker's reference) | S-PID (the barcode) |
|---|---|---|---|
| Stoneware mug, bought from a supplier | MUG-SAG | OC-MG-01, the supplier's model number | 2009871000254 |
| Oak chopping board, made by you | OAK-CB-SMA | OC-CB-01, your own reference: you are the maker | None: the exception Y081 |
| Brass desk lamp, bought from its manufacturer | LAMP-BR-01 | BR-DL-220, the manufacturer's model number | 2009871000049 |
Demo data, not real products. Your own values come from your products and suppliers.
How they appear in the customs declaration
The declaration carries each identifier in its own data element: C127 for the M-PID, C128 for the NS-PID and C129 for the S-PID. When no S-PID exists, the exception code Y081 is entered instead (Dutch Customs' guidance sets this out). You do not fill in the declaration yourself: your carrier or customs agent does, from what you give them.
HS code and country of origin
Customs also need each product's HS code and country of origin. The HS code classifies the product (its first six digits are the same worldwide) and customs use it to group the goods in a parcel into items for the EUR 3 duty and the EUR 2 handling fee. The country of origin is where the product was made, not where you ship it from. Shopify has a field for each on every variant. Read more: HS codes for Shopify stores and country of origin on Shopify.
The EUR 2 handling fee and what counts as an item
Since 1st November 2026, the EU also charges a Union handling fee of EUR 2 per item on these imports (Commission Delegated Regulation (EU) 2026/2152 of 21st September 2026). Unlike the product identifiers and the EUR 3 duty, it applies whatever the parcel's value, and it is not temporary: on a parcel worth up to EUR 150 it comes on top of the EUR 3 duty. An item is the goods in a parcel that share the same tariff classification, description and, where it is declared, country of origin: two identical pens are one item, a pen and a notebook are two. The duty and the fee are charged per line of the customs declaration, whatever the quantity. Your carrier or customs agent has the last word on how this applies to your parcels. Worked examples.
Getting ready in Shopify
- Give every variant its own SKU.
- Record the manufacturer's reference for every variant: the maker's model or part number, your own reference if you make the product, or the barcode.
- Add the barcode wherever the product has one and check its digits. Note the products that have none, so your files can carry the exception Y081.
- Fill in the HS code (at least 6 digits) and the country of origin for every variant.
- Ask your carrier or shipping platform how it wants to receive the identifiers: through its API, on the commercial invoice or in an upload file.
The same list, with a step for each: checklist for Shopify stores. A spreadsheet to collect the values: free CSV template.
What carriers have published so far
As of 2nd November 2026: FedEx has an EU guide with a header for each identifier and asks for NO where there is no barcode; UPS says where each of its tools takes the identifiers; DHL Express takes them in the shipment data; Royal Mail Click & Drop asks for a Product SKU and a Non-standardised Manufacturer ID for each item. Shipmondo took the three identifiers through its API when we last looked (25th September 2026). Check with yours, as this is changing quickly. Carrier by carrier.
All the guides
- EU customs changes in 2026: what applies to Shopify stores
- Is there a grace period for EU product identifiers?
- The EU €2 handling fee: per item or per parcel?
- What is NS-PID?
- No barcode? The Y081 exception
- Checklist for Shopify stores
- How to add an NS-PID barcode in Shopify
- Can't buy a Shopify shipping label to the EU? The missing identifier
- Customs description for EU parcels: what Shopify sends, and how to fix it
- HS codes for Shopify stores shipping to the EU
- Country of origin on Shopify: what to enter for EU customs
- Bulk edit HS codes and country of origin
- EU parcel held or returned? Check your product identifiers
- What to send your carrier from 1st November 2026
- FedEx and the EU product identifiers
- Royal Mail Click & Drop: SKU and manufacturer ID for EU parcels
- Free EU product identifier CSV template
Common questions
When do EU product identifiers become mandatory?
On 1st November 2026. From that day, products sold to consumers in the EU and shipped from outside the EU in parcels worth up to EUR 150 are declared with up to three product identifiers, and customs start enforcing it. They could be given voluntarily from 1st July 2026.
What is a product identifier in EU customs?
A code that tells customs which product is in a parcel. There are up to three: the M-PID (your own product code), the NS-PID (the manufacturer's reference) and the S-PID (a standard barcode, such as a GTIN).
What does PID mean in shipping?
PID is short for product identifier. In the EU customs rule it comes in three forms: M-PID, NS-PID and S-PID.
Do I need a barcode to ship to the EU?
No. Not every product has one. When no standard barcode exists, the declaration carries the exception code Y081 (FedEx asks for the word NO in its S-PID column). Read about the Y081 exception
Who files the customs declaration?
Your carrier, postal operator or customs agent files it, so they will ask you for the identifiers. What to send your carrier
Does the rule apply to parcels that stay inside the EU?
No. Parcels that stay inside the EU have no import declaration, so the rule does not apply to them. Sales between businesses are in principle not concerned either.
Do the identifiers apply to parcels worth more than EUR 150?
The Commission's guidance of 5th October 2026 says the requirement applies to parcels with an intrinsic value not exceeding EUR 150. The EUR 2 handling fee is the part that applies whatever the parcel's value. The EUR 2 handling fee
What are the new EU customs rules for 2026?
Since 1st July 2026 a temporary customs duty of EUR 3 per item applies to parcels worth up to EUR 150, until 1st July 2028. From 1st November 2026 the product identifiers are required, and a Union handling fee of EUR 2 per item has applied since that day (Commission Delegated Regulation (EU) 2026/2152). The 2026 changes on one timeline
Is Delegated Regulation 2026/1022 dated 30th April or 30th June 2026?
30th April 2026. The Regulation was published in the Official Journal on 1st July 2026 with 30th June in its title; a corrigendum published on 3rd July 2026 corrected the date, in the title and in the signature, to 30th April.
Check your catalogue
PIDReady is a Shopify app that checks every variant for the three identifiers, the HS code and the country of origin, helps you fill the gaps one by one or in bulk, and downloads a file for your carrier. The free plan does every fix, for any size of store.
Questions about the rule, app or no app? Email support@pidready.com: we reply within one working day.
More guides
Sources
- FedEx, EU product identifier guide
- Dutch Customs, including product identifiers in your e-commerce declaration
- Commission Delegated Regulation (EU) 2026/1022 of 30th April 2026 (EUR-Lex). It was published in the Official Journal on 1st July 2026 with 30th June in its title; the Official Journal's corrigendum of 3rd July 2026 corrected that date to 30th April.
- Commission Delegated Regulation (EU) 2026/2152 of 21st September 2026 (EUR-Lex): the Union handling fee is EUR 2 per item. Published in the Official Journal on 22nd October 2026; it applies from 1st November 2026.
- European Commission, guidance on the temporary EUR 3 customs duty and the Union handling fee, version of 5th October 2026