Import products from CSV
CSV import creates many products at once from a spreadsheet. You upload a .csv file, match its columns to product fields, check every row on a review screen, and then import. Rinvy also creates the storage areas and suppliers that the file names and your kitchen does not have yet.
No spreadsheet? Scanning a supplier invoice builds your catalog from a photo instead.
Required and supported columns
| Column | Required | Notes |
|---|---|---|
| Name | yes | Product name. Trimmed and case-insensitive within your restaurant. |
| Storage Area | yes | Auto-created if it doesn't exist. A Category or Storage Location header from an older sheet also works. |
| Unit | no | Defaults to each. Common aliases (pound, lbs, pcs, cases, pkg) are normalized. |
| Supplier | no | Auto-created if it doesn't exist. |
| Minimum Stock | no | Numeric, in the default unit. |
| Case Size | no | Numeric. |
| Case Cost | no | Numeric. Without a Case Size, no unit cost is calculated. The review step flags the row. |
| Also counted in | no | Extra places, by storage area name, separated by ;. A missing storage area is created. Without early access, the import skips this column. |
After you pick a file, Rinvy auto-matches each column to a product field so you can confirm or correct it before importing. Here a Par header is recognized as Minimum Stock.

Which column headers does Rinvy recognize?
Rinvy recognizes a header when the whole header matches one of the names below, ignoring case. A header that matches nothing starts as Skip. You can pick its field by hand on the Map columns step. If two headers match the same field, the first one keeps it and the second starts as Skip.
| Field | Headers that match |
|---|---|
| Product name | Name, Product Name, Product, Item Name, Item, Description |
| Storage area | Storage Area, Storage, Storage Location, Category, Location, Department, Area |
| Unit | Unit, UOM, Default Unit, Counting Unit, Measure, Unit of Measure |
| Minimum stock | Minimum Stock, Min, Minimum, Min Stock, Par, Par Level, Reorder, Reorder Point |
| Supplier | Supplier, Vendor, Distributor, Purveyor |
| Case size | Case Size, Pack Size, Units per Case, Pack, Qty per Case |
| Case cost | Case Cost, Cost, Price, Cost per Case, Case Price, Unit Price |
Look at the Map step when your sheet has a Unit Price column. Rinvy maps it to Case Cost, so a price per pound would import as the price of a whole case.
Save your sheet as CSV
In Excel, choose File > Save As and pick CSV (Comma delimited) as the file type. Excel saves only the active sheet, so open the sheet with your products first (Microsoft Support: save a workbook as CSV).
Rinvy reads the first row as the column headers, so keep your column names in row 1. If you write or fix a file by hand, put a value that contains a comma inside double quotes, for example "Tomatoes, diced". That is the quoting rule of RFC 4180, the common CSV format, and the import follows it.
File and tier limits
- Maximum file size: 5 MB.
- At most 500 products in one import. Split a longer catalog into several files.
- Tier-cap enforcement: if your CSV would push your product total above your plan's cap (50 on Free, 300 on Standard, unlimited on Pro), the import is rejected entirely and no products are created.
- Supplier overage works differently. If your CSV brings the supplier total over the cap (3 / 10), the surplus suppliers are skipped and the products import without a supplier link. Each skipped supplier appears as a warning.
What CSV import doesn't cover
CSV creates standard quantity-tracked, inventoried products only. To configure these after import, edit each product:
- Status-tracked items
- Recipe outputs and non-inventoried products
- Source-product links
- Unit conversions (weight ⇄ volume, count ratios)
- Supplier item codes
Example
A two-row CSV that imports cleanly:
Name,Storage Area,Unit,Supplier,Minimum Stock,Case Size,Case Cost
Chicken Breast,Refrigerator,lb,US Foods,10,4,45.99
Olive Oil,Dry Storage,each,Sysco,2,,
The first row creates a chicken breast quantity-tracked product with case math. The second creates an oil that's ordered bottle-by-bottle (case fields blank).
The final review step counts the valid rows, lists any new storage areas and suppliers it will create, and flags rows it can't fully process, like a case cost with no case size. Nothing is written until you import.
The review step applies these rules to each row:
- A row without a name or a storage area is an error.
- A name that appears two times in the file imports once. The second row is an error.
- A unit that Rinvy does not know imports as
each, with a warning. - A case size must be a whole number of 1 or more. Rinvy drops any other case size, with a warning.
- Rinvy reads a case size in your kitchen's number format. In a kitchen that writes decimals with a comma,
1.000can mean 1 or 1000. Rinvy drops that case size, with a warning. Write1000instead. - A case cost can contain
$and commas:$1,045.50reads as 1045.50. - A minimum stock that is not a number imports as 0, with a warning.
Rows with warnings import. Rows with errors stay out, and the rest of the file imports. A name that your catalog already has, ignoring case, is not created again. The Import complete step lists it with the reason.


Round-trip with the Products page
The Products page also has an Export button (Standard and Pro) that downloads a CSV of your catalog, so you can export, edit in a spreadsheet, and re-import. On the web the file downloads. In the iOS/Android app it opens the system share sheet so you can save it or send it on. Import matches columns by header name, not by position. Export adds two columns that the template does not have, Tracking Method and Inventoried, and the import skips them. Set those per product after importing. With early access to extra places, Export also adds Also counted in, and the import reads it back for the products it creates.
Common mistakes
Importing a CSV that pushes you over the product cap
The whole import is rejected. Split the CSV into batches that fit under your cap, or upgrade your plan. See plan limits.
Case Cost with a blank Case Size
The review step warns "unit cost will not be calculated". Rinvy needs a case size to derive a per-unit cost. Set both or neither.
Using a column header that isn't auto-detected
Common aliases work (Par → Minimum Stock, lbs → lb). An unusual header starts as Skip.
Pick its field by hand on the Map columns step, or rename it to one of the headers above.
Expecting tracking method or non-inventoried to import from CSV
CSV creates plain quantity-tracked products. Edit each product after import to switch tracking method, mark as recipe output, or set conversions.