Free EU product identifier CSV template
This free CSV template has one row per variant and a column for each value EU customs ask for: SKU (M-PID), maker's code (NS-PID), barcode (S-PID) or no barcode (Y081), HS code and country of origin. Download it, fill it with your own and your suppliers' data, and keep it as your master list.
The columns
| Column | What to put in it | What customs call it |
|---|---|---|
product | The product's title, so you can recognise the row. | Not declared |
variant | The variant's name, such as its size or colour. | Not declared |
sku | Your own code for the variant. Every variant gets its own; no placeholders such as N/A. | M-PID (data element C127) |
ns_pid | The manufacturer's or supplier's model or part number. If you make the product, your own reference. No particular format is required. | NS-PID (C128) |
barcode | The EAN, UPC or ISBN, when the product has one. Leave it empty when it has none. | S-PID (C129) |
no_barcode | TRUE when the product has no barcode at all, so it is declared with the exception. Otherwise FALSE. | Exception code Y081 |
hs_code | The customs (HS) code: at least the first 6 digits, which are the same worldwide. | HS code |
country_of_origin | Where the product was made, not where you ship it from, as a two-letter country code such as PT or GB. | Country of origin |
What a row looks like
| product | variant | sku | ns_pid | barcode | no_barcode | hs_code | country_of_origin |
|---|---|---|---|---|---|---|---|
| EXAMPLE - Stoneware Mug | Sage | MUG-SAG | OC-MG-01 | 2009871000254 | FALSE | 691200 | PT |
| EXAMPLE - Oak Chopping Board | Small | OAK-CB-SMA | OC-CB-01 | (empty) | TRUE | 441990 | FR |
Demo data, not real products. The second row has no barcode, so no_barcode is TRUE and the product is declared with the exception Y081.
How to use it
- Download the template. Save the CSV file and open it in Excel, Numbers or Google Sheets.
- List your variants. One row per variant you ship to the EU. Delete the two EXAMPLE rows.
- Fill the codes. Your SKU, the maker's reference, the barcode (or TRUE in no_barcode), the HS code and the country of origin. Send the sheet to your supplier for what only they know.
- Keep it as your master list. Check it against your carrier's requirements, or let PIDReady check and fill your store for you.
Fill it automatically with PIDReady
A spreadsheet only holds the values; somebody still has to find them for every variant. PIDReady checks every variant in your Shopify store for these five values, fills what it safely can from your own store, shows a preview first and lets you undo for 30 days. Its own template, exported from the app, has these columns plus a variant_id so that each row finds its variant. Every store uses all of it on the free plan.
Common questions
Is the template free?
Yes. It is a plain CSV file you can download without an account, a form or an email address.
Which columns does it have?
product, variant, sku, ns_pid, barcode, no_barcode, hs_code and country_of_origin: one for each value EU customs ask for, plus two to recognise the row.
What do I put in no_barcode?
TRUE when the product has no barcode at all, so it is declared with the exception Y081. Otherwise FALSE, with the barcode in the barcode column.
Can I import this file into PIDReady?
PIDReady imports Excel or CSV files that say which variant each row belongs to, so for an import use the template the app exports: it has the same columns plus a variant_id. This worksheet is for collecting the values, for example from your suppliers.
What are the example rows?
Two made-up products from a demo store, named EXAMPLE, to show how a row looks. Delete them before you use the file.
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
- 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