---
id: "import-products"
lang: "en"
title: "Import your product list"
summary: "Bring many products in at once from a spreadsheet. You read a row-by-row preview first, and nothing is written until you press Import."
area: "Stock & products"
kind: "task"
url: "https://zeropos.shop/help/import-products"
alternate: "https://zeropos.shop/help/import-products?lang=es"
markdown: "https://zeropos.shop/help/md/en/import-products.md"
screens: ["/backoffice/products/import"]
where_to_find: ["BACKOFFICE › Inventory › Products"]
related: ["products-and-stock","prices-and-vat","import-past-sales","adjust-stock"]
updated: "2026-10-16"
---

# Import your product list

Bring many products in at once from a spreadsheet. You read a row-by-row preview first, and nothing is written until you press Import.

The importer reads a spreadsheet of products, shows exactly what it would do, and then applies the whole file in one go, or nothing at all.

For a list of products. A single product is quicker in [Products and stock](https://zeropos.shop/help/products-and-stock); past sales come in with [Import past sales](https://zeropos.shop/help/import-past-sales).

Where to find it: BACKOFFICE › Inventory › Products.

## Before you start

- Your shops exist, with the names you will use in the stock columns ([Add a shop or storage location](https://zeropos.shop/help/locations)).
- You know how your shop charges VAT: the page says what **Price** means for you, and [How prices and tax work: VAT or sales tax](https://zeropos.shop/help/prices-and-vat) explains the modes.

## Steps

### Prepare the file

1. Open [BACKOFFICE › Inventory › Products](https://app.zeropos.shop/backoffice/products) and tap **Import**.
2. Tap **Download template** and open it in your spreadsheet app.
3. Fill in one row per product. “Name” and “Price” are required; every other column is optional.
4. In each **Stock** column, type the opening quantity at that shop.
   - With several shops, leave it blank where a shop doesn't sell the product; type 0 where it does but has none yet.
5. Delete the template's example rows and save the file as .xlsx or .csv.
   - A .csv that Excel saved in Spanish, with semicolons between cells and decimal commas, imports as it is.

### Check and import

6. Under **2. Upload the filled-in file**, tap **Choose file** and pick your spreadsheet.
7. Leave **Also update products that already exist (matched by SKU)** unticked, unless you mean to overwrite existing products.
8. Tap **Preview** and read each row: **Will add**, **Will update**, **Skipped** or **Problem**.
9. If any row has a problem, fix it in the file, then choose the file again and preview.
10. Tick the confirmation box and tap the import button, which says how many products it will write.

## What happens next

- New products appear in the Products list and on the till straight away. Their **Stock** figures become each shop's opening stock.
- Products that already existed take the file's price, minimum price, cost and details. Their stock never changes: correct it with [Correct stock by hand (Stock adjust)](https://zeropos.shop/help/adjust-stock).
- The page shows **Import complete**, with **Undo this import** in case something is wrong.

## Common questions

### My old system calls the price column something else. Will it still work?

Yes. Columns are matched by their heading, so the order doesn't matter, and common names are recognised: “Sale price”, “Selling price”, “Retail price”, “RRP” and “PVP” all count as the price. Unknown columns are listed and ignored.

### How do I undo an import?

Right after importing, tap **Undo this import** on the same page. It removes the products the import added, unless they have been sold, put on a supplier order or had stock moved since. Products it only updated keep their new values.

### What happens if I leave the SKU empty?

Zero POS gives the product the next SKU number, the same way the New Product form does.

### How do I give a product several categories?

Put them in one cell, separated by semicolons (;).

### What if a barcode in the file is already on another product?

The row still imports. The preview warns on it, naming the product that has the barcode, or the line of the file that has it too. A scan rings up the one added first, so give each product its own ([Scan products with a barcode scanner](https://zeropos.shop/help/scan-barcodes)).

### Is there a size limit?

Yes: the upload box shows the maximum file size and number of rows. For a bigger list, split it into several files and import them one by one.

## If you see this

- “**The first row doesn't match the expected columns. Check it against the list in step 1.**” — What to do: Keep the template's heading row, with at least a Name and a Price column, and preview again.
- “**A product with this SKU already exists, so the row is skipped. Tick the option in step 2 to update it instead.**” — What to do: If the file should replace that product's details, tick **Also update products that already exist (matched by SKU)** and preview again. Otherwise leave it: the row is simply skipped.
- “**This exact file was already imported, so nothing was changed. Edit it and upload it again if there is more to do.**” — What to do: The same file can't be applied twice. Add or change rows in it first, then upload it again.
- “**Cost price ignored — your role can't set cost prices.**” — What to do: The rest of the row still imports. Ask an owner to add the cost prices, or to import the file.
- “**The file changed since the preview. Preview it again before importing.**” — What to do: Tap **Preview** again, check the rows, then import.

## Good to know

- Try a few rows first: import them, check them on the till, then import the rest.
- A blank minimum price means the same as the price.

## Related guides

- [Products and stock](https://zeropos.shop/help/md/en/products-and-stock.md)
- [How prices and tax work: VAT or sales tax](https://zeropos.shop/help/md/en/prices-and-vat.md)
- [Import past sales](https://zeropos.shop/help/md/en/import-past-sales.md)
- [Correct stock by hand (Stock adjust)](https://zeropos.shop/help/md/en/adjust-stock.md)
