# Import products from a spreadsheet

> Add many products at once from an Excel file: the template, the columns, and what to do when it fails.

*Section: Getting started · Updated: 2026-10-19*

Have your products in a spreadsheet already? By the end of this guide they are in ArmPOS, from one Excel file.

## Before you start

- **Your units must already exist.** The file names each product's unit by its short name or its name, for example pc. Make missing ones in [Products › Unit](/app/products/Units).
- **Categories, sub categories and brands are made for you** when the file names one ArmPOS doesn't have.
- **The file must be XLSX or XLS**, up to 20 MB. A CSV file is refused.

## Import the file

1. **Open [Products › Import products](/app/products/import).** The page shows an example of the format.
2. **Choose what you are importing.** Click **Single Products**, **Variant Products** or **Service Products**. Each has its own example and template.
3. **Click Download example.** Fill in that template, one product per row, and keep its header row.
4. **Add your file.** Drop it on the box, or click the box to choose it.
5. **Click Import now.** When it works, you see "Imported successfully." and land on **All Products**.

![Import Products: the tabs Single Products, Variant Products and Service Products, the box "Click or drop your Excel file here" (XLSX, XLS, up to 20MB), the Example format with the columns name, code, cost, category, sub\_category, unit, Retail price, Wholesale price, Min price, brand, Stock alert and note, and Import now, Download example and Reset.](https://armpos.online/storage/help/33c058795b-import-products-from-a-spreadsheet-1-page.webp)
*Green columns are required. Download example gives you the template to fill.*

## The template's columns for Single Products

| Column | Required | Notes |
| --- | --- | --- |
| name | Yes |  |
| code | Yes | Unique across all products and variants |
| cost | Yes |  |
| retail\_price | Yes |  |
| category | Yes | Made if missing |
| unit | Yes | Must already exist |
| wholesale\_price, min\_price | No |  |
| brand | No | Made if missing |
| stock\_alert, note | No |  |

To use sub categories, add a **sub\_category** column. A missing one is made under its category.

**Variant Products** take one row per variant. Repeat product\_name, product\_code, category and unit on each row, then fill variant\_name, variant\_code, variant\_cost and variant\_price. **Service Products** use the single columns, but a service's cost is always 0.

## When the import fails

The page lists the problem under "Import failed. Fix the issues below:". It names the product, for example a unit that doesn't exist or a code that is already used.

Your plan sets how many products the shop can have. A file that would pass it is refused before anything is added, with how many more fit. The import stops at the first problem, and no products are added until the whole file passes. Categories and brands it met before the problem may already be made. Fix the file, choose it again, and click **Import now**.

## Add their stock

Imported products start with no stock. Add the quantities you have from a second file:

1. **Open [Products › Opening Stock](/app/products/opening_stock_import).** Choose **Single Products** or **Variant Products**.
2. **Pick the Warehouse** the stock is in.
3. **Fill a file with two columns,** product\_code and qty, one row per product. **Download example** gives the template. Variant products also take variant\_code.
4. **Add the file and click Import now.** "Opening stock imported successfully." confirms it.

![Opening Stock Import: Single Products, Warehouse Default Warehouse ("Stock will be added to this warehouse."), the file opening-stock-kitchen.xlsx with Remove, the Example format with product\_code and qty, and Import now.](https://armpos.online/storage/help/4b5783ea38-import-products-from-a-spreadsheet-2-opening-stock.webp)
*The quantities are added to what the warehouse already holds.*

The quantities are added to what is already there, so you can use it again later to top up stock.

To change the cost and price of products you already have, use **Products › Import (Update Only)** instead.

## What's next

[Add your team](/app/help/add-your-team).
