EU product identifiers (M-PID, NS-PID, S-PID) for Shopify stores
Updated 25 September 2026. A plain-English summary of the published rules, not legal advice: your carrier or customs agent has the last word.
From 1 November 2026, every product you send to a shopper in the EU from outside the EU is declared to customs with up to three product identifiers. 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 all such goods, not only parcels worth up to EUR 150. 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
- 1 July 2026: a temporary customs duty of EUR 3 per item applies to parcels worth up to EUR 150, until 1 July 2028. Product identifiers can be given voluntarily.
- 1 November 2026: product identifiers are required for all goods sold in distance sales of imported goods.
The three identifiers
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. Shopify has no field for it, so stores keep it in a variant metafield (PIDReady uses custom.ns_pid). 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.
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. 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.
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.
What carriers have published so far
As of 25 September 2026: FedEx has an EU guide with a column for each identifier and asks for NO where there is no barcode; Shipmondo takes the three identifiers through its API; DHL Express and UPS have explained the rule but not published an upload template; Royal Mail Click & Drop asks for a manufacturer reference for each item on an order. Check with yours, as this is changing quickly.
Check your catalogue with PIDReady
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 checks your whole catalogue. More about PIDReady.