Inventory operations

How to update Shopify stock from a supplier CSV or Excel file

Update Shopify stock from a supplier file with the inventory CSV: export, match SKUs, import, check errors. Plus the signs it's time to automate.

Use Shopify's inventory CSV, not the product CSV. Export it from Products → Inventory, copy the supplier's quantities into the On hand (new) column, and import the file again. Titles, prices and descriptions stay untouched.

Inventory CSV or product CSV?

The product CSV rewrites product data. If a column in your file is blank, Shopify overwrites the matching value in your store with blank. Its Inventory quantity column also only works for stores with a single location.

The inventory CSV changes quantities per location, plus a few inventory fields such as bin names. If you leave On hand (new) empty, that row's quantity stays the same.

What you need to know about the inventory CSV:

  • Export first. The export is your template.
  • How rows are matched. Shopify finds the variant by Handle, the option value columns and Location. The SKU column is for reading only. Don't edit these columns.
  • Locations. Each variant has one row per location. The location name must match exactly, including capital letters. Delete rows for locations you don't want to change.
  • Safety check. Shopify compares On hand (current) with your live stock. If stock changed after your export, for example because of a new order, that row is skipped and you get an email. So export right before you import.
  • Limits. Whole numbers only. The file can't be larger than 15 MB.
  • On hand vs Available. On hand is Available + Committed + Unavailable. If you set On hand to 10 and 2 units sit in unfulfilled orders, customers can buy 8.

Here is how a typical German supplier file maps to the Shopify columns:

Supplier column Shopify inventory CSV column Note
Artikelnummer SKU Used for lookup only
Bestand On hand (new) Whole numbers, no "12,0"
Lager Location Exact Shopify location name

Prepare your products once

  1. Go to Products and open a product.
  2. Click a variant.
  3. In the Inventory section, check that the SKU is exactly the supplier's article number.
  4. In the same section, turn on Track quantity.
  5. Click Sell when out of stock and check the option. Keep the default (stop selling at zero) for supplier products. Choose Continue selling when out of stock only for preorders or items the supplier can always deliver.
  6. Click Save.
  7. For each supplier, write down what a missing product in their file means: zero stock or no change.

Set SKUs in bulk with the product CSV if you have many products. The inventory CSV has no barcode column, so the SKU must be the shared code, even if that means using the supplier's EAN.

Update stock from a supplier file

Export

  1. Go to Products → Inventory.
  2. Click Export.
  3. In Export from, select the location for this supplier's stock.
  4. Under Inventory states shown, select All states.
  5. Under Export, select All variants.
  6. Click Export inventory.

Fill in the new quantities

  1. In Google Sheets, open the export with File → Import.
  2. Add the supplier file as a second tab called Supplier, codes in column A, quantities in column B.
  3. In the first row of On hand (new), enter the formula below. Replace I2 with the SKU cell of that row.
  4. Copy the formula down to the last row.
  5. Check the rows that stayed empty. These are products missing from the supplier file.
  6. Download with File → Download → Comma-separated values (.csv).
=XLOOKUP(I2, Supplier!A:A, Supplier!B:B, "")

The last argument decides what "missing" means. "" leaves stock unchanged. 0 sets it to zero, so use it only if the export holds just this supplier's products. To get that, search for the supplier on the Inventory page and export variants matching your search. In German Excel the function is XVERWEIS, with semicolons between arguments.

Import and check

  1. Go to Products → Inventory.
  2. Click Import.
  3. Click Add file and select your CSV.
  4. Click Upload file.
  5. Review the import summary.
  6. Click Start import.
  7. Check your email for failed rows. Fix them, export again, and import the fixed rows.
  8. Spot-check two or three products in Products → Inventory.

Where the manual process breaks

  • Code mismatches. The supplier writes 00451, your spreadsheet reads it as the number 451, and the lookup fails. When you import into Google Sheets, turn off Convert text to numbers and dates.
  • German file formats. Many suppliers send semicolon-separated files with decimal commas and Windows encoding. Shopify needs UTF-8 and commas, otherwise umlauts break. Excel with German settings can save a "CSV" with semicolons, so download from Google Sheets instead.
  • Changed files. The supplier renames a column or adds one. Your formula now reads the wrong column, and nothing warns you.
  • Stale stock. Update on Monday and your shop shows Monday's stock all week. The supplier keeps selling to other shops, so you oversell.
  • Several suppliers. Each has its own format, codes and "missing" rule.

When to automate

Look at automation when one of these is true:

  • You need to update more than once or twice a week to avoid overselling.
  • You work with more than one supplier.
  • You have more SKUs than you can spot-check after an import.
  • The supplier publishes the file at a fixed URL, on an FTP server, or by email on a schedule.
  • You regularly cancel orders because an item was already sold out at the supplier.

Apps on the Shopify App Store can fetch supplier files on a schedule and update stock by SKU. Before you pick one, check four things: which file sources it reads, whether you can map columns yourself, how it handles missing products, and whether it shows a log of every change.

Also write down, per supplier, how the file arrives, how often and which column holds the code. With your "missing" rule, that is the setup any tool will ask for.

Sources