Feed error
Item disapprovedRestricted 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.
How this appears in your account
The exact wording the channel shows, so you can match what you are looking at.
- Restricted GTIN
- Reserved GTIN
- Use a GTIN that doesn't start with "2", "02" or "04"
What it affects
- Channels
- Google Shopping Microsoft Advertising
- Attributes
- gtin identifier_exists brand mpn
- Scope
- A subset of items
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
-
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.
-
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.
-
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.
-
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.
-
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.
Related errors
- Invalid value: GTIN The "Invalid value: GTIN" error means the feed supplied a value in the gtin attribute that is not a structurally valid Global Trade Item Number. Unlike a missing GTIN this is usually a disapproval rather than a warning, because a wrong identifier matches the item to the wrong product rather than to none.
- Missing value: GTIN The "Missing value: GTIN" issue means a channel believes a product has a manufacturer-assigned barcode but the feed did not supply one. On Shopify it almost always traces back to the variant barcode field, which is optional in the admin and therefore left empty across large parts of most catalogues.
- Incorrect value: identifier exists The "Incorrect value [identifier_exists]" issue means the feed declared that a product has no GTIN, MPN or brand, but Google has evidence that it does. On Shopify it usually follows a blanket identifier_exists=no rule, applied to every product with an empty barcode, catching branded goods that really have a GTIN.
Primary sources
Channel specifications change. These are the official documents this page is based on.