One SKU for the store and the books: linking products once

Make the Tally stock item the one record, link each Shopify listing to it by code, barcode or name, and merge differences without touching the store.

One code, KRT-BLU-M, shared by the store and the books A product tag carrying the code KRT-BLU-M, joined on the left to the store and on the right to the books, with the words the same code on both. One code, store and books Store Books KRT-BLU-M the same code on both
On this page

The same kurta has three names in one shop. On the store it is "Cotton Kurta, Blue / M", with the code "kurta blue m" that someone typed on the day it was listed. In Tally it is "Kurta Blu M", entered in a hurry two Aprils ago, with the alias KBM. On the packing slip the godown staff write KBM. When an order comes in, somebody translates. On a good day that takes ten seconds. On a bad day a large goes to Nagpur in place of a medium, and the return costs more than the margin.

What cures this is a naming discipline, and no product is needed for it. Pick one record that leads, and for a business whose books are in Tally that is the Tally stock item. Give each thing you sell one code, and keep that code on both sides: as the SKU on the store, and as the part number on the Tally item. Link each listing to its item once. Where the two disagree, bring the books in line and leave the live store alone.

You can do all of that with a spreadsheet and patience. Later in this post is how Orzoni does the linking and merging, but the naming rules come first and they work with or without it.

What people mean by a master SKU

"Master SKU" is the phrase people search for when they are tired of translating. It bundles two different ideas, and it helps to pull them apart.

One is the master record: the single entry for a product that every other system defers to. When the store says Blue / M and the books say Blu M, the master record is the one that wins.

The other is the code: a short string that means this product and nothing else, wherever it is typed, scanned or printed.

You do not need a screen with that name on it. You need two decisions: which record leads, and which code travels with it. Orzoni has no feature called master SKU. What it does is link a listing to a Tally item and show the pair as one product, which is the same idea with the Tally item in the master's seat.

One product, two identities: a kurta with a store tag and a Tally tag, linked A single blue kurta. On the store it is Cotton Kurta, Blue / M, code KRT-BLU-M, 1,299 rupees. In Tally it is Kurta Blue M, part number KRT-BLU-M, HSN 6211, 16 in stock. A chain joins the two tags: linked once. On the store Cotton Kurta, Blue / M KRT-BLU-M · ₹1,299 linked once In Tally Kurta Blue M Part no. KRT-BLU-M · HSN 6211 · 16 Nos
One kurta, two records. The code is the same on both, and they are linked once.

What a SKU is on Shopify, and what the same thing is in Tally

The two systems do not use the same words, which is half the confusion.

On Shopify, SKUs are "codes that you can use internally to track your inventory and report on your sales". A SKU belongs to a variant, not to a product: the blue medium has one, the red large has another. Shopify allows up to 2,048 variants on a product, across up to three options such as size and colour. And it wants every SKU to be the only one of its kind: "SKUs within your Shopify admin must be unique and no two product variants should include the same SKU in their details."

A barcode is something else. Shopify says so in one line: "SKUs are different from barcodes and are used for different purposes." The barcode is the number printed on the product, often by the manufacturer. The SKU is yours. A variant can carry up to 20 barcodes and one SKU.

In Tally, the thing a bill, a godown and a GST rate all point to is the stock item, and its identity is its name. Two more fields can help it be found:

  • Aliases. Tally's help page says "you can specify multiple aliases for the stock item". An alias is another name the item answers to.
  • Part number. Switch on "Provide Part No. for Stock Items" in the item's configuration (F12) and, in Tally's words, a "stock item can be created with actual names as well as by their part numbers".
On ShopifyIn Tally
The thing itselfA variant of a productA stock item
What identifies itProduct title and option valuesThe item's name
Your own code for itSKUPart number, or an alias
Where its count is keptBy locationBy godown

So "one SKU for the store and the books" comes to this: the variant's SKU and the stock item's part number are the same string.

Why codes fail

A code is compared by a computer, character by character. People read "krt blu m" and "KRT-BLU-M" as the same thing. A computer comparing the two does not, unless someone has taught it to.

