Tecof • September 9, 2026
SKU Meaning: How to Create and Manage Stock Codes

In Brief
An SKU (Stock Keeping Unit) is the unique stock code you assign to every product variant you sell. A barcode is issued by GS1 and the manufacturer, while an SKU belongs to you and only means something inside your own system. A good code tells you the category, the variant and the sequence number at a glance: TSH-M-BLK-001. Keep it between 8 and 15 characters, uppercase, split by hyphens, and identical across every sales channel so stock stays synced from one source.
Friday night, 9pm. Your own site sells a three-seater sofa in white, and half an hour later the grey version sells on Trendyol. Your warehouse holds a single record called "sofa" with quantity 1. On Monday morning one of those two customers gets a cancellation email, your marketplace seller score drops, and the return leg lands on your courier invoice. The sofa was never the problem. The record was.
Fifty t-shirt models, five sizes, four colours. Multiply them: a thousand separate rows. Each row has its own quantity, its own sales curve and its own shelf. Managing that with one record called "t-shirt" is like taking attendance for a thousand students with a single sheet of paper.
Building a stock code system from scratch takes half a working day. Repairing a badly built one six months later means combing through thousands of rows by hand. What follows covers the code structure, the field names in each panel, the warehouse side and a one-week migration plan.
What an SKU is and what it fixes
SKU stands for Stock Keeping Unit. It is the identity card of every variant you sell. The medium black t-shirt and the large white one are two SKUs, two stock rows and two separate sales figures, even though the product page might be the same.
You create the code yourself. Nike has one internal reference, your warehouse has another, and a competitor selling the same shoe has a third. That freedom cuts both ways. Set the rules and the system fits your catalogue exactly. Set none, and in six months nobody can read the codes.
A normal day without stock codes
- The pick slip says "blue t-shirt" and five different blue t-shirts sit on the shelf, so the picker guesses.
- The system shows 100 units, the shelf holds 93, and nobody knows which size went missing.
- An item sold on a marketplace still shows as in stock on your own site, and two days later you write the cancellation email.
- Purchase orders get placed on gut feeling because nobody can see which size sells out first.
What one SKU actually represents
The test is simple. Anything a customer treats as a different product deserves its own SKU. Different size, separate SKU. Different colour, separate SKU. The 100 ml and 200 ml versions of one cream, separate SKUs. Buying the same item from two suppliers does not create a new SKU, though. That belongs in a supplier field, and batch numbers belong in a lot field.
Getting this boundary right decides every report you will ever run. Leave size out and you can never answer which size sells out first. Push batch numbers in and every delivery spawns a new code. Settling it before you set up warehouse and fulfilment processes costs far less than a bulk correction later.

