Bulk-import CSV format
Scope: the CSV consumed by Purchase Orders → Bulk Import. For the click-through, see the how-to.
Columns
| Column | Required | Accepted headers (any of) | Notes |
|---|---|---|---|
| Supplier Name | ✅ | supplier, supplier_name, vendor, vendor_name | Must match an existing supplier (case-insensitive). |
| SKU | ✅ | sku, product_code, item_code, barcode | Must match an existing product. |
| Quantity | ✅ | qty, quantity, amount, count | Number of units or packs (see Unit Type). |
| Unit Type | optional | unit, unit_type, type, pack | unit (default) or pack. |
| Unit Price | optional | price, unit_price, cost, cost_price | Per-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:
.csvonly. 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 supplier → one 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
packmultiplies 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.