Import items from a spreadsheet
If you’ve got a lot of items to add or change at once, you can import them from a spreadsheet instead of typing each one in. It’s the fast way to load your catalog or push a batch of price changes. This is a one-off file upload — different from the ongoing Loyverse sync, which keeps two systems in step automatically.
Importing is part of the Advanced inventory add-on. If you don’t see Import under Catalog, it isn’t on your plan — contact Swann Software to add it.
Import a file
Section titled “Import a file”Importing is a short guided flow — you pick your file, review what’s in it, then confirm.
- Go to Catalog → Import and press Download template to get a CSV with the right column headings.
- Fill in one row per item (a sample row shows the format).
- Press Choose file, pick your filled-in CSV or spreadsheet, and press Next.
- Review the columns. For a CSV you’ll see every column we found — marked imported, not yet stored, or
ignored (anything not in the template) — plus a preview of the first few rows and the total row count, so you
can catch a mis-labelled column before anything changes. (A spreadsheet —
.xlsx— is checked on import instead; export it as CSV first if you want the column preview.) Press Next. - Confirm & import. A short summary shows the file, how many rows will be imported, and any columns that are ignored or not stored yet. Press Import to create and update your items — then read the per-row results below.
Nothing is created or changed until you press Import on the final step, so it’s safe to go Back and choose a different file at any point.
Size limits: one import handles up to 10,000 rows and a file up to 5 MB. If your catalog is bigger, split it into a few files and import them one after another — matching is by SKU, so importing in batches loads the same items without duplicating anything.
The columns
Section titled “The columns”Every row needs a name, a sku and a price. The SKU is how an import matches a row to an item, so a row without one can’t be imported — and the price is required on every row, including rows you’re only importing again to correct something else. Everything else is optional; leave anything you don’t need blank.
| Column | What it’s for |
|---|---|
| name | The item name (required). |
| sku | The item’s SKU (required) — also how an import matches an existing item (see below). |
| barcode | The barcode you scan at the register — a valid UPC / EAN (a bad barcode fails the row). |
| price | The selling price (required), written with a decimal point (12.50) — see below. |
| category | The category name — created if it doesn’t exist yet. |
| partNumber | A supplier part number, for back-office search. |
| supplierSku | The supplier’s own SKU. |
| supplierName | The supplier’s name. |
| nicknames | Alternate search names, separated by a semicolon or comma (widget;gadget). |
| description | The item description. |
| quantity | Opening stock — applied only when the item is first created (see below). |
| notIndividuallySellable | yes if the item is a component used in others, not sold on its own. |
A couple of columns (material cost and markup) are recognized but not imported yet — if your file has them, they’re listed back to you as skipped, and nothing breaks.
How to write a price
Section titled “How to write a price”Use a decimal point, and leave the thousands separator out. 12.50 and 1234.56 are the safest way to write
an amount, and a leading $ is fine. A price written the US way with a grouping comma — 1,234.56 — is read
correctly too.
A price a comma makes genuinely two-sided is refused instead of guessed at. 1,234 could be one thousand two
hundred and thirty-four, or it could be one-point-two-three-four, and nothing in the cell says which; 1.234,56 is
the same problem written the other way round. Those rows are failed and listed back to you naming the price
column, so a price is never quietly multiplied or divided by a thousand on your shelf. Rewrite the cell with a
decimal point — 1234.56 — and import again.
A comma that can only be a decimal is understood. 12,50 is read as 12.50, because a grouping comma always
has exactly three digits after it, so 12,50 cannot be one — there is only one thing it can mean. 12,5 and 0,99
are read the same way.
New items vs updates
Section titled “New items vs updates”An import matches on SKU. If a row’s SKU already exists, that item is updated; if it doesn’t, a new item is created. A row with no SKU can’t be matched either way, so it’s reported as failed — give every row a SKU.
What an update changes. A matched row updates the name, price, barcode and description of the item the SKU belongs to, plus its category, part number, supplier SKU, supplier name, nicknames and the not individually sellable setting. That’s what makes a spreadsheet the practical way to push a batch of price corrections: fix the numbers in the price column, import the file again, and the new prices are what the register charges. The same goes for a typo in a name — correct it in the name column and the item is renamed.
In the optional columns a blank cell means leave it alone, never “clear it” — so anything you leave out (or leave empty) keeps whatever it has now.
The three required columns are the exception, and price is the one that catches people out. A row still needs its name, sku and price even when the only thing you’re changing is, say, the barcode. A blank price isn’t read as “leave the price alone” — the row is reported as failed, and a file with no price column at all fails every row the same way. So the smallest file that corrects one price is those three columns, not the price column on its own. The reliable way to get a file with the right columns is to start from an export of your catalogue, change the cells you want and import the whole thing back.
Two things an update deliberately does not touch:
- quantity — opening stock applies only when an item is first created, so a later import of the same SKU won’t move your stock counts. Adjust stock from the item instead (see Track your stock).
- The kind of pricing. If an item is set up so the cashier types the price at the register, importing a price updates the suggested price and leaves it as a type-the-price item. Change that on the item itself.
Read the results
Section titled “Read the results”After importing you get a summary — Created, Updated, and Failed — followed by a row-by-row list. Any row that failed shows the reason, so you can fix just those rows in your file and import again. Because matching is by SKU, re-importing updates the rows that already landed rather than duplicating them.