Bulk Import — Items
For: Anyone setting up the product/material/service catalogue in bulk
Create many items at once from an Excel/CSV-style sheet. This flow creates the item records themselves — it does not set opening stock. Setting starting quantities is a separate step (Bulk Import — Opening Stock).
Warning: This flow creates the item only, with every warehouse at zero stock. It never sets opening quantities or posts an opening-stock journal — use Bulk Import — Opening Stock for that, after the items exist.
How it works
Every bulk upload has two steps. You run the same sheet through a Check first, fix anything it flags, then run it again to actually Create the items.
| Step | What it does |
|---|---|
| 1. Check (recommended) | Reviews your entire sheet and lists every row with a problem — without saving anything. Fix the issues and check again. |
| 2. Create | Once every row passes, upload again to actually create the items. |
Danger: Creating is all-or-nothing: if even one row has a problem, no items are created — the whole batch is rolled back. Check first.
Required in every row
These must be filled in correctly on every row:
| Field | What's needed |
|---|---|
| Item Name | Required; unique within the sheet and not already used in your company. |
| Item Type | One of: RM, FG, SEMI_RM, CONSUMABLE, TRADE, SCRAP. |
| Item Category | Goods or Service. (A Service item must have Track Inventory turned off.) |
| Unit (UOM) | A valid unit code (e.g. NOS, PCS, KGS, LTR, BOX, MTR …). |
| Item Group | Must match an existing Item Group name for your company. |
| GST | Required (free text). Note: it is stored but not linked to a tax master through this flow. |
| HSN/SAC Code | Required (free text). |
| At least one role | Each item must be Sellable, Purchasable, or Track-Inventory — at least one. |
Optional fields with rules
These are optional — but if you fill them in, they must follow these rules:
| Field | Rule if you fill it in |
|---|---|
| If Sellable | Selling Price must be greater than 0, and a Sales Account name is required. |
| If Purchasable | Cost Price must be greater than 0, and a Purchase Account name is required. |
| If Track Inventory | An Inventory Account name is required. |
| Track Inventory (default ON) | If you don't set it, it defaults to ON — which then requires an Inventory Account. A Service item must set it OFF. |
| Fields for an OFF role | Leave price/account fields blank for any role that's off, or the row is rejected. |
| Description / Model No / Sub Item Group / Status | Optional. |
Must match existing records
These must exactly match existing master records, case-sensitively (leading/trailing spaces are trimmed, but capitalization must match). Note that GST and HSN are accepted as free text and are not matched to any tax/HSN master.
| Field | What it must match |
|---|---|
| Item Group | Must exactly match an existing Item Group name. |
| Sub Item Group | If provided, must exist. (It is not checked to belong to the chosen Item Group.) |
| Sales Account | Must match an existing Income account. |
| Purchase Account | Must match an existing Expense / COGS / Other-Expense account. |
| Inventory Account | Must match an existing Stock account. |
Duplicates & uniqueness
| Situation | What happens |
|---|---|
| The same Item Name appears twice in your sheet | Rejected — item names must be unique within the upload. |
| The Item Name already exists in your company | Rejected — it's already on record. |
| Item number | Not taken from the sheet — it is always auto-generated on create. |
Common mistakes
If a row is rejected, it is usually for one of these reasons:
| If this happens… | …here's what it means |
|---|---|
| Item Name missing or duplicated | Every row needs a unique name. |
| Item Type not one of the allowed values | Use RM, FG, SEMI_RM, CONSUMABLE, TRADE, or SCRAP. |
| Service item with Track Inventory on | A service item cannot track inventory — set Track Inventory off (it defaults to on). |
| Sellable but no Selling Price / Sales Account | A sellable item needs a price > 0 and a matching Income account. |
| Account / Item Group / Sub Item Group name doesn't match | Must match an existing record exactly (case-sensitive). |
| Unit or GST or Category missing | These are required — a missing one rejects the whole sheet up front. |
What happens on the final step
- •Each item gets a sequential item number using your company's Item numbering (default prefix I-).
- •For every non-service item, an inventory record is created with all active warehouses seeded at zero stock and zero rate.
- •Items are created in the same order as your sheet.
- •GST is stored as text and is not linked to a tax rate through this flow; opening stock is not set here.
Recommended way to work
- Build your sheet with the items you want to add.
- Make sure Item Groups and the Sales/Purchase/Inventory accounts you reference already exist, spelled exactly.
- Run the Check step first and review the problem rows.
- Fix each issue and re-check until every row passes.
- Run Create to add the items. Then use Bulk Import — Opening Stock if you need starting quantities.