Inventory Fundamentals

SKU vs Barcode vs UPC: What's the Difference (and When to Use Each)

7 min readBy Inventoros Team
SKU vs Barcode vs UPC: What's the Difference (and When to Use Each)

People use SKU, barcode, and UPC as if they mean the same thing. They don't, and mixing them up is how you end up with duplicate products, broken scans, and a catalog nobody trusts. This guide sorts out SKU vs barcode vs UPC with plain definitions, a worked example, and clear rules for when to use each.

The short version: a SKU is an ID you invent for yourself, a UPC is a global product number someone assigns you, and a barcode is the scannable symbol that carries either of them. Same product, three different jobs.

The short version

  • SKU (Stock Keeping Unit): your internal code for a product. You make it up. It only means something inside your business.
  • UPC (Universal Product Code): a 12-digit number registered through GS1 that identifies a product across every retailer on earth.
  • Barcode: the physical pattern of bars (or a QR square) that a scanner reads. It's the container, not the number. It can encode a SKU, a UPC, or almost anything.

Get that straight and 90% of the confusion disappears.

SKU vs barcode vs UPC, defined properly

SKU: the ID you control

A SKU is a short code you assign to each distinct product variant so you can track it. You own the format, you own the rules, and you can change it whenever you want. Nobody outside your company needs to recognize it.

Good SKUs are readable at a glance. For a large black t-shirt you might use TS-BLK-L-001. A person can decode that: t-shirt, black, large. That's the point. SKUs are for humans and internal systems, not for the outside world.

Because you control them, SKUs are unique to you. Your TS-BLK-L-001 and another shop's TS-BLK-L-001 are completely unrelated. That's fine, because a SKU never has to travel.

UPC: the ID the world agrees on

A UPC is a 12-digit number issued through GS1, the global standards body. You buy a company prefix from GS1, and that prefix plus a product number plus a check digit makes each UPC globally unique. When a retailer scans a UPC, they know exactly which manufacturer's product it is, no matter where it came from.

This is the number that gets printed on retail packaging. If you sell through Amazon, Walmart, or any major retailer, they'll require a valid GS1-issued UPC (or its close relative, the 13-digit EAN used outside North America). Both are part of the GTIN family, which is just the umbrella term for these standardized product numbers.

The rule of thumb: you don't invent a UPC, you're assigned one. Making up a random 12-digit number is how you collide with someone else's real product.

Barcode: the symbol, not the number

Here's the piece most people get wrong. A barcode isn't a number at all. It's the visual encoding, the set of bars and spaces (or dots) that a scanner turns back into data.

A UPC-A barcode is one specific symbology that encodes those 12 UPC digits. But barcodes come in many formats:

  • UPC-A / EAN-13: retail product codes.
  • Code 128: dense, flexible, common on internal warehouse labels and shipping.
  • QR / DataMatrix: 2D codes that hold far more, including URLs or batch data.

So a barcode can carry your internal SKU, a UPC, a serial number, or a location bin ID. The barcode is the delivery mechanism. What it delivers is up to you.

A worked example: one t-shirt, all three

Take that large black t-shirt.

Identifier Value Who assigned it
SKU TS-BLK-L-001 You
UPC 012345678905 GS1 (via your company prefix)
Barcode The scannable UPC-A symbol on the hangtag Generated from the UPC

In your warehouse, you might slap a Code 128 label encoding the SKU on the shelf edge, because your pickers care about your internal code. On the retail hangtag, you print the UPC-A barcode so any store register in the country can ring it up. Two different barcodes, two different numbers, same shirt.

How the UPC check digit works

That 12th digit isn't random. It's a checksum that catches scan errors. Here's the formula for the first 11 digits 01234567890:

1. Add the digits in odd positions (1st, 3rd, 5th...):
   0 + 2 + 4 + 6 + 8 + 0 = 20
2. Multiply that sum by 3:
   20 x 3 = 60
3. Add the digits in even positions (2nd, 4th...):
   1 + 3 + 5 + 7 + 9 = 25
4. Total:
   60 + 25 = 85
5. Check digit = whatever makes the total a multiple of 10:
   next multiple of 10 is 90, so 90 - 85 = 5

Final UPC: 012345678905. If a scanner reads a UPC where the math doesn't work out, it rejects the scan instead of pulling up the wrong product. That's why you can't just append any digit you like.

Where people get this wrong

Treating a UPC as a SKU. A UPC identifies a product model, not your specific stock. If you buy the same item from two suppliers at two costs, they share a UPC but you still want separate SKUs to track them. The SKU carries your operational meaning; the UPC is just the manufacturer's fingerprint.

Assuming every product needs a UPC. If you don't sell through big retail channels, you may never need one. Internal SKUs and your own barcodes are enough to run a warehouse. Don't pay GS1 for numbers you'll never scan at a register.

Thinking a barcode "is" a UPC. A barcode is just a font for machines. Plenty of warehouses run entirely on Code 128 labels encoding internal SKUs and never touch a UPC. The symbol and the standard are separate choices.

Reusing SKUs. Once a SKU has history, retiring and reassigning it to a different product poisons your reports. Treat SKUs as permanent, one per variant, forever.

How they fit together in inventory software

A capable inventory system stores all three on a product and knows which is which. The SKU is your primary internal key, the UPC (or EAN/GTIN) is an attribute for channel sync and retail scanning, and the barcode field tells the scanner what to expect.

When someone scans at receiving, the software should match on either the SKU barcode or the UPC and land on the same product record. When you push to a sales channel, it sends the UPC. When your team picks an order, they see the SKU. One product, the right identifier surfaced in the right place.

This is also where multi-location gets real. The same SKU can hold different quantities in different warehouses, and your scanners at each site read the same labels. If your tool can't separate the internal ID from the global ID, you'll fight it constantly.

Inventoros handles SKU, barcode, and UPC/GTIN as first-class fields out of the box, scans map straight to product records, and it tracks stock per location. It's open source and self-hosted, so your catalog and identifiers live on your own infrastructure. You can also read and write all of it through the REST and GraphQL API, and the install guides cover cPanel, a VPS, and Docker.

FAQ

Can a product have a SKU and a UPC at the same time? Yes, and most retail products do. The SKU is your internal tracking code and the UPC is the global retail number. They coexist on the same product record and each does a different job. Use the SKU internally, hand the UPC to sales channels.

Do I need a UPC to sell online? It depends on the channel. Marketplaces like Amazon and Walmart usually require a valid GS1-issued UPC or EAN. Your own store, a wholesale relationship, or purely internal operations often don't need one at all. Buy UPCs only when a channel forces the requirement.

Is a barcode the same as a QR code? A QR code is one type of barcode, specifically a 2D one that stores much more data than a traditional 1D bar pattern. Retail UPC scanning uses 1D barcodes (UPC-A). QR and DataMatrix show up where you need to encode URLs, batch numbers, or serial data in a small space.

What's the difference between a UPC and a GTIN? GTIN (Global Trade Item Number) is the umbrella standard, and a UPC is one form of it. A 12-digit UPC is a GTIN-12, and a 13-digit EAN is a GTIN-13. If a system asks for a GTIN, your existing UPC satisfies it. They're not competing standards, one contains the other.