Skip to content
Filovera
All posts

GTIN vs SKU vs UUID: which identifier should a Digital Product Passport use?

A practical comparison of GTIN, SKU, and UUID identifiers for Digital Product Passport implementation. Coverage of costs, interoperability, GS1 Digital Link, SGTIN serialisation, and what the ESPR textile delegated act actually requires.

By BrainBoxIT team, Filovera

Quick answer. Use a GTIN at the product (model) layer for retail and regulator interoperability, and a UUID or SGTIN serial at the item (individual garment) layer for per-unit uniqueness. SKUs stay where they belong, inside your warehouse system. ESPR expects an ISO/IEC 15459-compliant identifier, and a GTIN is the cheapest, most widely supported way to get there.

Every brand getting ready for the EU Digital Product Passport hits the same wall in the first week of planning: what number actually goes on the QR code?

Three candidates show up. GTIN (the 13-digit number from the GS1 federation that already lives on retail barcodes). SKU (the internal stock code your warehouse system invented). UUID (a 36-character hexadecimal string your developer can generate for free in a single line of code).

All three can technically resolve to a passport page. Only one of them plugs into the EU Central DPP Registry, retailer catalogues, and customs verification flows. The other two cost less but cost more, depending on how you measure.

This post walks through what each identifier is, what ESPR actually expects, what the trade-offs look like in real money for an SMB textile brand, and the hybrid pattern most brands settle on once they understand the constraints.

The three identifier types in one paragraph each

GTIN (Global Trade Item Number). Issued by the GS1 federation (GS1 UK, GS1 US, GS1 Sweden, and others). 12, 13, or 14 digits. Globally unique. Sits on every retail barcode you have ever scanned. Costs money: annual membership plus per-GTIN allocation. The format is governed by the GS1 General Specifications and ISO/IEC 15420.

SKU (Stock Keeping Unit). An internal code your brand or warehouse software invents. Free. Format whatever you like. Carries no meaning outside your four walls. Two brands can have the same SKU string with completely different products attached.