Why codes fail: five pairs that look alike to a person and differ to a computer Five pairs of codes. KRT-BLU-M against krt blu m: capitals and spaces. 0012 against 12: a spreadsheet dropped the zeros. KRT-BLU-M against KRT_BLU_M: a hyphen on one side, an underscore on the other. SO10 against S010: the letter O and the figure 0. DIYA for the piece and DIYA for the pack of 6: one code on two things. KRT-BLU-M ≠ krt blu m capitals and spaces 0012 ≠ 12 a spreadsheet dropped the zeros KRT-BLU-M ≠ KRT_BLU_M a hyphen on one side, an underscore on the other SO10 ≠ S010 the letter O and the figure 0 DIYA the piece = DIYA pack of 6 one code on two different things
Five pairs that a person reads as the same and a computer does not.

The usual ways a code goes wrong:

  1. Spaces and capitals. One person types KRT-BLU-M, another krt blu m. A trailing space, which nobody can see, is the worst of these.
  2. Leading zeros. A code of 0012 goes through a spreadsheet and comes out as 12. Microsoft's own support page says "Excel automatically removes leading zeros, and converts large numbers to scientific notation". The same page gives the cure, which is to format the column as Text before pasting, and the catch: "This will not change numbers that have already been entered."
  3. Hyphens against underscores. KRT-BLU-M on the store, KRT_BLU_M in a supplier's sheet.
  4. Letters that pass for figures. SO10 and S010. Shopify's advice is to "avoid a format where the numbers 0 and 1 can be confused with the letters O and I".
  5. One code on two things. The loose diya and the pack of six both carry DIYA. Shopify warns that "duplicate SKUs can cause issues with third-party integrations and inventory tracking", and its admin shows a warning when it finds one.
  6. Codes that carry facts which change. The supplier's initials, the rack number, the season, the price. The day you change supplier, the code is a lie, and somebody "corrects" it on one side only.
  7. Variants with no code of their own. The product has a code and its five sizes share it, or have none.

Each of these produces the same morning: a listing that will not match its item, and a person matching by eye.

Anatomy of a code that lasts

A good code is boring. It says what the thing is and which one, in a fixed pattern, and nothing else.

Anatomy of a good SKU: KRT-BLU-M The code KRT-BLU-M split into three parts. KRT says what it is, a kurta. BLU says which one, blue. M is the size, medium. Four rules below: nine characters, capitals and hyphens only, no spaces and no leading zero, no letter O or I that reads as 0 or 1. KRT - BLU - M what it is kurta which one blue size medium 9 characters: fits any label or screen Capitals and hyphens only No spaces, no leading zero No O or I that reads as 0 or 1
A code in three fixed parts: what it is, which one, and the size.

The rules, with Shopify's own guidance where it has some:

  • Short. Shopify: "Keep your SKUs as short as possible, such as no more than 16 characters." KRT-BLU-M is nine. It fits a shelf label, a packing slip and a phone screen.
  • Capitals, figures and hyphens only. Shopify: "Don't use special characters, symbols, or spaces as they can cause search problems", and "Dashes and underscores are useful for separating product attributes". Pick one separator. The hyphen is the safer of the two: it survives being read aloud over the phone.
  • Start with a letter. Then no spreadsheet can strip a leading zero.
  • Avoid O and I, or avoid 0 and 1. Not both in the same catalogue.
  • Describe what cannot change. What it is, its colour, its size. Never the supplier, the rack, the price or the year.
  • One pattern for the whole catalogue. Product, then the attribute buyers choose first, then the next. If size comes last for kurtas, it comes last for shirts.
  • A pack is a different thing sold, so it gets its own code. Add a suffix: -P6 for a pack of six.
  • Never reuse a retired code. Old bills and old orders still carry it.

A small catalogue done this way:

Sold asCodeCharacters
Cotton Kurta, Blue, MKRT-BLU-M9
Cotton Kurta, Red, LKRT-RED-L9
Ceramic Mug, BlueMUG-BLU7
Brass Diya, singleDIY-BRS7
Brass Diya, Pack of 6DIY-BRS-P610

Write the pattern on one page and pin it up next to the computer where products are created. The page matters more than any tool: codes go wrong when the fourth person to add a product has never been told the rule.

Why the Tally item should be the record

The store is good at things the books have no place for: the title buyers see, the photographs, the description, the selling price, the collection. Let the store lead on those.

The Tally item leads on everything a bill depends on.

