Skip to content

Bulk-import CSV format

Scope: the CSV consumed by Purchase Orders → Bulk Import. For the click-through, see the how-to.

Columns

ColumnRequiredAccepted headers (any of)Notes
Supplier Namesupplier, supplier_name, vendor, vendor_nameMust match an existing supplier (case-insensitive).
SKUsku, product_code, item_code, barcodeMust match an existing product.
Quantityqty, quantity, amount, countNumber of units or packs (see Unit Type).
Unit Typeoptionalunit, unit_type, type, packunit (default) or pack.
Unit Priceoptionalprice, unit_price, cost, cost_pricePer-unit cost; otherwise taken from the product.

Headers are matched loosely and case-insensitively, and the Map Columns step lets you confirm or override the auto-detected mapping — so Supplier, supplier_name, and Vendor Name all resolve to Supplier Name.

File

  • Type: .csv only. Encoding: UTF-8.
  • Minimum: a header row plus at least one data row.
  • No hard row-count or file-size limit is enforced — keep imports to a sensible size.

How rows become POs

  • Rows are grouped by supplierone Draft PO per supplier, containing that supplier’s lines.
  • Duplicate SKUs for the same supplier become separate lines — they are not merged or summed.
  • Unit Type pack multiplies Quantity by the product’s pack size to get base units; unit (the default) is taken as-is.
  • Created POs start in Draft, identical to a hand-made one.

Validation & errors

Every row is validated before anything is created:

  • An unknown supplier (Supplier "X" not found) or unknown SKU (Product with SKU "Y" not found) marks the row invalid.
  • A missing supplier, SKU, or quantity marks the row invalid.
  • The Validate step summarizes valid vs. error rows; invalid rows are skipped, never guessed.

Partial failure

Bulk import is best-effort: valid rows still create their POs even when others fail. The Complete step reports how many POs were created (from the valid rows) and lists the failed rows with their error messages — fix those and re-import just them.