Skip to main content

We use analytics cookies to see which pages people actually read. Reject and nothing about how the site works changes. Read the cookie policy.

Operations

Your SKU Is About to Become a Customs Field

Nadira · 6 October 2026

Here is a question that sounds administrative and is not.

For your best selling SKU, what is the manufacturer's own product code?

Not your SKU. Not the ASIN. Not the EAN. The code your factory uses internally when they talk about that item among themselves.

If you can answer that in thirty seconds for every line in your catalogue, you can stop reading and go and do something more interesting. If you had to think about where that actually lives, a supplier's PDF, an email thread, a column somebody added to a sheet in March, then 1 November is a date worth putting somewhere you will see it.

What changes

From 1 November 2026, EU customs declarations require Product Identifiers. There are three, and they are not alternatives to each other.

M-PID, Merchant Product Identifier. Assigned by the seller, marketplace or platform. Usually your own SKU. Mandatory.

NS-PID, Non-Standardised Manufacturer Product Identifier. The manufacturer's, producer's or supplier's own proprietary code. Also mandatory on all declarations.

S-PID, Standardised Manufacturer Product Identifier. A globally standardised code. GTIN, EAN, UPC, ISBN. Required where a standardised code exists for that product.

So for a typical imported consumer good: your code, your supplier's code, and the barcode. Three identifiers, three different sources, all correctly matched to one physical item sitting in one box.

Customs may hold or reject declarations that lack the required data once the deadline passes.

Why this is a systems problem and not a paperwork problem

Each of those three lives somewhere different in a normal multi-channel operation.

Your M-PID is in your own catalogue, which in practice means Shopify for DTC and a separate SKU scheme on Amazon, because the two were set up eighteen months apart by different people with different opinions about naming conventions. Both of those people were you.

Your S-PID is in your barcode records, or in the GS1 account somebody registered four years ago, or printed on the packaging artwork and nowhere else.

Your NS-PID is the problem. It exists in your supplier's system. The only copies you hold are wherever you happened to put them. A purchase order. An invoice. A WhatsApp message. A column in a sheet that is accurate for every SKU that existed on the day it was made and completely silent about everything added since.

That is not carelessness. It is what happens when a data field has no consequence attached to it. Nobody maintains a column that nothing depends on. The NS-PID depended on nothing.

From 1 November it depends on something, and it is a border consequence, which means the feedback loop is slow, indirect, and arrives attached to a container rather than an error message.

The specific failure to expect

The failure here is not a missing field. A missing field gets caught. Validation is good at absence.

It is a field that is present and wrong, which is worse, because the declaration passes, the shipment moves, and the problem surfaces three months later as a query against a consignment whose stock you have already sold.

Three ways that happens, all of which I have watched happen:

The supplier changed their internal code. They revised a product, incremented their part number, and told nobody, because from where they sit nothing changed. Your records now point at a code that describes a slightly different item.

One SKU, two suppliers. You dual source for sensible reasons. The NS-PID is correct for whichever supplier the sheet was built around, and wrong for the other one. Your declaration is right about half the time, depending on which factory the container came out of.

Variants collapsed into one row. Your catalogue treats five colourways as one SKU with options. Your supplier treats them as five part numbers. The declaration carries one NS-PID for a shipment containing five different manufacturer products.

None of those are visible from inside any one system. They are only visible when you put the catalogue, the supplier records and the shipment data next to each other and go looking for the disagreements. Nobody does this on a Tuesday for fun.

What getting ready actually means

Not "add a column." The column is the easy part and it is not where the risk is.

1. Work out which SKUs need an S-PID at all. It is required where a standardised code exists. For some products it does not exist. Knowing which is which stops you hunting barcodes for items that have none, and stops you declaring nothing for items that have one.

2. Get the NS-PID from the source, in writing, per SKU. Not from your own records. From the supplier, as a confirmed and dated list. If you dual source, you need both, mapped to which supplier ships what.

3. Map variants to manufacturer codes properly. One row per distinct manufacturer product, not one row per thing you sell. If your five colourways are five part numbers at the factory, they are five rows here, whatever your listing structure says.

4. Decide where the master copy lives, and then make it the only one. This is the step everybody skips. Three identifiers across two sales channels and a freight forwarder's portal is at least four places the data can be entered, and three of them will drift. Pick one source. Make everything else read from it. Accept that this, and not the spreadsheet, is the actual work.

5. Read what your carrier is already sending. Your forwarder is building declarations from data you gave them, possibly a while ago, possibly in a format you have forgotten. Ask for a sample declaration against a recent shipment and look at the PID fields. If they are populated from something you do not recognise, you have found your first problem, free of charge.

The honest framing

This is not a hard problem. It is a tedious problem that stays invisible until it becomes expensive, which is a different category and in some ways a worse one. Hard problems get attention. Tedious problems get a sheet.

The reason it matters past 1 November is that it is the first time product data quality has a hard border consequence bolted to it. The EU customs reform has more of this coming as the data hub comes online. Anyone who builds a single reconciled product record now is solving a sequence of these, not one of them.

Anyone who adds a column will be adding another column in eighteen months. I know, because that was me, and the sheet is still open in a tab somewhere, judging me.


Where this goes next

FinFlow is Finnito's operator command deck. One interface for the product record that sits underneath all of this, so the catalogue, the supplier data and the channel mappings stop contradicting each other in private.

FinFlow is not live yet. It is in active build, MVP launch in 2026. What you can buy today is a seat in the Founders Circle: £400 one time, 250 seats, lifetime access to FinFlow when it launches and to every Finnito module after it. When the 250th seat goes, the tier closes permanently.

If you would rather see something working before committing to a roadmap, Vision Studio is live now. Five free generations, no card.


Fact base

Claim Source
PIDs mandatory on EU customs declarations from 1 November 2026 Zonos EU Product Identifiers guide; FedEx EU PID guide; eBay seller announcement
M-PID: merchant or platform code, typically own SKU, mandatory Zonos
NS-PID: manufacturer's proprietary code, mandatory on all declarations Zonos
S-PID: GTIN, EAN, UPC, ISBN, required where a standardised code exists Zonos
Customs may hold or reject declarations lacking required PID data Zonos

Note: the de minimis exemption ended 1 July 2026. Relevant context for anyone reading this as their first encounter with the customs reform package, and the subject of the companion post on the €3 flat duty.

Not claimed: no specific carrier's enforcement behaviour has been verified, and no documented rejection has been cited. The regulatory requirement and the stated consequence are sourced. What an individual carrier does on 2 November is not.