Import and export products
If you have more than a handful of items, import them from Excel instead of typing them in. One workbook creates the products, their variants and every SKU row with its barcode and price in a single step. Restaurants have a matching workbook for menu items.
Import products
- Open Product Settings › Import products and download the sample workbook. Its header row shows the exact columns.
- Fill in one row per item you sell (see the layout below). Up to 5,000 rows.
- Upload the file. Blank SKUs and barcodes are generated for you (automatic codes are on by default).
The row under the header may hold hints in brackets. If it does, it is skipped.
Layout
| Columns | Meaning |
|---|---|
name … return_days | The product's details (name, category, brand, units, prices and so on), the same as on the product form. Rows with the same name are one product. Fill these on the product's first row; on later rows leave them blank or repeat the same value. A different value is refused. |
variant_1, value_1, value_1_price … variant_3, value_3, value_3_price | Up to three main variants, for example Size = Large, Color = Red. Every row of a product uses the same variants in the same order. value_N_price is the extra price of that value; give it once (blank = 0). |
sku_unit | Which unit the row's SKU is for. Blank = the sale unit. Must be one of the product's units. |
sku, barcode | Optional. Blank ones are generated. Must be unique in the file and in the shop. |
sku_price, sku_cost | Optional price and cost for this SKU. Blank = the product price (plus variant extras) and cost, converted to the unit. |
With is_inclusive set to yes, every price in the row includes tax.
Every unit and variant combination gets an SKU row, as on the product form. Combinations or units you don't list are still created, using the product's price and cost and generated codes. So you only need rows for the combinations whose code or price you want to set yourself.
Example: T-shirts
| name | … | variant_1 | value_1 | value_1_price | variant_2 | value_2 | sku | barcode |
|---|---|---|---|---|---|---|---|---|
| Basic T-shirt | (category, brand, price 40…) | Size | M | Colour | White | TS-M-WH | 6281000000011 | |
| Basic T-shirt | Size | XL | 5 | Colour | White | TS-XL-WH | 6281000000028 | |
| Basic T-shirt | Size | M | Colour | Black | ||||
| Basic T-shirt | Size | XL | Colour | Black |
This creates one product with four SKUs. XL adds 5.00 to the price on both colours, because the value price is given once. The two black rows get generated SKUs and barcodes.
Rules
- All or nothing. Every row is checked first. If any row fails, nothing is saved, and each error names its row, for example
Row 7: …. - Service products have no units and no variants.
- Your subscription's product limit counts products (distinct names), not rows. See Your subscription and billing.
- Variant names go through the variant library, so "large" in the file links to your shop's existing "Large".
Update SKUs of existing products
To fill in or correct the SKU, barcode, cost and price of products you already have, export the products, edit the exported SKU sheet, and import it with Update SKUs. Use this, for example, after a supplier price change, or to add barcodes to items first created without them.
Import menu items (restaurants)
Restaurant Management › Import menu items works the same way for menu items, additions, their variants and SKUs. Download the sample from the import screen.
| Columns | Meaning |
|---|---|
name, name_ar | Rows with the same name are one menu item. Menu names are unique in the shop. |
menu_type | Standard (default) or Addition. Additions have no variants and no modifier groups. |
main_category, sub_category | Both required, by name (English or Arabic). |
price | Selling price; variant extras are added to it. Required unless every variant row has a sku_price. |
is_inclusive, is_active, is_tobacco | yes / no. Active defaults to yes. |
store | Store name. Blank = all stores. |
prep_minutes | Preparation time, 0 to 1440. |
modifier_groups | Modifier group names separated by commas, in the order the till should show them. |
variant_1 … value_3_price | Up to three variants, as for products. |
sku, barcode, sku_price | Optional. Blank codes are generated. sku_price only for variant rows; a menu item without variants uses price. |
Each menu item goes through the same checks as the menu item form, and errors are reported on the row they come from.
Example: a row with name Latte, variant_1 Size, value_1 Large, value_1_price 3, and modifier_groups Milk, Extra shot creates a large latte at the base price plus 3.00 that offers the Milk and Extra shot groups. Create the modifier groups first. See Modifier groups.
Import and export categories, brands and units
The Categories, Brands and Units of Measure pages each have their own Import and Export buttons. Import them before products, because every product needs a category and a brand, and stocked products need units. See Categories, brands and units.
Related pages
- Products
- Opening stock: load starting quantities from Excel after the products exist
- Print barcode labels
Last updated 17 Oct 2026