How to build the code itself
Random numbers such as PROD001 and PROD002 are wasted characters, because the code tells you nothing about the item. A useful code follows one skeleton:
[Category] - [Attribute 1] - [Attribute 2] - [Sequence]
Six worked examples
- TSH-M-BLK-001: t-shirt, medium, black, first record.
- SHO-42-WHT-NKE-015: shoe, size 42, white, Nike. Selling a single brand? Drop the brand block and keep the code short.
- LAP-15-I7-16GB-512-002: 15 inch laptop, i7 processor, 16 GB RAM, 512 GB SSD. Long, but technical catalogues earn that detail back.
- CRM-FCE-SPF50-100-005: face sunscreen, SPF 50, 100 ml.
- SFA-3S-OAK-WHT-010: three-seater sofa, oak legs, white fabric.
- PIL-50X70-DWN-CRM-003: 50x70 pillow, down filling, cream.
Rules the code has to obey
- Stay between 8 and 15 characters. T1 says nothing, TSHIRT-MALE-MEDIUM-BLACK-COTTON-ROUNDNECK-001 cannot be read across a warehouse aisle.
- Use uppercase throughout. Mixed forms like Tsh-m-Blk-001 create silent mismatches the moment you run a lookup in a spreadsheet.
- Separate blocks with hyphens only. Underscores get trimmed by some marketplace importers and dots cause trouble in CSV files.
- Never use percent signs, ampersands, hashes or spaces. Those characters break codes inside API calls.
- Keep an abbreviation dictionary: BLK black, WHT white, NVY navy. Park it in a shared sheet so new staff read from the same page.
- Open the sequence at three digits. Expecting more than 999 items in a category? Go to four now, because adding a digit later breaks sorting.
Keep price, supplier name and dates out of the code. Prices move, suppliers change, and the code has to stay fixed for the life of the product.
SKU, barcode, GTIN and marketplace IDs
These four get mixed up constantly, and the confusion shows up in operations.
Your SKU is internal, unstandardised, and assigned by you. A barcode is the machine-readable image, and the number underneath usually belongs to the GTIN family: a 12 digit UPC in the United States, a 13 digit EAN across Europe and Turkey. GS1 allocates those numbers, with Turkish applications handled through GS1 Turkey. A marketplace ID is generated by the platform itself, such as a Trendyol product number, and you cannot change it.
| Attribute | SKU | Barcode (UPC/EAN) | Marketplace ID |
|---|---|---|---|
| Who creates it | You | GS1 and the manufacturer | The platform |
| Standardised | No | Yes | Platform specific |
| Unique where | Inside your system | Worldwide | On that platform |
| Used for | Stock, picking, reporting | Till, shipping, customs | Seller panel |
| Changeable | Technically yes, practically no | No | No |
| Example | TSH-M-BLK-001 | 8690000000001 | Auto assigned |
One product, three numbers
Take a running shoe on your shelf. The factory reference is NK-AIR-270-BLK-42, the EAN printed on the box is 8690000000001, and your own SKU is SHO-42-BLK-NKE-020. A competitor selling the identical shoe might file it as NIKE-270-42-BLACK-015. The EAN never changes hands. The SKU changes with every seller.
Which one goes where
Use the SKU for stock counts, purchase orders and sales reports. Use the barcode for shipping paperwork, customs documents, scanner-based counting and any physical till. Marketplace IDs stay where they were born, useful for support tickets and nothing else. In a seller panel you fill both fields: EAN in the barcode box, your own code in the stock code box.
The same SKU on every channel
One rule governs everything here. The code must be character-for-character identical everywhere. If your site says TSH-M-BLK-001, the marketplace cannot say TSH-M-BLK-01 or tsh-m-blk-001. A single character of drift means the integration fails to match that row and the two stock pools drift apart.
Field names panel by panel
- In the Trendyol seller panel the field is called Stok Kodu, and the barcode field next to it is mandatory.
- Hepsiburada labels the same field Satıcı Stok Kodu, meaning seller stock code.
- Shopify path: Products, open the item, scroll to Variants, fill the SKU box on each variant. Tick Track quantity while you are there.
- WooCommerce path: Products, open the item, Product Data box, Inventory tab, SKU field. Variable products need a code on every variation.
- Ikas exposes the field as Stok Kodu at both product and variant level.
- In Tecof the stock code sits on the variant row of the product screen, and the marketplace integrations match listings through exactly that field.
What syncing looks like in practice
Say you hold 50 units of TSH-M-BLK-001. One sells on your own site and the count drops to 49. The integration finds the same code on Trendyol and Hepsiburada and pushes 49 there too. Break the match and each channel keeps its own 50, so you sell a hundred units you never owned. That gap returns as cancellations, penalty points and return shipping.
Payments and logistics ride on the same key. When the line items on an iyzico or PayTR order carry the codes printed on the courier manifest, reconciliation takes minutes instead of an afternoon.
Once you run more than three channels, name one source of truth. Your own store holds the master stock and the marketplaces feed from it. When you compare platform options, check variant-level code support and push frequency. An integration that syncs hourly will not survive a campaign day.

