In-Store Barcodes: Restricted-Circulation Prefixes Explained

Short version: the EAN/UPC system deliberately sets aside number ranges that any store can use internally, for free, without asking anyone — and those numbers stop meaning anything at your own front door. This page explains what those restricted-circulation ranges are, how to structure numbers inside them without creating a mess, and the boundary that matters: an in-store number is not a licensed GTIN, and no generator — this site's included — changes that. If what you actually need is a barcode for products sold through other retailers or marketplaces, start with the GS1 decision guide instead.

What an in-store barcode is

A restricted-circulation number — "in-store barcode" in everyday speech — is a number a store or chain assigns itself, for items it sells only through its own tills. The classic cases: deli and counter items weighed and labelled in the store, goods the store packs or assembles itself, and internal SKUs that exist in the store's own item file but in no manufacturer's catalogue. The barcode looks and scans like any other EAN-13 or UPC-A, and that is the trick: the store's POS system is configured to recognise the range and look the number up in its own database rather than treating it as a global product identifier. Everything about the number is local — its assignment, its meaning, and its lifespan.

The designated ranges

GS1's General Specifications designate specific ranges for restricted circulation, and the two that matter for store-level use are these:

  • EAN-13 numbers beginning 20 through 29 — designated for restricted-circulation use, which in practice means numbers assigned within a company, store, or chain.
  • UPC-A numbers with number system digit 2 or 4 — number system 2 for variable-measure (random-weight) trade items, number system 4 for retailer internal use.

"Designated" is doing precise work in both sentences: these ranges are set aside so that locally assigned numbers cannot collide with licensed GTINs, not so that locally assigned numbers become GTINs. A 20-prefix EAN-13 is structurally valid — correct length, correctcheck digit — and semantically empty everywhere except inside the operation that assigned it. One caveat worth stating plainly: exact conventions inside these ranges vary by region and by retailer agreement, so before building anything on them, verify against the current edition of the GS1 General Specifications and your own POS vendor's documentation rather than against this or any other summary.

The hard boundary: in-store means in-store

This is the part that gets buried on sites selling barcode-shaped shortcuts, so it goes here in plain text. An in-store number is not a licensed GTIN. It is not in GS1's registry, it is not connected to your brand, and it identifies nothing outside your own operation. The moment a product is sold through another retailer, a distributor, or a marketplace, you are in GTIN territory: Amazon and Walmart both document verifying identifiers against GS1's records, and restricted-circulation numbers fail that check by design, not by accident. There is no workaround, because the limitation is the feature — the ranges are shared by every store on earth precisely because the numbers never travel. When a product's distribution outgrows your tills, the honest next step is a GS1-licensed number, andthe decision guide covers what that costs and when exemptions apply.

Structuring an in-store EAN-13, worked through

For fixed-price internal items, the simplest scheme is also the most robust: a two-digit restricted-circulation prefix, your internal item reference padded to ten digits, and the check digit. Say your store assigns item reference 1234 to a house-packed gift basket. Using prefix 20:

  • Prefix: 20
  • Item reference, zero-padded to ten digits: 0000001234
  • Check digit: computed from the first twelve digits — 6 in this case — giving the full number 2000000012346.

You never compute that last digit by hand in practice: theEAN-13 generator derives it automatically when you enter the first twelve digits, and the check digit calculator verifies numbers that arrive from elsewhere. Keep the scheme boring on purpose — sequential references, one prefix, zero-padding — because cleverness encoded into digits (department codes, price hints, date fragments) is exactly what breaks when the store grows and the digits run out.

Collision discipline: one register, kept honestly

Nothing external stops you from assigning the same number twice, so the discipline has to be internal. Keep one register of assigned numbers — a spreadsheet is fine, a column in your POS item file is better — and make it the only place numbers are born. Assign from the register, never from memory; record the number at the moment of assignment, not at the end of the week; and retire numbers rather than recycling them while any old label could still reach a till. Multi-store chains need one more rule: the register lives at the chain level, not per store, or two branches will independently invent the same number for different products and discover it during a stock merge.

Printing the labels

Once numbers are assigned, printing is the easy part. A single item needs nothing more than theEAN-13 generator and a download. A batch — a season's worth of store-packed products, a shelf-edge relabelling — fits thebulk barcode labels tool: paste the column of numbers from your register, pick a label template, print the sheet. Scan a sample from every printed run before the labels hit the shop floor; a barcode that verifies on screen can still fail at the till over print quality, and the till is a bad place to find out.

A note on price-embedded variable-weight barcodes

Supermarket scale labels often go further than identification: at scale, retailers use variable-measure formats in which part of the number carries the price or weight of that specific package, so the till can charge for 412 grams of cheese without a lookup. Those formats exist and are well established — but the digit layouts are specific to the retailer, the region, and the scale vendor's configuration, and this page will not invent a universal map where none exists. If you are setting up scale labelling, the authoritative sources are your scale vendor's documentation and your POS system's configuration guide, checked against the GS1 General Specifications for your region.

In-store barcode FAQ

Can I use a 20-prefix barcode to sell on Amazon or another marketplace?

No. Restricted-circulation numbers are designated for use inside the operation that assigned them, and marketplaces that verify product identifiers check numbers against GS1’s registry, where an in-store number resolves to nothing. Walmart’s seller documentation, for example, explicitly lists restricted circulation ranges among the invalid identifier types. The moment a product leaves your own tills, you need a GS1-licensed GTIN — the decision guide on this site walks through exactly when that applies.

Do I need to register my in-store numbers anywhere?

No — there is nowhere to register them, and that is the point. The restricted-circulation ranges exist precisely so that a store can assign numbers locally without asking anyone. The flip side is that no registration also means no protection: the same number can be in use in thousands of unrelated stores, which is harmless only because those numbers never meet. The one register that matters is your own internal list of what you have assigned.

What is the difference between UPC-A number system 2 and number system 4?

Under GS1’s General Specifications, number system 2 is designated for variable-measure trade items — random-weight goods like meat, cheese, or produce, typically labelled at a scale — while number system 4 is designated for retailer internal use, such as internal SKUs and store-packed goods sold at a fixed price. In practice the exact conventions inside each range vary by region and retailer agreement, so verify against the current edition of the General Specifications and your own POS documentation.

Will an ordinary scanner and POS system read in-store barcodes?

Yes, at the symbol level — a 20-prefix EAN-13 is a structurally normal EAN-13 with a normal check digit, and any scanner that reads EAN-13 will decode it. What the number means after decoding is entirely up to your POS configuration: the system has to be told that this range maps to your internal item file. That mapping is local by design, which is exactly why the same barcode is meaningless in the shop next door.

What happens if two products in my store end up with the same in-store number?

The till charges one product’s price for the other — silently. Because nothing external checks these numbers, collisions are purely your problem to prevent, and the fix is procedural, not technical: keep a single internal register of every number assigned, in one place, updated at the moment of assignment, and never reuse a number for a different product while old labels could still be in circulation.

Range designations come from GS1's General Specifications, which are revised over time — verify against the current edition before building a labelling scheme on them. Spotted something out of date? The contact page is the fastest route to a fix.