Importing Products
You can import products into Fuze Store POS to quickly set up or update your inventory. This works for migrating from another system or adding many items at once.

Step-by-Step Guide
- Open the app drawer.
- Go to Configurations.
- Under Data Management, tap Import.
- Choose the matching data type on the type grid.
- Optionally tap Download template for a CSV starter (your live export).
- Upload a CSV, XLS, or XLSX file, review the preview, then confirm Import.
Services have their own file
Products and services share one catalog, but each kind imports and exports on its own sheet. A Products file holds only products, with weight, stock and preparation-time columns. Services use a duration instead — see Importing Services.
Before you import
- Item limit. New rows count toward your plan's item limit, the same as adding items one by one. Products and services share the one limit. If the file would go over it, nothing is imported, and the message says how many more your plan allows.
- Updates take no room. Rows that match an item you already have only update it, so you can always re-import your own export.
Field Reference
Here are the columns in the Products import file:
| Field | Description | Required | Possible Values | Example |
|---|---|---|---|---|
| id | UUID identifier for the product. Leave empty to create a new product. | 123e4567-e89b-12d3-a456-426614174000 | ||
| sku | Stock Keeping Unit. A unique code for each product. Letter case doesn't matter: SKU-123 and sku-123 are the same SKU. An existing SKU updates the matching product. A file can't list the same SKU on two rows. | SKU-12345 | ||
| enable_product | Whether the product is active in the store. Defaults to YES if empty. | YES, NO | YES | |
| is_available | Whether the product is available for sale. Defaults to YES if empty. | YES, NO | YES | |
| sell_on_register | Whether the product is sold at the register. Blank means YES on a new product and leaves an existing product unchanged. | YES, NO | YES | |
| sell_online | Whether the product is sold on your online store. Blank means YES on a new product and leaves an existing product unchanged. A row with both sell_on_register and sell_online set to NO is refused. | YES, NO | YES | |
| name | Name of the product. | Yes | Grilled Chicken | |
| is_bundle | Whether the product is a bundle of other products. Defaults to NO if empty. | YES, NO | NO | |
| bundle_item_ids | Pipe-separated list of product IDs or SKUs in the bundle. Only regular products can be in a bundle: a bundle can't contain another bundle or itself. If a row breaks this, nothing in the file is imported. | Yes, if is_bundle is YES | SKU-123|SKU-124 | |
| category_ids | Pipe-separated list of category IDs or codes. The categories must already exist. | chickens|best-sellers | ||
| description | Description of the product. | Delicious grilled chicken | ||
| weight | Weight of the product. | 1.5 | ||
| weight_unit | Unit of weight. | Yes, if weight is set | lb, kg, g, mg, mcg, oz, st, ct, t, ton, l | kg |
| manage_inventory | Whether inventory tracking is enabled. Defaults to NO if empty. | YES, NO | NO | |
| quantity | Quantity in stock. | Yes, if manage_inventory is YES | 100 | |
| low_stock_level | Threshold for low stock alerts. | 10 | ||
| stock_status | Current stock status. | Yes, if manage_inventory is YES | IN_STOCK, OUT_OF_STOCK | IN_STOCK |
| modifier_ids | Pipe-separated list of modifier IDs or codes. The modifiers must already exist. | chicken-part|chicken-size | ||
| price | Selling price of the product (tax included). | Yes | 79.99 | |
| cost | Cost price of the product. | 10.00 | ||
| enable_special_price | Whether the special price is enabled. Defaults to NO if empty. | YES, NO | NO | |
| special_price | Special discounted price. Must be above 0 when enable_special_price is YES. | Yes, if enable_special_price is YES | 7.99 | |
| special_price_from | Start date for the special price. A plain date or a full ISO timestamp both work — your export emits the full timestamp. | Yes, if enable_special_price is YES | ISO date or datetime | 2024-06-01 |
| special_price_to | End date for the special price. | ISO date or datetime | 2024-06-30 | |
| tax_class | Tax class name or code. | TAXABLE_GOODS, NONE | NONE | |
| tax_id | Tax UUID associated with the product. Unlike the other reference columns, a tax name is not accepted here — copy the id from your Taxes export. A product has one tax: re-importing it with a different tax replaces the old one. | Yes, if tax_class is TAXABLE_GOODS | UUID only | 123e4567-e89b-12d3-a456-426614173000 |
| preparation_time_minutes | Time needed to prepare the item, in minutes. Defaults to 0 if empty. | 0 to 999999.99 | 15 | |
| loyalty_eligibility | Whether this product earns loyalty points. DEFAULT follows the loyalty program's earning list; ELIGIBLE always earns; NOT_ELIGIBLE never earns. Blank leaves an existing product unchanged. | ELIGIBLE, NOT_ELIGIBLE, DEFAULT | DEFAULT |
YES/NO and enum values are not case-sensitive, and blank cells fall back to the defaults noted above.
Tips
- Import categories and modifiers first. The
category_idsandmodifier_idscolumns match against records that already exist, so codes with no match are skipped without an error and the product imports uncategorized. - Import bundle members before the bundles that contain them, for the same reason —
bundle_item_idsonly matches products that already exist. - Review your data before importing to avoid errors.
- Download a sample export file first if you are unsure about formatting.
- Keep product names and SKUs consistent across your inventory.
- Update your product data regularly to reflect current prices and stock levels.
Edge cases
- All or nothing. Every row is checked before anything is saved. One bad row stops the whole import and nothing is saved. The app lists each problem as Row 2: … and names the column.
- How a row is matched. A row matches an existing record by its id first, then by its SKU (letter case does not matter, and a file cannot list the same SKU twice). A row that matches is updated, and every other row is added. A row with none of these is always added, so running a hand-made file twice makes duplicates. Export first and edit that file to update safely.
- Spreadsheet formats. You can upload .csv, .xls, or .xlsx. The file is read by what it really is, so a damaged or unreadable spreadsheet is refused as a bad format. A CSV with a single column has no separators and is refused as not being a spreadsheet, so add a second column or save it as .xlsx.
- Headers matter, not order. Extra columns are ignored. YES/NO and other fixed values accept any letter case, and blank cells fall back to the default for that column.
- Starter and up. Import is not on the free Basic plan. It needs Store Settings · Import, and Download template also needs Store Settings · Export.
- The item limit. New rows count toward your plan's item limit, the same as adding items one by one. Products and services share one limit (Basic 150, Starter 500, Lite 1,000, Standard 3,000, Premium none). If the file would go over it, nothing is imported and the message says how many more your plan allows. Rows that match an existing item only update it.
- Import categories and modifiers first. Codes in category_ids and modifier_ids with no match are skipped without an error, and the product imports uncategorized. The same holds for bundle_item_ids, so import bundle members before their bundles.
- Tax. tax_id must be a tax UUID, not a name. Copy it from your Taxes export.
- Where it sells. A row with both sell_on_register and sell_online set to NO is refused. Blank leaves an existing product unchanged.
- Stock. A row with manage_inventory YES needs quantity and stock_status. Opening stock rides on product rows, with no Advanced Inventory add-on.
Works with
| Add-on or plan | What changes |
|---|---|
| Basic plan | Import and export are locked. |
| Starter and up | Import is available. Tax columns need a plan with Tax. |
| Advanced Inventory add-on | Day-to-day stock changes after import use stock adjust, purchase orders, transfers, and counts. |