A SKU (stock keeping unit) is an internal code you create yourself, in any format you like, to track a product or variant in your own stock, orders and reports. A UPC (Universal Product Code) is a 12-digit number, the GTIN-12, that you license from GS1 US and that identifies the same product at every retailer, marketplace and warehouse in the world. The same pair of shoes in size 9 has one UPC everywhere, while each store that sells it gives it its own SKU.
You always need SKUs: one per variant, unique in your catalog. You need a UPC when you sell through retailers or marketplaces that ask for one, or when you want Google Shopping to match your listing to a known product. Outside North America the same role is played by the 13-digit EAN (GTIN-13). In your product data the two never share a field: the SKU goes in sku, the UPC in gtin or upc, and the manufacturer's part number in mpn.
SKU and UPC compared on nine points
SKU vs UPC at a glance
| Assigned by | You (the brand, retailer or seller) | The brand owner, using a number licensed from GS1 US |
|---|---|---|
| Format | Letters, digits and dashes, your own pattern | Exactly 12 digits, the last one a check digit |
| Uniqueness | Within your own catalog | Globally, across all companies |
| Cost | Free | From $30 for a single GTIN at GS1 US |
| Same product at two retailers | Two different SKUs | One UPC |
| Printed on packaging | Rarely, sometimes on shelf labels | Yes, as the UPC-A barcode |
| Seen by shoppers | Sometimes on the product page | Mostly on the package; feeds send it to Google |
| Main job | Stock, picking, orders, reporting, channel sync | Point-of-sale scanning, retail listings, product matching |
| Can it change? | It can, but changing it breaks history and integrations | No, a GTIN stays with the product it was assigned to |
GS1 US puts it in one line on its guide to UPCs: two retailers can sell the same item with the same UPC, but each uses its own SKU. Our GTIN vs UPC vs EAN guide covers how the UPC relates to the other GTIN formats.
Inside a UPC: GS1's own example, digit by digit
GS1 US uses 6 14141 99999 6 as its example UPC. The number has three parts:
- GS1 Company Prefix (614141): 6 to 10 digits that GS1 assigns to one brand owner. A longer prefix leaves fewer digits for products.
- Item reference (99999): 1 to 5 digits the brand owner assigns. Every variation, such as a different size or flavor, gets its own item reference.
- Check digit (6): calculated from the first 11 digits so a scanner or system can spot a mistyped or misread number.
To calculate the check digit, add the digits in the odd positions (1st, 3rd, 5th and so on from the left: 6 + 4 + 4 + 9 + 9 + 9 = 41) and multiply by 3, which gives 123. Add the digits in the even positions (1 + 1 + 1 + 9 + 9 = 21). The total is 144. The check digit is what brings it to the next multiple of 10: 150 minus 144 is 6. The EAN and GTIN validator runs this test for any GTIN length.
The barcode and the number are two different things: the UPC-A symbol is the bars, the GTIN-12 is the data it carries. According to GS1 US, GTIN-12 is the only GTIN type that can be encoded in a UPC-A barcode. If you need the artwork, the UPC barcode generator draws it from a valid number, and the barcode types overview explains when you need UPC-A, EAN-13 or ITF-14.
Inside a SKU: a format you design once and keep
A SKU has no standard, which is exactly why it needs rules. A readable pattern puts the most stable attribute first and the most variable last. For an organic cotton T-shirt in navy, size M, TEE-ORG-NAV-M tells a picker what to grab without a lookup. Shopify's help center gives similar examples and is strict on one point: each product and variant must have its own unique SKU.
- Fixed segments: product type, model, color, size, in the same order and length across the catalog.
- Letters and digits only, plus dashes: no spaces, slashes or accents that break CSV files and integrations.
- No look-alike characters: avoid letter O next to zero and letter I next to one.
- No values that change: price, supplier or season in a SKU go out of date while the product stays the same.
- One case: Shopify notes that SKUs are case-sensitive in syncs, so ABC123 and abc123 are two different SKUs.
- Never reuse a retired SKU for a new product; old orders and reports still point to it.
The SKU generator builds codes from segments like these and expands them over variants.
When you need a UPC and when a SKU is enough
Do you need a UPC for this product?
Selling through retailers. GS1 US states that for most retailers a UPC on the product is a requirement to sell it. Store systems look up price and category by scanning the barcode, so a product without one usually cannot be listed.
Google Shopping. Google Merchant Center recommends the gtin attribute for every product that has a GTIN assigned by the manufacturer, accepts 8, 12, 13 or 14 digits and requires a correct check digit. It warns against guessing or making up a value. Store brands and products only you sell often have no GTIN; for those you submit brand and mpn instead. Missing or incorrect GTINs can limit visibility.
Marketplaces. Most large marketplaces match listings by GTIN. Some allow exemptions for private-label goods; GS1 US notes that Amazon may grant them for some private-label products while still encouraging GS1-issued GTINs.
Your own webshop only. SKUs are enough to run the shop. A GTIN is still worth adding when the product has one, because it is what Google uses to match your offer to the product.
Reselling another brand's product. Use the manufacturer's UPC. Never license your own number for a product someone else makes; the GTIN belongs to the brand owner. The UPC lookup tool shows which product and brand public pages list for a barcode, which helps when a supplier file arrives with numbers but no names.
What UPCs cost at GS1 US
| 1 (single GS1 US GTIN) | $30 | $0 |
|---|---|---|
| Up to 10 | $250 | $50 |
| Up to 100 | $750 | $150 |
| Up to 1,000 | $2,500 | $500 |
| Up to 10,000 | $6,500 | $1,300 |
| Up to 100,000 | $10,500 | $2,100 |
Prices as listed on the GS1 US page How to get a UPC barcode on 19 October 2026. On its GTIN page, GS1 US also warns that GTINs from unauthorized third parties may already be associated with another company or product, which leads to acceptance and data quality problems.
One UPC with several SKUs: condition, bundles and stock locations
One product keeps one UPC, but you may need more than one SKU for it. Where the line falls:
- Stock locations: keep one SKU. Shopify advises using the same SKU for a variant across all locations and tracking stock per location, so transfers and reports work across the business.
- Condition: separate SKUs. A refurbished or used unit carries the manufacturer's GTIN but has its own price and stock, so give it its own SKU (for example HDP-200-BLK-REF). In Google Merchant Center it is a separate product with condition set to used or refurbished; Google does not accept two products with the same GTIN and the same variant attributes, condition included.
- Bundles you create: own SKU, main product's GTIN. For a camera with a bag and lens that you put together, Google asks for the GTIN, MPN and brand of the main product plus the is_bundle attribute. A bundle the manufacturer created has its own GTIN.
- Multipacks you create: own SKU, single item's GTIN. Submit the individual product's GTIN with the multipack count, and keep the pack count in its own field, as the guide to units of measure in product data shows. A manufacturer's multipack has its own GTIN.
Variants need their own UPC and their own SKU
Every size and color is a different trade item. GS1 US says every variation gets its own item reference, Google requires a unique GTIN for each variant, and Shopify requires a unique SKU per variant. Some retailers also keep a style-level code above the variants for reporting, but that is a parent code, not a replacement for the variant SKU.
Worked example: one T-shirt, six variants
| TEE-ORG-NAV-S | TEE-ORG | Navy | S | 614141000012 |
|---|---|---|---|---|
| TEE-ORG-NAV-M | TEE-ORG | Navy | M | 614141000029 |
| TEE-ORG-NAV-L | TEE-ORG | Navy | L | 614141000036 |
| TEE-ORG-WHT-S | TEE-ORG | White | S | 614141000043 |
| TEE-ORG-WHT-M | TEE-ORG | White | M | 614141000050 |
| TEE-ORG-WHT-L | TEE-ORG | White | L | 614141000067 |
Note the MPN exception: Google says different apparel sizes often share one MPN, while GTINs never do. So mpn can repeat across sizes, gtin and sku cannot.
Where SKU, GTIN and MPN go in each system
- Shopify: each variant has a SKU field and barcode fields. You can add up to 20 barcodes per product or variant, each with a type such as a GTIN format, or Custom for values that follow no standard.
- Google Merchant Center: id is your own unique, stable product ID (Google recommends the SKU, 1 to 50 characters), gtin holds the UPC or EAN, mpn the manufacturer part number and brand the brand.
- schema.org Product markup: sku, gtin12 or gtin13, and mpn are separate properties.
- Supplier and ERP files: usually a supplier item number (their SKU), your item number and a barcode column. Map the supplier's number to a supplier field, not to your SKU.
Google's rules for the id attribute explain why the SKU must stay stable: the ID carries the product's performance history in Merchant Center and Google Ads, so changing it overwrites the product. Do not reuse an ID across variants either; each variant needs its own.
Adding UPCs to a catalog that only has SKUs
Many shops start with SKUs only and add GTINs when a retailer or Google asks for them. Doing it in this order avoids most rework:
- Split the catalog by source. Products you buy from other brands get the manufacturer's code; only products under your own brand need numbers from GS1.
- Collect manufacturer codes from the source. Supplier price lists, packaging and the supplier's own product feed usually carry them. Do not copy codes from a competitor's listing.
- Count your own variants before you buy. Every size, color and pack size needs its own number, so count variants, not product pages, to pick the right GS1 capacity.
- Assign numbers in a register you keep. Record which number went to which SKU and when. A GTIN is never reassigned to a different product later.
- Validate before you publish. Check length and check digit for every code, and check that no two variants share one, before the first feed goes out.
Six SKU and UPC mix-ups that break feeds
- UPC stored as a number in a spreadsheet. Leading zeros disappear and long codes turn into scientific notation. Format GTIN columns as text before you paste.
- SKU set to the UPC. It works until you sell a bundle, a refurbished unit or a product without a GTIN. Keep the fields separate even when the values match.
- One UPC on all variants. Marketplaces merge or reject the listings, and Google cannot tell the sizes apart.
- A made-up GTIN for a private-label product. It fails the check digit or collides with a real product. Send brand and MPN instead, or license real numbers.
- Cheap UPCs from resellers. The number may already belong to another company's product in a retailer's database.
- New SKUs after a re-platform. Feed IDs change, ad history resets and integrations lose the link to old orders. Migrate SKUs one to one.
Checking SKUs and GTINs before they reach a channel
In WISEPIM each product record keeps the SKU, the EAN, the 12-digit UPC, the manufacturer part number and the brand in separate fields. Quality Guard rules can flag products whose SKU or EAN is not unique in the project and EANs without a valid GTIN check digit, and block, skip or warn before an export. That is a check digit test, not a GS1 registry lookup: it catches typos and invented numbers, not a valid number that belongs to someone else.

