# Restricted GTIN

The "Restricted GTIN" or "Reserved GTIN" issue means the gtin attribute holds a number from a range GS1 sets aside for internal use, starting with 2, 02 or 04, or for coupons. On Shopify it usually means the variant barcode holds an in-store or self-generated code rather than the manufacturer's GTIN.

- **Canonical URL:** https://www.feedlab.io/knowledge/errors/reserved-gtin
- **Last reviewed:** 3 November 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab


## How this appears in your account

- `Restricted GTIN`
- `Reserved GTIN`
- `Use a GTIN that doesn't start with "2", "02" or "04"`


## Why it happens on Shopify

### The barcode is an in-store code

Barcodes printed for shelf labels, point-of-sale or variable-weight goods are often taken from the ranges GS1 reserves for use inside one company or region. They scan at your till but identify nothing outside your own systems.

### The store generated its own barcodes

Merchants selling own-brand goods sometimes generate barcodes to fill the Shopify barcode field or to print labels. Self-generated numbers are not GTINs licensed through GS1, and any that fall in a restricted range are rejected outright.

### A UPC starting with 2 or 4 was padded to 13 digits

A twelve-digit UPC beginning with 2 or 4 becomes a thirteen-digit value starting with 02 or 04 once a leading zero is added. Both prefixes are restricted, so the value is rejected however it is formatted.

### A coupon code was entered as the barcode

Coupon numbers use the GS1 prefixes 05, 98 and 99. Google does not accept values in the coupon ranges as product GTINs.




## How to fix it

1. **Find the restricted values** — Filter the variant barcodes for values starting with 2, 02, 04, 05, 98 or 99, after stripping spaces and accounting for padding. This tells you how many products carry internal codes rather than real GTINs.
2. **Replace them with the manufacturer's GTIN** — For resold branded goods, get the GTIN from the supplier or the packaging and put it in the variant barcode. That is the only value that identifies the product to the channel.
3. **Keep internal codes out of the gtin attribute** — If your till needs in-store barcodes, keep them in the SKU or a metafield and stop mapping them to gtin. A restricted value should never reach the feed.
4. **Leave gtin empty for products without a real GTIN** — Google says that where a GTIN is not required for the category, the attribute can be left empty. For own-brand goods, send brand and mpn where you have them, and use identifier_exists=no only for products with no manufacturer identifiers at all.
5. **License GTINs if you need them** — If you manufacture products that will be sold widely, GTINs are licensed from GS1. That is the legitimate route to identifiers for own-brand goods, rather than generating numbers yourself.



## How feedlab handles this

feedlab can validate the barcode before it reaches gtin: a conditional rule drops values starting with restricted or coupon prefixes and falls back to brand and mpn instead, and validation before publish catches any that slip through. The rule preview lists the affected variants against your real catalogue so the source data can be corrected too.






## Frequently asked questions

### Which GTIN prefixes are restricted?

Google rejects GTINs starting with 2, 02 or 04, which are restricted ranges, and those starting with 05, 98 or 99, which are coupon ranges. Values in these ranges cannot be submitted in the gtin attribute.

### My barcodes scan fine in store. Why are they rejected?

Because they were designed for use inside your own store or company. A restricted-range barcode works at your till but is not globally unique, so a channel cannot use it to identify the product.

### Should I buy cheap barcodes online to fix this?

For resold products, no: use the manufacturer's GTIN, because only that matches the product. For goods you make yourself, licensing GTINs from GS1 is the official route; otherwise send brand and mpn or leave gtin empty.




## Primary sources

- [Google: How to fix: Restricted GTIN](https://support.google.com/merchants/answer/12469034)
- [Google: gtin attribute specification](https://support.google.com/merchants/answer/6324461)



