Shopify Adds EU Product Identifiers to Shipping Labels
Contents
01Shopify Adds EU Product Identifiers to Shipping Labels02How it works03Examples / Use cases04What this means for UK merchants05Practical considerations06FAQShopify Adds EU Product Identifiers to Shipping Labels
Released on 24 October 2026, a Shopify update adds the product identifiers the EU requires on low-value parcels from 1 November 2026 to customs documents for labels bought through Shopify Shipping and Managed Markets, and stops EU labels being bought for items that are missing them. Read the Shopify Changelog release note here.
The deadline is this Sunday. From 1 November, every item in a parcel sent to a customer in the EU from outside the EU and worth €150 or less needs product identifiers on its customs declaration. Shopify's Help Center says a parcel without them can be held or rejected at customs, and the merchant might be charged return-to-origin fees. For stores shipping from Great Britain to customers in France, Germany, Ireland or anywhere else in the EU, that turns a product data job into an urgent one. Shopify has chosen to stop the problem before it reaches customs by refusing to sell a label until the data is there. That protects the parcel, but it can also stall a dispatch queue.
The requirement is part of the EU's customs reform, the same package that ended duty-free treatment for low-value imports and introduced a flat €3 duty per item from 1 July 2026, which we covered in what the EU 3-euro customs duty means for Shopify merchants. The European Commission's guidance announcement says product identifiers become mandatory from 1 November 2026, after being voluntary from 1 July, and that their job is to help customs authorities detect and block unsafe or non-compliant goods.
How it works
EU customs asks for three identifiers for each item. The EU's Access2Markets service lists them with their declaration codes: the merchant product identifier (M-PID, code C127), the non-standardised manufacturer product identifier (NS-PID, code C128) and the standardised product identifier (S-PID, code C129). The first two are mandatory in all cases. The S-PID is needed where one exists, and where it does not, code Y081 must be declared to say so. The Commission's summary is blunt about the purpose: a generic product description will no longer be enough.
Shopify maps each identifier to data a store already holds. The M-PID is the product variant's ID, so there is nothing to add. The S-PID is a barcode issued under an international standard (GTIN, EAN, UPC or ISBN), entered in the variant's Barcodes section with the matching barcode type. A barcode saved with the Custom type also counts, but only if it is a valid GTIN of 8, 12, 13 or 14 digits. The NS-PID is the manufacturer's model number, part number or style code, saved as a barcode with the NS-PID type. If a variant has no NS-PID barcode, Shopify uses another identifier in this order: the standardised barcode, any other barcode, the SKU and finally the variant ID. In practice, a variant with a GTIN or a SKU already meets the NS-PID requirement on Shopify's side.
For products with no standardised barcode at all, there is a declaration. It sits in the product's Shipping section under More details, where an EU customs declaration setting called Has no standardized identifier can be switched on for a product, or for each variant. That is the Y081 statement customs expects. Some goods are exempt altogether, including unprocessed agricultural and perishable goods in HS chapters 01 to 15, certain handmade and artisanal goods, and antiques, collectibles, works of art, stamps and coins. Shopify applies the exemption from the variant's HS code, and merchants cannot mark a product as exempt themselves.
The identifiers are saved once per variant and reused on every label and customs declaration for it. When a label for an EU parcel is bought in the Shopify admin, they are added to the customs declaration and sent to the carrier. According to Shopify's Help Center page on adding product identifiers for EU shipments, from 1 November a label cannot be bought if any item in a parcel worth €150 or less has no S-PID and no declaration. It can be fixed on the spot through Edit customs declaration on the label page, and identifiers entered there for an item linked to a product are saved back to that product. Changes at scale go through a CSV import or the bulk editor.
Examples / Use cases
A homeware retailer reselling branded kitchen appliances is the simplest case. The manufacturer's EAN is printed on every box, so the job is making sure it sits in each variant's Barcodes section with the EAN type, rather than in a SKU field or a supplier spreadsheet. Once it does, Shopify sends it as the S-PID and, with no separate NS-PID entered, uses it for the NS-PID too.
An own-label clothing brand is the case most likely to be caught out. Many small brands never registered for barcodes, so their variants carry internal SKUs and nothing else. Those products genuinely have no standardised identifier, so the declaration is the right route: switch on Has no standardized identifier for each variant that ships to the EU, and Shopify falls back to the SKU for the NS-PID. The alternative is to register for barcodes with GS1 UK, which is a bigger commercial decision with uses beyond customs. What a brand cannot do is type its internal codes into the barcode field with the Custom type and expect them to count, because Shopify only treats a Custom barcode as an S-PID when it is a valid GTIN.
A ceramicist or jeweller selling handmade pieces may fall inside the handmade and artisanal exemption, but the exemption follows the HS code, not the product description. If the code on the variant does not place it in an exempt category, the label page will still ask for an identifier or a declaration. A speciality food store faces the same question with HS chapters 01 to 15. In both cases the place to start is the HS code on each variant, which Shopify lists as the next step after identifiers.
A store that dispatches through a third-party logistics provider, or buys labels in a separate shipping app, will not see Shopify's label block at all. The changelog says merchants buying labels outside Shopify should ask their carrier, broker or fulfilment partner how to provide the identifiers. The data still comes from the product catalogue, so the admin work is the same.
What this means for UK merchants
A parcel from Great Britain to a consumer in the EU is an import into the EU, so every UK Shopify store selling direct to EU customers is in scope, whatever its size. The rules apply to distance sales of imported goods. The Commission's guidance defines these precisely: sales to end consumers, and to some business buyers whose EU purchases are not subject to VAT, such as small firms under a VAT franchise scheme. So do not assume every trade order falls outside it. This article covers stores shipping from Great Britain. Northern Ireland has its own trading arrangements with the EU, so sellers there should check their position separately. Orders going the other way changed the same week. Since 23 October 2026, UK VAT on Shopify follows the fulfilment location for orders to Great Britain over £135, which matters to any UK store that also ships GB orders from stock held in the EU.
The timing is awkward. The rule starts on a Sunday, less than four weeks before Black Friday on 27 November and the run into Christmas, when EU orders and the cost of a stuck parcel both go up. A label that cannot be bought is a delay, and it is easy to fix if someone spots it the same day. A parcel rejected at EU customs is worse: a return-to-origin fee, a customer waiting for an order that comes back, and possibly a refund. The cheapest place to fix this is the product record, before the order arrives.
Stores on Managed Markets get the same treatment, because Shopify adds the identifiers to Managed Markets labels too. Those stores already moved to duties paid at checkout when Managed Markets ended DDU support in August, so EU parcels now depend on both the duty calculation and the product data being right. For a large or untidy catalogue, the work is mostly data: finding barcodes, entering them with the right type, and deciding product by product whether the declaration applies. That kind of catalogue clean-up is part of our Shopify web design and development work.
Practical considerations
Use the declaration honestly. Shopify's Help Center says to switch it on only when a product truly has no GTIN, EAN, UPC or ISBN, and that once it is on, no standardised identifier is sent for that item even if one is saved. Switching it on across a whole catalogue to clear the label block would replace real barcodes with a statement that none exist, on data the Commission says customs will use to find unsafe or non-compliant goods.
Treat Shopify's NS-PID fallback as Shopify's behaviour, not a customs ruling. The EU lists the NS-PID as mandatory in all cases and describes it as the identifier assigned by a manufacturer, producer or product supplier. Shopify fills it from a barcode, SKU or variant ID when no NS-PID barcode is saved, and its changelog says merchants can use their own product code or SKU. Where you have a manufacturer's part number or style code, entering it as an NS-PID barcode is the closer match to what the field asks for. Since September a variant can hold up to 20 typed barcodes, as we covered when Shopify variants started holding multiple barcodes, so an NS-PID can sit alongside the EAN without replacing it.
Work at variant level, because that is where the identifiers live, and check HS codes at the same time, because they decide exemptions as well as duty. For anything unusual, such as trade orders, mixed parcels or exemption questions, ask your carrier or customs broker: Shopify's tools carry the data, but they do not decide whether a product is exempt.
If EU prices or product ranges are also changing for Black Friday, Shopify can now schedule those changes per market, which we cover in our piece on scheduling and testing market prices with Shopify Rollouts.
FAQ
What are EU product identifiers?
Three codes EU customs needs for each item in a low-value parcel sent to a consumer in the EU from outside the EU: a merchant product identifier (M-PID), a manufacturer's own code (NS-PID) and a standardised barcode such as a GTIN, EAN, UPC or ISBN (S-PID). Where no standardised barcode exists, the declarant states that instead, using code Y081.
When do EU product identifiers become mandatory?
From 1 November 2026, for items in parcels worth €150 or less sent from outside the EU to EU consumers. They could be declared voluntarily from 1 July 2026. From 1 November, Shopify will not sell an EU label for an item that has neither a standardised identifier nor the no-identifier declaration.
What if my product has no barcode?
Switch on Has no standardized identifier under EU customs declaration, in the More details card of the product's Shipping section, on the product or on each variant. Shopify says to use it only when the product truly has no GTIN, EAN, UPC or ISBN, such as a handmade or one-of-a-kind item.
Do I need to add an NS-PID in Shopify?
Not always. If a variant has no NS-PID barcode, Shopify uses its standardised barcode, then any other barcode, then its SKU, then the variant ID. Where you have the manufacturer's model number, part number or style code, adding it as an NS-PID barcode is the closer match to what the EU asks for.
Can I mark my products as exempt?
No. Exemptions, such as unprocessed agricultural and perishable goods in HS chapters 01 to 15, certain handmade and artisanal goods, antiques and works of art, are applied from each variant's HS code. Make sure your HS codes are accurate.
What if I buy shipping labels outside Shopify?
Shopify's check only applies to labels bought in the Shopify admin. If you use a third-party logistics provider or a separate shipping app, ask your carrier, broker or fulfilment partner how they need the identifiers supplied.