Help centre · Migrate
Import products and opening stock
One row per product, with its prices, tax, HSN and the stock you hold on the day before your books start. Stock is posted at cost, per warehouse, and can be undone while nothing has moved.
Updated · 6 min read
In short
SimpleERP reads one row per product with HSN, GST rate, unit, prices and opening quantity and cost. It creates the products, then posts one opening stock adjustment per warehouse dated the day before your books start.
To bring in products and opening stock, open Settings → Import data (or Inventory → Products → Import), drop your item list and click Check. SimpleERP shows every row it will create, update or skip, and every error, before anything is written. Import creates the products and posts the opening stock at the cost you give.
Which columns does the importer read?
There are 17 columns and only the name is required. Headings from Tally Prime, Zoho Books, Vyapar and Busy are matched automatically; our template uses these names.
| Column | What goes in it |
|---|---|
| name | Product name, required. |
| sku | Your item code. Unique; used to match existing products. |
| type | Goods or service. Only goods carry stock. |
| unit | Nos, kg, box and so on. Created if it does not exist. |
| category | Grouping for lists and reports. Created if it does not exist. |
| sale_price | Selling price per unit. |
| purchase_price | Usual buying price per unit. |
| sale_tax | GST rate on sales, by name or percent, such as GST 18% or 18. |
| purchase_tax | GST rate on purchases, same format. |
| hsn | HSN code for goods or SAC for services. |
| barcode | Unique when given. |
| reorder_level | Quantity at which the item shows in the low stock list. |
| description | Shown on documents under the name. |
| opening_qty | Quantity on hand on the day before your start date. |
| opening_cost | Cost per unit of that stock. |
| opening_value | Total value of that stock. Used when opening_cost is blank. |
| warehouse | Warehouse code or name. Blank uses your default warehouse. |
How are tax rates, units and categories matched?
Tax rates must already exist in SimpleERP; units and categories are created on the fly. A rate can be written as its name, such as "GST 18%", or as a number, such as 18, which must resolve to exactly one rate. A rate that matches nothing is a row error, so the product never goes out with the wrong GST.
- Tax: by name or percent; no match is an error that names the row.
- Unit: matched by name; a new unit such as "set" is created.
- Category: matched by name; a new category such as "Almirahs" is created.
- HSN: kept as given and printed on invoices and in GSTR-1.
What happens when a SKU already exists?
Products are matched by SKU, and the card asks what to do with a match: skip the row, or update prices and details. Updating never touches stock: the quantity on hand and its cost stay as they are, even if the row has an opening quantity.
A row with no SKU cannot be matched, so give every product a SKU before you start. The same SKU twice in one file is an error that names the first row.
How is opening stock posted?
Opening stock is posted as one stock adjustment per warehouse, with the reason "opening stock", dated the day before your start date. Each line takes the quantity and cost per unit from the row.
- Cost per unit: opening_cost, or opening_value ÷ opening_qty when only the value is given.
- Journal: Dr Inventory, Cr Opening Balance Equity, for the value of the adjustment.
- Stock on hand: the quantity appears in the warehouse at once, valued at that cost.
- Permission: posting stock needs the right to approve stock adjustments as well as to manage products.
How does opening cost feed weighted-average cost?
The opening cost becomes the product's starting average cost. Every later purchase blends in at its own price, and every sale is costed at the average at that moment. A wrong opening cost therefore shows up in the margin of every sale until the stock is used up, so take it from your stock valuation, not from the selling price.
For example, 30 almirahs at ₹5,200 give an average of ₹5,200. Buy 20 more at ₹5,500 and the average becomes (₹1,56,000 + ₹1,10,000) ÷ 50 = ₹5,320.
A worked example
Suppose Lakshmi Steel Furnitures starts its books on 1 April 2026 and keeps stock in two warehouses, FACTORY and SHOWROOM. Its item list has three rows.
| name | sku | unit | sale_tax | hsn | opening_qty | opening_cost | opening_value | warehouse |
|---|---|---|---|---|---|---|---|---|
| Steel almirah 4 door | LSF-ALM-4D | nos | 18 | 9403 | 30 | 5,200 | FACTORY | |
| Office chair frame | LSF-CHF-01 | nos | GST 18% | 9401 | 90 | 63,000 | SHOWROOM | |
| Powder coating | LSF-SRV-PC | job | 18 | 998898 |
Set the start date
Books start on 1 April 2026, so the adjustments are dated 31 March 2026.
Drop the file and check
Both ways of writing 18% resolve to the same rate. The unit "job" is new and will be created. Three products to create, no errors.
Import
Three products are created. Two opening stock adjustments are posted: FACTORY with 30 almirahs at ₹5,200, and SHOWROOM with 90 chair frames at ₹700, worked out from ₹63,000 ÷ 90.
Check the books
Inventory shows ₹2,19,000 and the stock on hand report shows the same, warehouse by warehouse. Powder coating is a service and carries no stock.
How do I re-import safely?
Re-importing is safe because existing SKUs are matched, and neither option adds stock to a product that already exists.
- Fix the rows that failed and run the whole file again with "skip": only the new products are added.
- To correct prices, tax or HSN in bulk, run the file with "update": stock is untouched.
- To correct an opening quantity or cost, undo the batch and import again; undo is refused once stock has moved.
- Compare the stock value with your old system's stock summary as of the same date.
FAQ
Questions, answered
Can I bring products without opening stock and add stock later?
Yes. Leave opening_qty blank and only the products are created. Stock can be added later through a stock adjustment, or through your first purchase bill.
My old software values stock at selling price. Which cost should I use?
Use the cost price from your stock valuation. The opening cost becomes the weighted-average cost, so a selling price would understate your margin on every sale and overstate stock on the balance sheet.
Will updating prices from a new file change my stock?
No. The update option changes prices and details on matched SKUs only. Quantities and costs stay as they are, so a price list can be refreshed any number of times.
What if the GST rate in my file does not exist in SimpleERP?
The row is reported as an error. Add the rate in Settings, or change the file to a rate that exists, then check again. Rates are never created from the file.
Can I undo the opening stock?
Yes, within 30 days and as long as the stock has not moved. Undo cancels the adjustments, reverses their journal and removes the products the batch created. After the first sale or purchase, correct stock with an adjustment instead.
Related
Keep reading
Migrate to SimpleERP
What to bring from Tally, Zoho Books, Vyapar, Busy or Excel, what stays in the old system, how to pick the start date and the order the Import data page follows.
Read moreCustomers and suppliers
The columns, how existing parties are matched, GSTIN and phone checks, and how each party's opening balance is posted on the cut-over date.
Read moreAccounts and opening balances
How Tally groups and Zoho account types become SimpleERP accounts, which system accounts are skipped, and how the opening balances journal is matched and posted.
Read moreFix errors and undo
How the import check works, the common errors and their fixes, why a second upload never duplicates masters, and how to undo an import within 30 days.
Read moreWeighted average cost
How weighted average cost values stock and cost of goods sold, with the formula, a worked example and how it compares with FIFO.
Read moreInventory
Stock on hand by warehouse at weighted average cost, with a movement ledger and a low-stock list.
Read more
Run your whole business from one simple place.
Seven days free. No card. Your first GST invoice in minutes.