Tax hangs off it. The item carries the HSN code and the GST rate, and every invoice line takes them from there. How many digits of HSN an invoice must show depends on turnover: under Notification 78/2020-Central Tax, in force from 1 April 2021, a business with aggregate turnover up to ₹5 crore in the previous year shows 4 digits, and one above ₹5 crore shows 6. A business up to ₹5 crore may leave the HSN off invoices to unregistered buyers. And since the May 2025 return period, the HSN summary in Table 12 of GSTR-1 has been tightened under a GSTN advisory of 1 May 2025: the code is chosen from a list instead of typed, and the table is split between supplies to registered and unregistered buyers. A wrong HSN on a stock item is no longer a cosmetic matter. It follows that item into every return.

The count hangs off it. Purchases add to it, bills take from it, a stock journal corrects it, and the godown says where it is. The store's count is a copy of this one. How that copy is kept in step is its own subject: see How to keep Shopify stock in step with your Tally godown.

Your accountant already trusts it. Nobody closes a year from a storefront.

Leads onThe Tally itemThe store listing
Name in the books, HSN code, GST rateYes
Count and costYes
Title, photographs, descriptionYes
Selling priceYes

The code is the one thing both carry, and it is the same on both.

If you are going to fix your codes, fix them before you link anything, so every link is made on the clean code.

A catalogue before and after its codes are put right Before: the kurta is kurta blue m on the store and KBM in Tally, the mug is 0012 on the store and 12 in Tally, and the diya pack of 6 shares the code DIYA with the single piece. After: the kurta is KRT-BLU-M on both, the mug is MUG-BLU on both, and the pack is DIY-BRS-P6, linked to DIY-BRS with six to a sale. Before Store code In Tally Kurta kurta blue m KBM Mug 0012 12 Diya × 6 DIYA DIYA After Store code In Tally Kurta KRT-BLU-M KRT-BLU-M Mug MUG-BLU MUG-BLU Diya × 6 DIY-BRS-P6 DIY-BRS, × 6 One code for each thing sold. A pack has its own.
Three products before and after their codes are put right.

On the Shopify side there are two ways to change many SKUs: the bulk editor, or exporting products to a CSV file, editing the SKU column and importing it again. The CSV route is quicker for 200 listings and has two traps, both from Shopify's own page:

  • Leave a column blank and it is taken literally: "the matching value in the product list is overwritten as blank". Change the SKU column and leave every other column exactly as it was exported.
  • Do not touch the option values while you are in there. Changing them "deletes existing variant IDs, and creates new variant IDs", and whatever was tied to the old variant may need tying again.

Three habits make a rename safe:

  1. Format the code column as Text before you paste anything into a spreadsheet.
  2. Do fifty at a time, and never during a sale.
  3. Keep the old code alive on the Tally side as an alias of the item, so last year's paperwork still finds it.

Linking is saying, for each listing, "this is that item". It is done once per listing and remembered.

By hand, it is a two-column sheet: SKU on the left, Tally item on the right, sorted by SKU, with every blank and every duplicate chased down.

In Orzoni it is the Listings view of a connected store. Orzoni reads each listing's code, barcode and name, puts the likeliest Tally item forward, and says how far to trust it:

It saysWhy
CertainThe listing's code or barcode is one item's and no other's. The code can be the item's name, its part number or an alias it has in Tally
LikelyThe very same name, the code written inside the item's name, or names that agree closely with no other item near
One of severalThe closest of several items that could be it

What tells two items apart has to agree before anything is put forward: a size, a colour, a weight, a number. A red shirt in medium is never offered for the same shirt in large.

Everything marked certain is approved in one press, up to 500 listings at a time. The rest you approve, change or set aside one by one. Linking sends nothing to the store.

Here is how it can fall out. Take a store with 200 listings and a Tally company with 180 stock items, where about half the codes are already good. These figures are an example, not a measurement.

What the first read showsListingsWhat you do
Certain96Approve all, one press
To check (likely, or one of several)58Look at each. At 15 seconds apiece, about 15 minutes
No item, but it is in Tally under another name14Choose the item by hand
No item, and it is not in Tally20Create it in Tally (below)
No item, and it never should be: gift cards, wrapping12Set aside
Total200

That is 96 + 58 + 14 + 20 + 12 = 200. It is an afternoon's work, and the clean codes are why 96 of them took one press.

