Skip to content
Browse the library

Reference

CSV column reference

Every column Inventory exports and recognizes, and the rules it reads them by.

On this page

The columns

Product CSV columns
HeaderMeaning
NameRequired. A row without one is skipped with a warning.
SKUYour own code. Import matches existing products on it, ignoring case.
BarcodeThe code on the box. Keep it as text so leading zeros survive.
CategoryFree text, used for grouping and filtering.
QuantityTotal on hand, in the stock unit.
Uniteach, kg, g, lb, oz, L, mL, m, cm, ft, or your own word.
Pack sizeUnits in one pack, when you buy in cases.
Pack nameWhat one pack is called: case, box, bundle.
LocationThe product’s own location. A name not yet in the account is created.
BinShelf code at that location.
Bins by locationShelf codes across places, in one cell.
Stock by locationThe per-location breakdown, in one cell.
SupplierSupplier name. A name not yet in the account is created.
Supplier lead time (days)Written onto the supplier record, not the product.
Supplier minimum orderAlso written onto the supplier record.
Purchase costWhat one stock unit costs you.
PriceWhat you normally sell one for.
Low stock thresholdThe alert level for this product.
Reorder quantityA fixed order amount, which overrides the suggestion.
NotesFree text.
ArchivedYes, no, true, false, 1, 0, inactive, discontinued, and similar.

An export writes exactly these headers in this order, so exporting and re-importing a file changes nothing.

How your headers are matched

Import compares each header against a list of aliases for every field, ignoring case, spaces, and punctuation, so Item name, Qty, On hand, Unit cost, Vendor, and Reorder point all land where you would expect. The best alias wins rather than the leftmost column, so a file headed Description, SKU, Name still takes its names from Name. Each column feeds at most one field, and you can correct any mapping in the review step.

The first row is treated as a header when at least one cell matches a known alias and no cell is a bare number. Comma, semicolon, tab, and pipe delimited files are all read; exports are written with commas, quoting any field that contains one of the others.

Location breakdowns in one cell

So that an export stays one row per product, per-location detail travels in a single cell: Main warehouse: 10 | Storefront: 5 for stock, and Main warehouse: A3-12 | Storefront: B1 for shelf codes. Names are split on the last colon, so a place called “Aisle 3: back” still works, and a piece with no colon at all is joined to the one before it, which is what makes a name containing a pipe survive a round trip.

The label No location names the unassigned bucket. A breakdown that cannot be read is not partly applied: the row falls back to the plain Quantity column and the review step warns you, because importing half a breakdown would quietly shrink the total.

A blank cell and a missing column mean different things

A column the file does not have says nothing about that field, and a matched product keeps whatever it already has. A column that is present with an empty cell is the file stating a value: no price, no category, not archived. That distinction is what lets a sheet of names and prices leave costs, stock, and categories untouched.

An unreadable cell is a third case: the file tried to say something and Inventory could not read it, so the field is skipped and a warning names the spreadsheet row. Numbers accept currency symbols, thousands separators, and both decimal conventions, and money accepts accounting negatives in parentheses.

Exported text beginning with an equals sign, a plus, a minus, or an at sign is written with a leading apostrophe so that spreadsheets treat it as text rather than a formula. Import strips exactly one such apostrophe back off, so the round trip is lossless.