Skip to content50% off₹750/user/month ₹1,500
SimpleERP

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.

ColumnWhat goes in it
nameProduct name, required.
skuYour item code. Unique; used to match existing products.
typeGoods or service. Only goods carry stock.
unitNos, kg, box and so on. Created if it does not exist.
categoryGrouping for lists and reports. Created if it does not exist.
sale_priceSelling price per unit.
purchase_priceUsual buying price per unit.
sale_taxGST rate on sales, by name or percent, such as GST 18% or 18.
purchase_taxGST rate on purchases, same format.
hsnHSN code for goods or SAC for services.
barcodeUnique when given.
reorder_levelQuantity at which the item shows in the low stock list.
descriptionShown on documents under the name.
opening_qtyQuantity on hand on the day before your start date.
opening_costCost per unit of that stock.
opening_valueTotal value of that stock. Used when opening_cost is blank.
warehouseWarehouse code or name. Blank uses your default warehouse.
Product columns. Rows without opening_qty create the product only.

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.

nameskuunitsale_taxhsnopening_qtyopening_costopening_valuewarehouse
Steel almirah 4 doorLSF-ALM-4Dnos189403305,200FACTORY
Office chair frameLSF-CHF-01nosGST 18%94019063,000SHOWROOM
Powder coatingLSF-SRV-PCjob18998898
  1. Set the start date

    Books start on 1 April 2026, so the adjustments are dated 31 March 2026.

  2. 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.

  3. 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.

  4. 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.

Run your whole business from one simple place.

Seven days free. No card. Your first GST invoice in minutes.