Skip to content
SimpleERP

Help centre · Migrate

Import products and opening stock

One row per product, with its prices, tax rate 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 tax 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. Zoho Books headings and common names such as Item Name, Selling Price and Opening Stock are matched automatically; our template uses these names. In India, the template adds an 18th column, hsn, for the HSN or SAC code printed on invoices.

ColumnWhat goes in it
nameProduct name, required.
skuYour item code. Unique; used to match existing products.
typeGoods or service. Only goods carry stock.
useSell, buy or both. Raw materials are buy.
unitpcs, 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_taxTax rate on sales, by name or percent, such as VAT 20% or 20.
purchase_taxTax rate on purchases, same format.
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 in Settings › Taxes, such as "VAT 20%", or as a number, such as 20, 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 tax.

  • 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 "Cabinets" is created.

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 cabinets at $60 give an average of $60. Buy 20 more at $64 and the average becomes ($1,800 + $1,280) ÷ 50 = $61.60.

A worked example

Suppose Harbor Supply Co. starts its books on 1 January 2027 and keeps stock in two warehouses, FACTORY and SHOWROOM. Its standard tax rate in SimpleERP is called VAT 20%. Its item list has three rows.

nameskuunitsale_taxopening_qtyopening_costopening_valuewarehouse
Steel cabinet 4 doorHSF-CAB-4Dpcs203060FACTORY
Office chair frameHSF-CHF-01pcsVAT 20%90720SHOWROOM
Powder coatingHSF-SRV-PCjob20
  1. Set the start date

    Books start on 1 January 2027, so the adjustments are dated 31 December 2026.

  2. Drop the file and check

    Both ways of writing 20% 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 cabinets at $60, and SHOWROOM with 90 chair frames at $8, worked out from $720 ÷ 90.

  4. Check the books

    Inventory shows $2,520 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 or tax 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 tax 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 invoice in minutes.