SKUs in the warehouse and on the courier run
The payoff shows up on the shelf. Map each code to a shelf address and picking time collapses. TSH-M-BLK-001 lives on shelf A3, SHO-42-WHT-015 on C7. The pick slip carries the code and the address instead of a product name, and the picker walks straight there.
A sample calculation
The table below is a template rather than a measurement, so replace the figures with your own. Assume a store shipping 120 orders a day and a return that costs 180 TL once you count the leg back and the reshipment.
| Line | No codes, no addresses | Codes and addresses in place |
|---|---|---|
| Picking time per order | 4 minutes | 90 seconds |
| Total time for 120 orders | 8 hours | 3 hours |
| Wrong item shipped | 3 percent | 0.5 percent |
| Faulty shipments per day | 3.6 units | 0.6 units |
| Daily return cost | 648 TL | 108 TL |
| Monthly gap over 26 days | roughly 14,000 TL | |
Swap in your own averages and your own courier rates, whether you ship with Yurtiçi Kargo, Aras or MNG. The arithmetic usually points the same way: a wrong parcel costs more than slow picking ever did.
Labelling and counting discipline
- Put a label on the shelf edge carrying both the code and the address.
- Scan returned goods before they go back on the shelf. Unchecked put-away is where counts start drifting.
- Count ten SKUs every day rather than shutting down for a full inventory once a month.
- Have the packer read the code on the parcel one last time before it leaves. That single step removes most mis-ships.
Turning SKU data into decisions
Once the codes hold, you own a clean row-level sales history. Look at codes instead of product names and the profitable variants become visible without any analysis tooling.
ABC analysis
Sort the last thirty days by code, multiply units by unit margin, and rank the contribution.
| SKU | Units in 30 days | Unit margin | Contribution | Class |
|---|---|---|---|---|
| TSH-M-BLK-001 | 320 | 90 TL | 28,800 TL | A |
| TSH-L-BLK-002 | 210 | 90 TL | 18,900 TL | A |
| SHO-42-WHT-015 | 40 | 260 TL | 10,400 TL | B |
| PIL-50X70-DWN-CRM-003 | 25 | 70 TL | 1,750 TL | C |
Class A must never run out. Trim the stock tied up in class C and move that cash into class A. Those figures are illustrative, so rebuild the table with numbers pulled from your own panel.
Tying ad spend to the code
Write the SKU into the item id field of your Google and Meta product feeds and your ad report suddenly shares a key with your stock report. That makes "how much did I spend on this variant and what did it return" a single-table question. Working out ROAS at variant level beats staring at category averages, and pausing ads for out-of-stock codes becomes automatic through the same match.
When a code sells out
Add a back-in-stock form on the product page. Collect email and phone under a proper KVKK privacy notice, and register the commercial messaging consents with IYS before you send anything. When the item returns to the shelf, that one notification usually converts better than a general campaign email.
Common mistakes and a migration plan
Fixing an existing catalogue is harder than starting clean, so learn the failure patterns first.
Six expensive mistakes
- Different codes per channel. TSH-M-BLK-001 on the site, TSHM BLK1 on the marketplace. No match, no sync.
- Ignoring variants. One "t-shirt" record covering five sizes. Nobody sees which size ran out.
- Changing codes later. Past orders, returns and reports point at the old code, so history breaks.
- Encoding the price. The first price rise turns the code into a lie.
- Encoding dates or batches. Every delivery creates a new SKU and the catalogue inflates.
- Skipping the dictionary. One person writes NVY, another writes NAV, and six months later you have two products that are one.
A seven day migration
- Day 1: Write the category abbreviations and the attribute dictionary into one shared sheet.
- Day 2: Export the current catalogue as CSV. Columns: name, category, variant, old code, new code, quantity.
- Day 3 and 4: Hand-write new codes for your top 50 sellers, then generate the long tail with a formula.
- Day 5: Upload the new codes to your own store first and keep the old code in a separate column.
- Day 6: Update the stock code field in each marketplace panel, then verify quantities by hand on five products after the first sync.
- Day 7: Reprint the shelf labels and hand the warehouse team a printout of the dictionary.
Migrations usually stall at one point: the platform stores codes at product level, so size and colour cannot be separated. That is the quiet entry on the list of platform selection mistakes, and the bill arrives the day you try to move. Variant-level codes, multi-channel sync and CSV import are the minimum to look for in an ecommerce platform.
Here is tomorrow morning's job. Export your product list as CSV, filter the rows where the stock code column is empty, and write codes for your twenty best sellers using the skeleton above. Twenty rows take about as long as a coffee break, and your dictionary is ready for everything after that.
Frequently Asked Questions
Is an SKU the same as a barcode?
No. The SKU is an internal code you invent, and it only carries meaning inside your own systems. The EAN or UPC number under a barcode is allocated by GS1 and is unique worldwide. The same product carries one barcode everywhere and a different SKU in every store that sells it.
How long should an SKU be?
Between 8 and 15 characters suits most catalogues. Shorter codes describe nothing, longer ones cannot be read across a warehouse or fitted onto a label. Technical products may need extra blocks, in which case move some detail into product attributes. Three hyphens is a good ceiling.
Can I use different SKUs on different marketplaces?
Technically yes, practically it causes trouble. When the code matches everywhere, the integration links the rows and stock flows from one source. With different codes each channel keeps its own count and you risk selling the same unit twice.
Can I change an SKU after launch?
You can, but past orders, returns and reports stay attached to the old value, so your history fragments. If you have no choice, keep the old code in a separate field and maintain a mapping table. Schedule the change for your quietest week rather than during a campaign.
Does a small shop really need stock codes?
Thirty products is already enough, because what matters is the number of variants rather than the number of products. Thirty products across five sizes and three colours means 450 rows. Building the system while the catalogue is small is far easier than repairing thousands of rows later.
Does every variant need its own SKU?
Yes. Anything a customer chooses between is a separate stock row. The medium black t-shirt and the large black t-shirt need different codes. Without that split you cannot see which size sold out, and your next purchase order will be wrong.
Can I run the whole thing in a spreadsheet?
At the start, yes. A sheet with name, category, variant, SKU, shelf and quantity columns copes with a few hundred products. Once you pass ten orders a day or add a second channel, the spreadsheet lags behind reality. That is the point to move to a panel that treats the stock code as the master key.
Where do I get barcode numbers?
If you manufacture your own brand, a GS1 Turkey membership gives you a company prefix and you assign EAN numbers to your products. If you resell, the barcode is already printed on the box and you simply enter it in the panel. You can run a full SKU system without ever buying a barcode, since the two are independent.
How do SKUs help with stock counts and shrinkage?
You scan the code, then compare the system quantity against what is physically on the shelf. Codes that show a gap go on a separate list while you look for the cause: theft, a counting error, an unlogged return or damage. Counting ten codes a day flags problems far earlier than one annual stocktake.