The Items list in Orzoni on its Linked view, in the sample company Meridian Home. Ten products are on Shopify and in Tally as one, each with a chain mark. Several say what differs on Shopify, such as name, code, stock, beside their HSN code and GST rate.
Linked products on the Items list in Orzoni, sample company Meridian Home. The small line says what differs on Shopify.

Once linked, a listing and its item are one product wherever products appear: one row, with a small chain mark. The steps are in Match your store's listings.

Merge the differences: name, code, HSN and count

Linked does not mean identical. The store says "Cotton Kurta Blue M", Tally says "Kurta Blu M". The store has the code, Tally has none. A merge is how the books are brought in line.

In Orzoni, a linked item whose two sides differ opens with a sheet that sets them next to each other, a row for each thing compared. Rows that differ are ticked. Untick anything you want left as it is, then press Merge as one.

What a merge moves: name, code, HSN code and count go into Tally, price does not Two columns, On Shopify and In Tally. Four arrows run from the store to Tally: the name renames the item, the code becomes its part number, the HSN code is set, and the count is set by a stock journal. A fifth, crossed arrow for price: it is not written. Nothing on the store changes. On Shopify In Tally Cotton Kurta KRT-BLU-M 6211 7 ₹1,299 renamed part number HSN set stock journal not written Name Code HSN code Count Price Nothing on the store changes.
A merge brings four things into Tally and leaves price alone. Nothing on the store changes.
RowWhat merging does in Tally
NameRenames the item to the store's name, with the variant after it
CodeSets the store's code as the item's part number
HSN codeSets the item's HSN code. A code that is the other with more digits after it counts as the same
In stockSets Tally's count by a stock journal: what Tally has over is written off, what it is short of is entered as stock found
PriceNothing. It is shown and never ticked

Three things to understand before you press.

It goes one way. Merging updates the item in Tally. It never changes the live Shopify product: not its name, not its code, not its price.

The count is turned back into Tally's terms. If the store shows 7, with 2 sold online and waiting for a bill and 1 kept back, Tally is set to 10. That is 7 + 2 + 1. After that the store's count works out to exactly what it already shows.

A count is offered for merging at the start, not for ever. It is offered when the two sides have never agreed, or when someone changed the count on Shopify. Once they have agreed, Tally leads, and a later difference just means the store is waiting for Tally's newer count.

The merge sheet on an item's page in Orzoni, in the sample company Meridian Home. Shopify and Tally say 3 things differently. Name, Code and In stock are ticked, each showing what is on Shopify, what is in Tally and what Tally's would become. HSN code and Price are shown with no tick. Merge as one is at the foot.
The merge sheet in Orzoni, sample company Meridian Home.

Price is left out for a reason the sheet states in a few words: Tally keeps no one price for an item. The store's price is kept in Orzoni as the item's selling price, where none was set.

A product only on Shopify: create it in Tally in one press

Twenty of the 200 listings in the example were not in Tally at all. They were new arrivals, listed on the store the week they came in and never entered in the books. Until each is a stock item it cannot go on a bill.

Typing twenty item masters by hand is where a new round of mismatched names begins. In Orzoni, a product in the Shopify only view opens on a form already filled in from the store:

BoxStarts as
Name in TallyThe product's name, with its variant after it
UnitsThe unit most of your items are counted in
GST rateNot set: choose one
HSN codeThe store's code
What each one costEmpty

Press Create this product in Tally and the item is made in Tally and linked, with the store's code kept as its part number. It starts with a count that makes the store's figure the right one: what the store shows, plus what was sold there and not yet billed, plus what you keep back.

Fill in two boxes before you press. Choose the GST rate, because a bill cannot work out tax without it. And give the cost, or the stock goes into the books at no value.

If Tally already has an item of that name, Orzoni makes nothing and says so. Link the product to that item instead: that is the 14 in the table, the ones that were in Tally all along under another name.

The page of a product that is on Shopify only in Orzoni, Terracotta Table Lamp Large, with 12 on Shopify, in the sample company Meridian Home. The form Not in Tally yet has Name in Tally, Units, GST rate, HSN code and What each one cost, then Create this product in Tally. Under it is Already in Tally under another name, with Link them.
A product that is on Shopify only, in Orzoni, sample company Meridian Home, with the form that creates it in Tally.

An item only in Tally: it waits

The other side of the list is items in Tally that no listing points to. Some are raw material or packing. Some are goods you sell only over the counter. Some you have been meaning to put online.

