Catalog
Import and Re-import Items from CSV
Item import reads a CSV immediately after selection. Use the supplied 18-column template: new name-and-SKU pairs are created, while exact name-and-SKU matches are updated in place.
- Menu path
- Inventory -> Items -> Import
- Verified from
- Posnic demo and current POS source reviewed on 2026-09-08
Technical source evidence
frontend/modules/items.html import action, frontend/modals/import_customer.html shared import dialog, frontend/static/script/js/core/PosnicPro.js importTableFile CSV parser aliases 330 KB limit and result table, frontend/static/Import_sample_files/items.csv current 18-column template, api/src/controllers/items.controller.js itemsImport permission and context, api/src/repositories/item.repository.js importItems validation matching master-data creation in-place update and history, demo.posnic.io Inventory -> Items import dialog reviewed on 2026-09-05
Before You Import
Import can create products and supporting master data, and a re-import can overwrite prices and stock on matching products. Prepare and approve the file away from the live till.
- You need Item write permission; the Import control is hidden from users without it.
- Create one representative item manually, sell and scan it, then use its values as the catalog standard.
- Take a backup and export the current catalog before a re-import.
- Import only into the intended branch. Matching and newly created supporting records are branch- and license-scoped.
- Keep an untouched copy of the approved CSV so every change can be traced.
Download the Posnic Template
- Open Inventory -> Items.
- Select the down-arrow Import icon above the item list.
- In Import Items Details, select CSV Sample.
- Open items.csv in a spreadsheet editor without renaming or deleting its header row.
- Remove the sample product rows before inserting the shop's real products.
- Save as comma-separated CSV. The live browser importer accepts .csv files smaller than approximately 330 KB.
Use the 18 Template Columns
| Template column | What to enter | Import rule |
|---|---|---|
| name | Cashier-facing product name. | Required; name plus itemid identifies an existing row for re-import. |
| itemid | Internal SKU, such as V23-128. | May be blank, but blank SKUs make name matching and audit less reliable. |
| barcode_id | Scanner code used at the till. | May differ from SKU; this is not automatically validated as a GS1 GTIN. |
| category_name | Exact catalog category name. | Required; Posnic creates the category if it does not exist in this branch. |
| supplier_name | Exact supplier name. | Required; Posnic creates a minimal supplier record when missing. |
| discount_amount / discount_percentage | Numeric discount values; use 0 when unused. | Both columns are required, including zero values. |
| hsncode / hsndescription | Real HSN code and description when applicable. | Optional; a real HSN switches the imported item's tax method to HSN. |
| tax_name / tax | Tax label and numeric rate. | Tax is required; missing tax records or groups can be created during import. |
| tax_type | inclusive or exclusive. | Required; verify the choice against displayed and receipt prices. |
| mrp_price | Maximum retail price. | Required numeric value. |
| company_price | Cost price. | Required numeric value and used for margin reporting. |
| selling_price | Normal checkout price. | Required numeric value. |
| available_quantity | Counted opening/current stock. | Required numeric value; re-import replaces the matching item's quantity. |
| unit | Existing unit value such as qty, bottle or pack. | Required; Posnic creates a unit with this name/value if missing. |
| sort_order | Numeric catalog order. | Required; use a deliberate sequence or a consistent fallback. |
What Counts as New or Existing
Within the import file, Posnic keeps the first occurrence of each exact name-and-itemid pair. It then looks for that same pair in the current branch and license.
| CSV row | Result | Important consequence |
|---|---|---|
| Name + SKU does not exist | A new regular, stock-tracked item is created. | Sales channel starts enabled; ecommerce and negative stock start disabled. |
| Exact name + SKU already exists | The existing item is updated in place. | Prices, quantity, codes, category, supplier, tax, unit and sort order can change. |
| Same SKU but different name | It is not the same match key. | Do not use import as a casual rename tool; it can create a second item. |
| Duplicate name + SKU inside one CSV | Only the first row is retained. | Later corrections for the same pair are silently ignored, so deduplicate first. |
What Re-import Preserves
When a name-and-SKU match is found, Posnic updates only fields carried by the CSV. It deliberately preserves data the template cannot represent.
- The item cover photo and additional images are preserved.
- Track inventory, item status, sales channel, ecommerce, negative-stock behavior and description are preserved.
- Original creation date and creator are preserved; updated date and user are refreshed.
- Tracked field changes are written to the item's price/history trail with process Import.
- The available_quantity cell still replaces current stock, so never re-import an old quantity column.
Import the File
- Reopen Inventory -> Items -> Import and select Choose File.
- Select the reviewed .csv file. Do not double-click or choose it twice while the request is running.
- Wait for the result table. Successful rows show name, category, selling price, quantity and Import status.
- If required fields are missing, correct every named field in the source CSV and retry the corrected file.
- Close the dialog only after recording the added/updated result and any rejected rows.
Verify Before Staff Use the Catalog
- Search samples by product name, SKU and barcode.
- Open new and updated items and inspect category, supplier, tax, unit, MRP, cost, selling price and quantity.
- Scan representative labels into New Sale and confirm the intended product and price appear.
- Review item History for re-imported price changes and Inventory Logs for later stock movements.
- Run a test sale, return it where applicable, and reconcile stock before enabling the catalog for all cashiers.
Troubleshooting
| Problem | Likely cause | Correction |
|---|---|---|
| Only these file types are accepted | The selected file is not lowercase .csv. | Export or Save As CSV and select that file. |
| File is rejected before parsing | The file exceeds the browser import limit. | Split it into smaller approved batches, keeping each name + SKU unique across the plan. |
| Missing required fields | A required header was removed, renamed beyond a recognized alias, or a required cell is blank. | Return to a fresh Posnic sample and restore every required column, including zero values. |
| Unexpected new category, supplier, tax or unit | The CSV text did not exactly match the intended master record. | Correct spelling/case, review the newly created record, then clean up only after checking item usage. |
| Old stock replaced current stock | A re-import carried a stale available_quantity. | Recount and correct stock using an approved inventory workflow; do not repeatedly re-import guesses. |
| Product was duplicated | Its name or SKU differed from the existing match pair. | Compare both records, move activity deliberately, then retire the wrong record using the documented delete/restore workflow. |