Catalogue & data
Importing data (CSV/XLSX)
Bulk-load suppliers, raw materials, products, BOMs, production orders, purchase orders, virtual inventory, and do-not-order flags — file formats, column specs, and error handling.
Settings → Import accepts CSV or XLSX files up to 10,000 data rows. Import in this order — suppliers → raw materials → products → BOM — because later types reference earlier ones by name or SKU. Admins and production leads can import; QC managers cannot.
- The header row is required and column names must match exactly (lowercase, as shown below).
- Comment lines starting with # directly above the header are ignored — the downloadable templates use them for usage hints. Data rows may legitimately start with # (trim codes like #PD01 are kept).
- Re-uploading is safe. Catalogue types update existing records in place by their match key; order imports recognise an identical file and skip every already-imported row (see the per-type notes); virtual inventory SETS absolute values, so re-uploading simply re-applies the same numbers.
- Row-level errors never abort the rest of the file. After the run you get a per-row error table and a downloadable error CSV — fix those rows and re-upload just them.
Suppliers
| Column | Required | Notes |
|---|---|---|
| name | yes | Match key — re-imports update the same supplier (case-insensitive) |
| contactName | yes | |
| contactEmail | yes | Valid email |
| contactPhone | yes | |
| address | yes | Free text; quote it if it contains commas |
| supplierType | no | raw_material (default) or job_worker |
| paymentTerms | no | Net 30 (default), Net 60, Advance, or PDC |
| leadTimeDays | no | Whole days from PO to delivery, 1–365 (default 14) |
| countryCode | no | Two letters, e.g. IN (default) |
Raw materials
| Column | Required | Notes |
|---|---|---|
| name | yes | Match key (case-insensitive) |
| code | no | Short label/scan code (letters, numbers, . _ - only, max 32); must be unique — leave blank to auto-assign RM-0001 style on first label print |
| type | yes | Free text, e.g. yarn / fabric / trim |
| unit | yes | Free text: kg, metres, cones, pcs — BOMs and POs must use the SAME unit per material |
| reorderPoint | yes | Number, 0 or more |
| unitCost | yes | In your org currency |
| primarySupplierName | yes | Must match an existing supplier (import suppliers first); close misses get a did-you-mean hint |
| inStockQty | no | Opening stock (default 0); NOT overwritten on re-import |
| leadTimeDays | no | Overrides the supplier default for this material |
| gstRate | no | Default GST % applied on purchase orders (0–100) |
| moq | no | Supplier minimum order quantity in the material's unit (warn-only on POs) |
Products
| Column | Required | Notes |
|---|---|---|
| sku | yes | Match key — EXACT case: KRT-01 and krt-01 are different products |
| name | yes | |
| category | yes | Free text, used for filtering |
| collectionTag | no | Season/collection, e.g. SS25 |
| sizes | no | Pipe-separated size variants, e.g. S|M|L|XL |
BOM lines
One row per (product, material) pair. All rows for a product become ONE new active BOM version; the previous version is kept but superseded.
| Column | Required | Notes |
|---|---|---|
| productSku | yes | Must match an existing product (case-insensitive; ambiguous case-variants are rejected with the row listed) |
| rawMaterialName | yes | Must match an existing raw material |
| qtyPerUnit | yes | Material per finished unit INCLUDING waste/scrap, in the material's purchase unit |
| unitCost | yes | In your org currency |
Production orders
Load a whole week's production plan in one file (max 500 rows for this type). Every row runs the REAL order flow — the same one as a manual Stage 2 order: materials are reserved per the BOM, any gap is recorded as a shortfall, and a draft purchase order is auto-created per short material per order. Draft POs are NOT combined across rows, so a large file against thin material stock can create many drafts — the import summary reports the total, and you review them on Stage 3.
| Column | Required | Notes |
|---|---|---|
| sku | yes | Product SKU (case-insensitive match); the product needs an active BOM |
| qty | yes | Units to produce — whole number up to 100,000 |
| batchName | no | Names an existing OPEN planning batch (case-insensitive) or creates a new one; a completed/archived batch rejects the row |
Purchase orders (always draft)
Rows are grouped by supplier — one purchase order per supplier per file, capped at 100 distinct materials each (duplicate material rows are merged with quantities summed). Imported POs are ALWAYS created as drafts: you review and submit them on Stage 3, where the normal approval limits apply — an import can never bypass the approval workflow. The group is atomic: if any row for a supplier has an error, no PO is created for that supplier and every row in the group is listed with the cause. Ordering a material from a supplier other than its primary is allowed — it is flagged as a warning, not an error.
| Column | Required | Notes |
|---|---|---|
| supplierName | yes | Must match an existing supplier (case-insensitive) |
| materialNameOrCode | yes | Material short code (exact, e.g. RM-0001) or name (case-insensitive) |
| qtyOrdered | yes | Quantity in the material's purchase unit, up to 100,000 |
| unitPrice | no | Omit to use the material's catalogue unit cost; a material with no positive unit cost then rejects the row |
Re-upload semantics for BOTH order types differ from the catalogue types: re-uploading the IDENTICAL file is a full no-op (every row/PO is recognised and skipped) — but an EDITED file counts as a brand-new upload. After fixing error rows, remove the rows (or delete the draft POs) that already imported before re-uploading, or they will be created a second time. The created/skipped counts in the import summary make this auditable.
Do-not-order flags
| Column | Required | Notes |
|---|---|---|
| sku | yes | Product SKU (case-insensitive match) |
| action | no | set (default) flags the product; clear restores it to active. Archived products are rejected either way. |
A template for every type is downloadable directly next to the import form (BOM and do-not-order templates are also linked from Catalogue → Products & BOM). Import history (last runs, row counts, errors) is shown on the Import page.