Nothing happens to these. Orzoni does not make a product on your store from a Tally item, and it does not change one that is there. They sit in the Tally only view until you decide.

When you do list one, the discipline pays for itself. Create the product in Shopify and give its variant the same code the Tally item has as its part number. At the next read of the store, the listing's code is one item's and no other's, so it comes up as certain and is approved in a press.

Variants and packs

Every variant is its own thing. Blue / M and Red / L are two SKUs on the store and two stock items in Tally. A "Kurta" item in Tally with five sizes folded into it cannot be linked to five variants, and cannot tell you which size to reorder.

Linking variants goes quickly once the first is done. Match Blue / M to Kurta Blue M by hand, and Orzoni looks for the item whose name fits each sibling: Red / L is offered Kurta Red L, marked as following the first. You approve those where you can see them. They are never swept up with the certain ones.

A pack on the store can draw on loose stock. Keep the stock in Tally loose, give the pack its own code on the store, and say how many pieces one sale takes: "one sale is 6". The pack then draws on the same count as the single piece and shows how many whole packs are left. A pack is shown as linked, and is not merged by name or code, since its name and code are rightly different from the loose item's.

Two listings must not stand for the same item in the same quantity. If they do, nobody can say how many pieces belong to which, and no count is sent for either. A pack and the loose piece do not clash: one sale of each is a different number.

A checklist for the first fifty

Do the first fifty products properly and the next 150 follow the pattern.

  • Write the code pattern on one page: parts, order, separator, pack suffix.
  • Pick your fifty fastest sellers. They are where a wrong pick costs most.
  • In a sheet formatted as Text, write the new code beside each old one. Check for duplicates.
  • Change the SKUs on the store, by bulk editor or CSV, touching no other column.
  • In Tally, switch on part numbers for stock items.
  • Link the fifty listings to their items. Approve the certain ones, look at the rest.
  • For each linked product, read what differs and merge name, code and HSN into Tally.
  • Create in Tally anything that is on the store only, with its GST rate and cost.
  • Count the shelf for those fifty, and correct Tally before any count goes to the store.
  • Add the old codes as aliases, then tell the godown staff the new ones.

When a count on one of those fifty still looks wrong afterwards, the cause is no longer the name. Why your store's stock does not match the godown lists the others.

Questions people ask

Do I need Orzoni to do this?

No. The rules for a code, and the decision that the Tally item leads, work with a spreadsheet. What Orzoni adds is the matching, the pair shown as one product, and bringing Tally in line in a press where you would otherwise retype item masters.

Should my SKU be the barcode number?

Keep them separate. The barcode is printed on the product and belongs to whoever numbered it. The SKU is your own code and should be readable by your staff. Shopify treats them as two fields for that reason, and Orzoni reads both when it looks for a match.

Will merging change anything on my live store?

No. A merge updates the item in Tally only. Orzoni does not write a name, a code or a price to the store. The stock count is the one thing it sends there, and only after you have turned counts on and looked at what would change.

Why is price left out of a merge?

Tally keeps no single price on a stock item, so there is nothing to bring in line. The store stays the place where the selling price is decided, and Orzoni keeps that price as the item's selling price where none was set.

My Tally item names are long descriptions. Do I have to rename them?

No. Rename only where the name is wrong or misleading. The name row on the merge sheet can be unticked, and the code can still be set as the part number. One code is the point. One name is a convenience.

What does Orzoni cost?

₹999 a month for one company, or ₹2,499 for up to three. Billing is not open, so nothing is charged today. See Pricing.

Start with ten

Link the first ten products and list what does not match. Orzoni shows the certain matches first; approve them in one press. Then read what differs on each, and you will know by evening how much renaming your catalogue needs. The screens are in Products on Shopify and in Tally, shown as one, Match your store's listings and Items.

Facts and sources

Everything about Shopify, Tally, Excel and GST below was checked on 11 October 2026 at the addresses given. What is said about Orzoni comes from its own guides, linked in the text.

The catalogue of 200 listings and 180 items is a worked example. HSN 6211 in the pictures is the sample company's own data, not advice on classifying a kurta: take the HSN for your goods from your accountant.

Pass this post on

Link the first ten products and list what does not match

Orzoni shows the certain matches first; approve them in one press.

  • Nothing is charged today.
  • Tally is untouched; leave whenever you like.
  • One call and we set up your store with you.