UUID (Universally Unique Identifier). A 128-bit randomly or time-ordered identifier defined by RFC 9562. Free to generate. Globally unique by mathematics rather than by registry. Used heavily in software systems and in W3C Verifiable Credentials. Format is fixed (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

These three sit on different layers of the identification stack. The common mistake is treating them as alternatives to each other when they are actually complements.

What ESPR actually requires

ESPR Article 9 says the Digital Product Passport must use a "unique product identifier" that complies with ISO/IEC 15459, the standard for unique identification of transport units. The regulation does not say "use a GTIN." It says use an identifier that conforms to a standard that GS1 GTINs happen to satisfy.

The textile delegated act drafts circulated through 2026 go further. The February 2026 working document references GS1 identifiers in the data field specifications for the product layer and assumes a GTIN is present when describing the discovery flow from QR scan to passport content.

The EU Central DPP Registry, scheduled to become operational by 19 July 2026 under ESPR Article 13, indexes passports by product identifier. The reference implementation the European Commission has shared with member states uses GTIN as the lookup key. Customs and market surveillance authorities will scan a textile QR code, extract the identifier, and query the registry. If the identifier is not a GTIN, that query does not match.

You can technically comply with Article 9 using a non-GTIN identifier that satisfies ISO/IEC 15459. You will not be discoverable by the ecosystem the regulation is being built around.

That is the gap between letter and spirit. Both matter for procurement.

GTIN: the interoperability route

A GTIN gives you something none of the other identifiers can: free recognition by every party in the supply chain.

What you get

  • Retailer ingestion. Every major retailer indexes products by GTIN. Listing your product in a catalogue, on a third-party marketplace, or in a wholesale buying platform requires a GTIN.
  • Customs verification. EU customs systems, post-2027, will be able to query the Central DPP Registry by GTIN to verify a passport exists for a textile being imported. No GTIN, no automated verification.
  • GS1 Digital Link compatibility. The GS1 Digital Link URL pattern expects a GTIN as the primary key. Read our GS1 Digital Link explainer for the full mechanics.
  • B2B traceability. EPCIS, the GS1 supply chain event standard, requires GTINs to describe what was shipped, transformed, or received.

What it costs

In the UK, GS1 UK membership starts at £50 per year for the lowest turnover band and scales up through six bands based on company turnover. From 10 May 2026, the prices for additional GTIN allocations above your free block changed for the first time in over a decade. Most SMB textile brands with 200 to 2,000 active SKUs end up paying between £200 and £600 per year in total.

In the US, the structure is different. A one-off GTIN costs $30 with no annual renewal. A GS1 Company Prefix that licenses up to 10 products costs $250 to set up plus an annual renewal. The Company Prefix tiers are:

  • 1 to 10 products: $250 initial, with renewal
  • 1 to 100 products: $750 initial, with renewal
  • 1 to 1,000 products: $2,500 initial, with renewal
  • 1 to 10,000 products: $6,500 initial, with renewal
  • 1 to 100,000 products: $10,500 initial, with renewal

For brands selling in both regions, you only need one GTIN per product globally. Either GS1 UK or GS1 US can issue it and the number is recognised everywhere.

What it asks of you

A GTIN is the model-level identifier. By itself it tells the world "this is a Filovera linen tote, model FT-001," not "this is the 47th linen tote in batch B-2026-04 with serial 8843." For per-item identification you need a serial on top of the GTIN, which is where SGTIN comes in.

GTIN allocation also has rules. GS1 allocation guidance is strict about when a product variant warrants a new GTIN (size and colour: yes; seasonal print refresh on the same garment: usually no). Brands that get sloppy here end up with duplicate GTINs or under-allocated GTINs that fail retailer audits.

SKU: the internal-only shortcut

SKUs are what most brands already use, because the warehouse management system invented them on day one and they have been there ever since.

Where SKUs work

  • Internal stock movement and warehouse picking
  • Internal financial reporting
  • Shopify or other ecommerce platforms that need a code per variant
  • Bill-of-materials linkages back to suppliers

Where SKUs fall over

The moment a SKU has to be understood outside your company, it breaks.

A SKU of FT-001-LINEN-NAT-M means something to your operations team. It means nothing to a customs officer in Rotterdam. It means nothing to the EU Central DPP Registry. It means nothing to a retailer whose catalogue system rejects any identifier that does not validate against the GTIN check digit.

The temptation is to use SKUs as the passport identifier because they are free and already exist. This is a procurement mistake that gets expensive at scale. A year into the rollout, the brand has thousands of garments in the field with SKU-keyed passports that the EU registry cannot index, and the fix involves reprinting labels.

The right role for SKUs

Keep the SKU as your internal warehouse code. Map it inside your passport database to the GTIN you allocated for that model. The passport URL on the QR code uses the GTIN; your internal systems still use the SKU. Both layers are happy.

UUID: the GS1-free path

UUIDs are tempting because they cost nothing, generate instantly, and are globally unique by mathematics. RFC 9562, ratified in 2024, introduced UUID v7, which adds a Unix millisecond timestamp to the front and gives 30 to 50 percent better database insert performance than the old random-everywhere UUID v4.

Where UUIDs work

UUIDs are excellent at the per-item layer. Every individual garment you produce can carry a UUID that uniquely identifies that one unit. The UUID slots into the GS1 Digital Link URL as the serial-number component:

https://id.your-brand.com/01/05011234567890/21/0193ac4f-2e8b-7c2e-bf09-a45d8f3e2107

Here, 05011234567890 is the model-level GTIN (the linen tote model) and the UUID after /21/ is the unique per-garment serial. This is valid SGTIN, valid GS1 Digital Link, and the UUID portion costs nothing to generate.

UUIDs also show up in W3C Verifiable Credentials as the credential identifier. The Verifiable Credentials Data Model v2.0 allows credential IDs of the form urn:uuid:0c07c1ce-57cb-41af-bef2-1b932b986873. Every passport that uses Verifiable Credentials for tamper-evidence will have a UUID somewhere in the signed payload.

Where UUIDs fall over

UUIDs as the product-level identifier give up all the interoperability a GTIN buys. The EU Central DPP Registry, retailers, and customs systems do not know how to look up a product by UUID. The ESPR expectation that an identifier be discoverable through standard channels is harder to meet with a pure-UUID approach.

There is a second issue with UUID v7 specifically: the timestamp it embeds leaks production time to anyone who reads the URL. For some brands this is a privacy or competitive-intelligence concern (a competitor scraping your passports can build a production schedule). UUID v4, fully random, avoids this but loses the database performance benefit.

When UUID-only makes sense

A small subset of brands can rationally skip GTINs altogether. The profile: direct-to-consumer only, no retail wholesale, no marketplace listings, no intention to use the EU Central DPP Registry as a discovery channel. For these brands, a UUID-only passport works and the GS1 fees can be skipped.

Most textile brands are not in this profile. If there is any chance of wholesale distribution or retailer onboarding in the next three years, GTIN now is cheaper than retrofitting GTIN later.

SGTIN: serialising at item level

SGTIN, or Serialised GTIN, is the GS1-native way to combine a product-level GTIN with a per-item serial number. It uses GS1 Application Identifier 21 to attach the serial to the GTIN.

A bare GTIN is encoded with Application Identifier 01:

(01) 05011234567890

A Serialised GTIN adds AI 21:

(01) 05011234567890 (21) AB-2026-04-8843

In a GS1 Digital Link URL, the same encoding becomes:

https://id.your-brand.com/01/05011234567890/21/AB-2026-04-8843

The serial value after /21/ is a string of 1 to 20 alphanumeric characters, defined by the GS1 General Specifications. It can be a human-readable batch code, a sequence number, or a UUID. The format is up to you, within the 20-character limit.

For ESPR purposes, the SGTIN gives you per-item uniqueness without leaving the GS1 ecosystem. Every individual garment gets its own passport URL, the URL stays parseable by GS1-aware tooling, and the product-level GTIN remains the discovery key.

The trade-off is the 20-character limit. A full UUID is 36 characters, so you cannot drop a raw UUID into AI 21. You either truncate (losing uniqueness guarantees), encode (base64-shortening a UUID to fit), or use a separate non-UUID serial scheme. Most brands choose the third option and use a shorter batch-plus-sequence format inside AI 21, keeping the UUID for the internal database key and the Verifiable Credential identifier.

The hybrid pattern most brands settle on

After working through the trade-offs, the architecture most Filovera clients land on looks like this:

Product (model) layer. GTIN allocated through GS1 UK or GS1 US. One GTIN per model variant that warrants its own retail listing. Used as the primary key in the GS1 Digital Link URL and registered with the EU Central DPP Registry.

Item layer. A per-garment serial encoded in GS1 AI 21. Format is a brand-controlled scheme (often batch code plus sequence number) kept under 20 characters to fit the SGTIN constraint.

Internal database layer. UUID v7 as the primary key in the passport database. Fast to index, easy to generate, never exposed on the label.

Verifiable Credential layer. A separate urn:uuid: identifier inside the W3C Verifiable Credential payload that signs the passport content. This is the cryptographic identity, distinct from the display identifier.

Internal stock layer. Your existing SKU. Untouched. Mapped to the GTIN inside the passport database. Your warehouse system never has to learn about GTINs or UUIDs.

Each identifier sits at the layer where it earns its keep. None of them try to do a job they were not designed for.

Decision framework by SKU count

A quick mapping from inventory size to recommended identifier strategy. This is the rule-of-thumb starting point, not legal advice.

Active SKUsGS1 tier (UK)GS1 tier (US)Item-level approach
Under 10Individual GTINs$30 each one-offUUID in AI 21 (short form)
10 to 100Standard membership$750 Company PrefixBatch-plus-sequence serial
100 to 1,000Mid-tier membership$2,500 Company PrefixBatch-plus-sequence serial
1,000 to 10,000Upper-tier membership$6,500 Company PrefixSGTIN with hashed UUID
Over 10,000Enterprise tier$10,500 Company PrefixFull SGTIN serialisation

The vertical axis (GTIN tier) is about how many product models you sell. The right-hand column (item-level approach) is about how many individual garments you need to track uniquely. The two scale independently. A brand with 50 models but 50,000 garments per year sits in the "100 SKU" GS1 tier with a full item-level serialisation scheme on top.

What to tell your DPP vendor

When you brief a DPP platform, three questions sort the serious vendors from the rest:

  1. "Can I bring my own GTINs and have them appear in the URL?" A serious vendor lets you bring GTINs allocated through your own GS1 membership. A weaker vendor wants to allocate identifiers in their namespace, which traps you.
  2. "How do you handle the item-level serial inside AI 21?" A vendor who answers "what is AI 21" has not implemented SGTIN. Walk.
  3. "Do you support both GTIN-only and SGTIN URL patterns?" Some of your products may only need model-level passports (low-cost basics); others need per-item serialisation (high-value goods, traceability programmes). Your vendor should support both without surcharge.

The Filovera implementation handles all three by default. Other vendors vary widely.

Frequently asked questions

Does the EU ESPR require a GTIN for a Digital Product Passport?

ESPR Article 9 requires a unique product identifier that complies with ISO/IEC 15459, and the textile delegated act drafts published through 2026 reference GTINs as the expected identifier for the product layer. The regulation does not name GS1 by company, but every implementation guide the European Commission has published assumes a GTIN at the product level, and the EU Central DPP Registry indexes by GTIN. In practice, a passport without a GTIN is one that cannot be discovered by customs or retailers.

What is the difference between a GTIN and a SKU?

A GTIN is a globally unique identifier issued through the GS1 federation that any retailer, customs authority, or platform recognises. A SKU is an internal code your brand or warehouse invents to track stock. Two brands can have the same SKU value with completely different meanings; two products cannot share a GTIN. SKUs are free and private; GTINs cost money and are public.

Can I use a UUID instead of a GTIN for my DPP?

You can use a UUID as the per-item serial inside the passport URL, but you should not use it as the primary product identifier. UUIDs are free and easy to generate, but they carry no meaning to retailers, customs, or the EU Central DPP Registry. The compliant pattern is a GTIN at the product (model) layer plus a UUID or serial at the item layer.

How much does a GS1 GTIN cost in 2026?

GS1 UK membership starts at £50 per year for the smallest tier and rises with company turnover, with additional GTIN block prices changing from May 2026. In the US, a one-off GTIN costs $30, and a GS1 Company Prefix that licenses up to 10 products costs $250 initially plus an annual renewal fee, scaling up to $10,500 for 100,000 products. Most SMB textile brands settle in the £200 to £600 per year range in the UK or the $250 to $2,500 per year range in the US.

What is SGTIN and why does it matter for serialisation?

SGTIN, or Serialised GTIN, is the GS1 pattern for adding a per-item serial number to a product-level GTIN using Application Identifier 21. It lets you have one GTIN for the model and a unique passport URL for every individual garment, all using the GS1 system. SGTIN matters because ESPR expects per-item identification for traceability, not just per-model.

Which identifier scales best for a brand with 200 to 10,000 SKUs?

For 200 to 1,000 SKUs, a GS1 Company Prefix licensing up to 1,000 products is the right tier in both the UK and US, with UUIDs handling the per-item layer. For 1,000 to 10,000 SKUs, step up to the next GS1 tier and serialise with SGTIN where item-level uniqueness matters. Below 100 SKUs, individual GTINs purchased one at a time can work, but a small Company Prefix is usually cheaper over three years.


If you want to see how Filovera structures GTINs, SGTINs, UUIDs, and SKUs across the same product without forcing you to pick one, book a demo or read the feature list.

Related reading

Disclaimer. GS1 fees, ESPR delegated act language, and the EU Central DPP Registry implementation are all subject to change. The prices and structures quoted here reflect published guidance as of mid-2026. Brands committing significant inventory to a labelling scheme should confirm current pricing with GS1 UK or GS1 US directly and engage qualified compliance counsel before finalising procurement.

§ 99  Action

Be ESPR-ready before the
deadline catches you.

Onboard your first SKUs, invite a supplier, publish your first scannable passport, all on your free 14-day trial. No credit card required.

FORM FLV-CTA-01 · v01  ·  signed: filovera · us