Bulk Import

If you are migrating from another system — or simply want to add hundreds of products at once — StockFlow’s bulk import accepts a CSV file with up to 500,000 rows (Enterprise plan) or 25,000 rows (Growth plan).


What can be imported?

Import typeWhat it creates
Products onlyGoods List entries — no stock
Stock onlyInventory records for products that already exist
Products + stockBoth in one file
ClientsClient profiles — see Add a Client

This page covers Products + Stock imports. The format is the same for products-only or stock-only — just omit the unused columns.


Step 1 — Download the template

  1. Go to Goods List → Import → Download Template
  2. Open the template in Excel, Google Sheets, or any CSV editor

The template includes all supported columns with example rows and a “Field Reference” tab.


Step 2 — Fill in the CSV

Required columns

ColumnTypeExampleNotes
nameTextWireless Headphones ProMax 255 characters
skuTextWHP-001Must be unique. Leave blank to auto-generate.
unitTextpieceMust match an existing unit name. See Units & Variants.
retail_priceNumber89.99Without currency symbol. Use . as decimal separator.

Optional columns — product details

ColumnTypeExampleNotes
categoryTextElectronics / AudioUse / for sub-category path. Created if it doesn’t exist.
tagsTextbluetooth, wirelessComma-separated
descriptionTextFree textHTML not allowed
barcodeText5901234123457EAN-13, UPC-A, or custom
cost_priceNumber42.00Used for inventory valuation
wholesale_priceNumber65.00Optional pricing tier
weight_kgNumber0.35Used for shipping calculations
brandTextSonyFree text
supplier_codeTextSON-WHP-001Your supplier’s part number
activeBooleantrueDefaults to true. Set false to import as inactive.

Optional columns — initial stock

ColumnTypeExampleNotes
warehouseTextMain StoreMust match an existing warehouse name exactly
quantityNumber50Units to add to the specified warehouse
cost_per_unitNumber42.00Overrides cost_price for this stock entry only

Step 3 — Validate your CSV

Before importing, StockFlow validates your file:

  1. Go to Goods List → Import → Upload CSV

  2. Select your file

  3. StockFlow runs a pre-import validation — this takes a few seconds

  4. Any errors are shown in a validation report, e.g.:

    Row 14: SKU "WHP-001" already exists. Update is not allowed during import.
    Row 27: unit "boxes" not found. Use "box" instead.
    Row 88: retail_price value "-5.00" is invalid — must be 0 or greater.

Fix the errors in your CSV and re-upload. You can also download the validation report as a CSV.


Step 4 — Run the import

Once validation passes:

  1. Review the import summary — how many products to create, how many stock records to add
  2. Click Run Import
  3. For large files (>1,000 rows), the import runs in the background
  4. You’ll receive an in-app notification and email when it’s complete

Updating existing products

By default, bulk import will not overwrite existing products (to prevent accidental data loss). To update existing records:

  1. Check the box Update existing products if SKU matches
  2. Only the columns you include in the CSV will be updated — blank columns leave existing values untouched

Common errors and fixes

ErrorCauseFix
Unit not foundUnit name doesn’t matchGo to Settings → Units to see exact names
Warehouse not foundWarehouse name doesn’t match exactlyCopy the name exactly from Settings → Warehouses
SKU already existsDuplicate SKUEither enable “Update existing” mode or remove the row
retail_price requiredMissing priceAdd a value or set 0.00 for free products
File too largeExceeds row limitSplit into multiple files
Encoding errorNon-UTF-8 charactersSave the CSV as UTF-8 from Excel (File → Save As → CSV UTF-8)

Import history

All past imports are logged in Goods List → Import → Import History. Each log entry shows:

  • Import date and time
  • Number of products created / updated
  • Number of rows skipped (with reasons)
  • The user who ran the import
  • A downloadable copy of the original file