Inventory Bulk Import Guide
This is the complete reference for importing products into EzDukkan using the Bulk Import feature. From downloading the template to resolving import errors and understanding every column in the spreadsheet, no detail is left out. Whether you are migrating from another system, receiving a new supplier catalogue, or setting up EzDukkan for the first time with hundreds of products, this guide will take you through the process step by step.
Bulk Import is the process of adding many products to your EzDukkan inventory at once using an Excel spreadsheet. Instead of entering each product individually through the manual Add Product form, you fill out a structured spreadsheet with your product data and upload it. EzDukkan reads the file, validates every row, shows you a preview, and then creates all the products simultaneously.
The EzDukkan Bulk Import template (EzDukkan_Inventory_Protocol.xlsx) is a precision-engineered spreadsheet. It contains colour-coded headers, inline instructions, dropdown data validation, and automatic grouping to make filling it out as intuitive as possible — even for users who are not familiar with Excel.
Bulk Import is the right choice when:
- You are setting up EzDukkan for the first time and have an existing product list in any spreadsheet format.
- You are migrating from a competitor POS system or accounting software that can export data to Excel or CSV.
- You receive product catalogues from suppliers in Excel format.
- You need to add 15 or more new products at once.
- You want to update prices for a large portion of your catalogue at once.
- You are onboarding a new branch or outlet that needs to start with a shared product catalogue.
Bulk Import is NOT the right choice when:
- You have 1–10 products to add. Use the Simple Add Product Guide instead.
- You need to set product images. Images cannot be bulk-imported and must be added manually through the product editor after import.
- You need to create Stock Batches with specific supplier lot details. Batches must be created through the Purchase Bill flow.
Before starting the Bulk Import process, make sure:
- You are logged in to your EzDukkan account.
- You are on the Products page (accessible from the left sidebar).
- You have either Microsoft Excel (2016 or newer), Google Sheets, or LibreOffice Calc available to fill in the template.
- You have your product data ready — at minimum, the Product Name and either Sale Price or MRP for each item. Brand and SKU are optional.
From the Products page ("My Products"), locate the button row in the top-right corner. Click the "Bulk Import" button (the one with the database/grid icon). The Bulk Import panel will slide open, presenting you with two options for obtaining the template.
EzDukkan provides two ways to get the import template, and both are equally valid:
Option A: Download the Excel Template
Click "Download Template". EzDukkan will generate and download a file called EzDukkan_Inventory_Protocol.xlsx directly to your computer. This is the recommended option for most merchants, as the Excel file includes dropdown data validation for the Unit column (restricting invalid entries), full colour-coding, and offline access.
Option B: Open the Google Sheets Template
Click "Open Google Sheets Template". This opens the official EzDukkan Google Sheets template in a new browser tab, directly in your Google account as a copy you own. This is ideal if:
- You do not have Microsoft Excel installed.
- You want to fill in the template collaboratively with a team member or your accountant.
- You are working from a Chromebook or any device without desktop software.
After filling in your data in Google Sheets, export it as an .xlsx file before uploading: go to File → Download → Microsoft Excel (.xlsx).
Ezdukkan's bulk import accepts any simple Excel (.xlsx) or CSV file, whether exported from another billing app (such as Vyapar, Marg, Tally, or myBillBook) or created by you, as well as the official Ezdukkan template.
Key flexibility features:
- Any column order: Columns can be in any sequence. Ezdukkan automatically matches columns by recognising their header names.
- Automatic header detection: Ezdukkan scans the first 10 rows to find your product name header. Product data starts immediately on the row after the header. Blank rows are skipped automatically.
- Unknown columns are ignored: Extra columns from other software (such as warehouse racks, supplier notes, or batch IDs) are safely ignored and listed in the preview. You do not need to delete them.
- Legacy template compatibility: The original EzDukkan inventory template with 4 header rows remains 100% backward compatible.
Only Product Name and at least one price (Sale Price or MRP) are required. All other columns are optional and take sensible defaults when omitted.
| Field | Required? | Default when empty | Recognised Header Aliases |
|---|---|---|---|
| Product Name | Yes | — | Product Name, Item Name, Product, Item, Name, Description of Goods, नाम, उत्पाद, वस्तु, नाव, वस्तूचे नाव, Particulars, Stock Item, Item Description, Name of Item |
| Sale Price (₹) | Yes (or MRP) | = MRP | Sale Price, Selling Price, Sales Price, Rate, Price, SP, विक्री किंमत, बिक्री मूल्य, Sale Price with Tax, Selling Price with Tax, Retail Rate |
| MRP (₹) | Yes (or Sale Price) | = Sale Price | MRP, Max Retail Price, Maximum Retail Price, Unit Price, एमआरपी |
| Purchase Price (₹) | Optional | ₹0 | Purchase Price, Cost, Cost Price, Buying Price, PP, खरेदी किंमत, खरीद मूल्य, Purchase Price with Tax, Purchase Price without Tax, Cost Rate, Landing Cost |
| Brand | Optional | Empty | Brand, Company, Manufacturer, ब्रँड, ब्रांड, कंपनी |
| Item Code / SKU | Optional | Auto-generated from name | SKU, Item Code, Product Code, Code, Item No, Product No |
| Barcode | Optional | Empty | Barcode, EAN, UPC, बारकोड |
| Category | Optional | Uncategorised ("object") | Category, Group, Item Group, श्रेणी, प्रकार |
| Unit | Optional | pcs | Unit, UOM, Primary Unit, इकाई, एकक, Base Unit, Units, Unit Name, Measuring Unit |
| Opening Stock | Optional | 0 | Opening Stock, Stock, Qty, Quantity, Current Stock, स्टॉक, साठा, Opening Stock Quantity, Opening Qty, Closing Quantity, Available Stock, Balance Qty, Stock in Hand |
| Low Stock Alert | Optional | 2 | Min Stock, Low Stock, Reorder Level, Minimum Stock, Minimum Stock Quantity, Min Stock Qty, Reorder Qty, Reorder Point |
| GST % | Optional | 0% | GST, GST %, GST Rate, Tax, Tax %, जीएसटी, Tax Rate, IGST, Tax Slab |
| HSN Code | Optional | Empty | HSN, HSN Code, HSN/SAC, SAC |
| Description | Optional | Empty | Description, Details, Notes |
Header names that are not in this list are still matched by keyword when possible: for example a column containing stock or qty is read as stock, min / reorder + stock as the low stock alert, MRP as MRP, purchase / cost as purchase price, sale / selling as sale price, and unit (but not unit price) as the unit. Columns that still don't match are listed as Ignored columns in the preview.
Pricing Rules & Smart Defaults
- Sale Price vs MRP: You only need to provide one of the two prices. If only Sale Price is provided, MRP defaults to the same value. If only MRP is provided, Sale Price defaults to MRP. If both are provided, Sale Price is automatically capped so it does not exceed MRP.
- Purchase Price: If provided, it is automatically capped so that purchase price does not exceed selling price.
- Barcodes and SKUs: Barcodes, SKUs, and HSN codes are preserved as exact text with leading zeros intact (e.g.
0012345678905). If a row lacks an SKU, Ezdukkan automatically generates a clean, unique SKU based on the product name and unit. - Unit Normalisation: Common unit spellings are automatically mapped to supported units:
nos/pc/piece→pcs,kgs/kilo→kg,l/litre/liter→L,gm/gms→g,ml→mL. Unknown units default topcs.
These define the price at which you sell the product to retail customers. The same OR/OR logic applies — fill in one, and EzDukkan calculates the other.
Column F — Customer Rate %:
The discount percentage given to customers off MRP. A value of 10 means the customer pays 10% less than MRP.
Column G — Customer Value (₹):
The flat selling price to customers.
If both columns are left blank:
The product will default to selling at MRP when added to invoices. You can still adjust the price manually on a per-invoice basis.
Auto-Calculation works exactly like Columns D & E:
- Fill in F → EzDukkan calculates G.
- Fill in G → EzDukkan calculates F.
- Fill in both → G (Value) takes precedence.
Column H — GST Rate % (Optional)
The applicable GST percentage for this product.
Rules:
- Enter only the number, not the
%symbol. Type18not18%. - Valid values are:
0,0.25,3,5,12,18,28. - If left blank, the product will be created with no GST applied. You can update this later through the product editor.
Column I — HSN Code (Optional)
The Harmonised System of Nomenclature code for GST compliance.
Rules:
- Enter the numeric code only (e.g.,
8517for mobile phones,4820for notebooks). - Do not prefix with letters or punctuation.
- HSN codes are 4, 6, or 8 digits depending on the specificity required for your product type.
- While optional for initial import, this field is legally required on GST invoices for businesses with turnover above ₹5 crore. It is best practice to fill it in during import.
Columns J & K — Commission: Rate % and Value (₹) (Optional)
If your business employs sales agents who earn commission on product sales, define the per-product commission rate here. The same OR/OR auto-calculation logic applies.
Column J — Commission Rate %:
The percentage of the selling price that the agent earns.
Column K — Commission Value (₹):
A flat commission amount per unit sold.
Leave both blank if you do not use a sales agent commission system for this product.
Columns L & M — Minimum Profit: Rate % and Value (₹) (Optional)
These columns define the minimum profit guardrail — the lowest profit margin or value you are willing to accept on this product.
Column L — Min Profit Rate %:
The minimum profit percentage. If the selling price falls below this margin (due to discounts), EzDukkan will warn the cashier.
Column M — Min Profit Value (₹):
The minimum flat profit per unit.
Leave both blank if you don't want to enforce a minimum profit floor on this product.
Column N — Description (Optional)
A free-text internal description of the product. Not printed on customer invoices. Used for staff notes, storage instructions, variant information, or any other internal annotation.
Rules:
- Keep it under 500 characters for readability.
- Do not use this field for pricing or stock data — those have dedicated columns.
Column O — Unit (Optional, Dropdown)
The unit of measurement for this product. This column has a dropdown validation in the Excel template — clicking the cell will show a list of valid options.
Valid units:
pcs, box, dozen, pair, set, roll, pack, kg, g, mg, tonne, lb, L, mL, fl oz, m, cm, mm, ft, inch, sqm, sqft
If left blank, the unit defaults to pcs.
Do not type a custom unit that is not in this list — the importer will reject it. If you need a custom unit that is not listed, add it manually through the product editor after import.
Column P — Opening Stock (Optional)
The number of units currently in your store or warehouse.
Rules:
- Enter whole numbers for discrete items (e.g.,
50units). - Enter decimal values for weight or volume-based items (e.g.,
12.5kg). - If left blank, opening stock defaults to
0. - This is the starting point for inventory tracking. Set it accurately before your first day of sales on EzDukkan for correct stock depletion tracking.
Column Q — Min Stock (Optional)
The low-stock alert threshold. When current stock falls to or below this number, EzDukkan shows a low-stock warning.
Rules:
- Enter a whole number.
- Defaults to
2if left blank. - Set this based on your supplier lead time: if delivery takes 3 days and you sell ~5 units/day, a minimum stock of
15gives you a comfortable buffer.
Column R — Expiry Date (Optional)
For products with a shelf life (medications, food items, cosmetics, chemicals), enter the expiry date.
Format: YYYY-MM-DD (e.g., 2025-12-31 for December 31st, 2025).
Do not use formats like 31/12/25 or Dec 31, 2025 — they will not be parsed correctly.
Leave blank for non-perishable products.
EzDukkan' importer is designed so you don't have to fill in every numeric column. Here are complete worked examples:
Example 1: Only MRP and Purchase Value filled
| Name | Brand | MRP | Purchase Rate % | Purchase Value | Customer Rate % | Customer Value |
|---|---|---|---|---|---|---|
| Classmate Notebook A5 | Classmate | 60 | (blank) | 36 | (blank) | (blank) |
Result:
- Purchase Rate % calculated:
((60 - 36) / 60) × 100 = 40% - Customer Rate % = 0% (sells at MRP, ₹60)
- Customer Value = ₹60
Example 2: Only MRP and Rate % filled
| Name | Brand | MRP | Purchase Rate % | Purchase Value | Customer Rate % | Customer Value |
|---|---|---|---|---|---|---|
| Parle-G Biscuits 80g | Parle | 20 | 50 | (blank) | 0 | (blank) |
Result:
- Purchase Value calculated:
20 × (1 - 50/100) = ₹10 - Customer Value: ₹20 (selling at MRP)
Example 3: MRP, Purchase Value, and Customer Rate all filled
| Name | Brand | MRP | Purchase Rate % | Purchase Value | Customer Rate % | Customer Value |
|---|---|---|---|---|---|---|
| Sony Earbuds WH-200 | Sony | 2000 | (blank) | 1200 | 10 | (blank) |
Result:
- Purchase Rate %:
((2000 - 1200) / 2000) × 100 = 40% - Customer Value:
2000 × (1 - 10/100) = ₹1800 - Profit per unit:
₹1800 - ₹1200 = ₹600 (33.3% margin)
Following these rules precisely will ensure your import succeeds on the first attempt.
Strictly Required:
- Product Name must be filled for every product row.
- At least one price: Sale Price or MRP must be greater than 0.
- Brand and SKU are optional (SKU is automatically generated if omitted).
Number Formatting:
- Never use currency symbols (
₹,$) in any numeric column. - Never use commas as thousands separators. Write
15000, not15,000. - Never use the
%symbol in percentage columns. Write18, not18%. - Decimals must use a period as the separator, not a comma. Write
14.5, not14,5.
Date Formatting:
- Only
YYYY-MM-DDformat is accepted for the Expiry Date column.
Text Formatting:
- Do not merge cells anywhere within the data rows (Rows 5 onward).
- Do not insert rows between products.
- Do not leave completely blank rows in the middle of your data (a blank row signals the end of data to the importer; anything after it will be ignored).
- Avoid leading or trailing spaces in product names or brand names —
" Sony"and"Sony"will be treated as two different brands.
Sheet Name:
- Do not rename the worksheet tab. The importer looks specifically for the "Inventory Protocol" sheet by name.
Once you have filled in all your product data:
In Microsoft Excel: Press Ctrl+S (Windows) or Cmd+S (Mac). The file is already in .xlsx format — save it as-is. Do not save as .xls (old format), .csv, or any other format.
In Google Sheets: Go to File → Download → Microsoft Excel (.xlsx). Save the downloaded file somewhere you can find it easily (your Desktop or Downloads folder).
In LibreOffice Calc: Go to File → Save As. In the format dropdown, select "ODF Spreadsheet (.ods)" — wait, no. Select "Microsoft Excel 2007-2019 (.xlsx)" to export in the correct format.
Back in EzDukkan, with the Bulk Import panel open:
- Click "Choose File" or drag and drop your
.xlsxfile directly into the designated upload zone. - EzDukkan will begin reading your file. For a file with 500 products, this typically takes 2–5 seconds.
- A Live Preview Table will appear, showing the first several rows of detected data.
The preview is your final quality-check opportunity before committing the import. Review it carefully.
What You'll See in the Preview:
Green rows: Products that passed all validation checks and are ready to import.
Red rows: Products that failed validation — typically because a required field is missing or contains an invalid value. Red rows will be skipped during import. They are not imported even when you confirm.
Yellow rows (warnings): Products that will be imported but have non-critical issues (e.g., a missing optional field that defaults to a system value).
Common Validation Failures:
| Error Shown | What Caused It | How to Fix It |
|---|---|---|
| "Name is required" | Product name column was blank for this row | Fill in the product name |
| "Price must be > 0" | Both Sale Price and MRP were 0 or blank | Enter at least one price (Sale Price or MRP) |
| "Already in your shop" / "Repeated in this sheet" | The SKU, barcode or name matches an existing product, or the row repeats an earlier one | Tap Remove N duplicates, or change the SKU / barcode / name if it really is a different product |
If you see red rows, go back to your Excel file, fix the issues in the affected rows, save the file again, and re-upload.
Scanning for Duplicates
Before you save, every row is checked against all products already in your shop and against the other rows of the same sheet:
- Already in your shop — the SKU, barcode or product name matches a product you already have. A matching name counts as the same product unless both rows have a brand and the brands are different (e.g. Salt 1kg by Tata and by Annapurna are two products).
- Repeated in this sheet — the same product appears again lower in the file. The first copy is kept; only the repeats are marked.
Duplicate rows are highlighted in amber and must be removed before you can save — the importer never creates a second copy of a product. Tap Remove N duplicates to drop all of them in one go. This makes it safe to upload the same file again after an interrupted import.
Once you are satisfied with the preview and have resolved any red-row errors:
-
Click "Import Products" (or "Confirm Import").
-
EzDukkan processes each row sequentially. A progress indicator shows the import status.
-
When complete, a Summary Screen appears showing:
- ✅ Successfully Imported: The number of products successfully added.
- ⚠️ Skipped: The number of rows skipped due to validation failures.
- ❌ Failed: Any rows that passed preview validation but encountered a database error during actual import (rare).
-
The summary may offer a downloadable Error Report — an Excel file listing every skipped row and the specific reason it was rejected. Use this report to fix the remaining rows and do a second import pass.
Once the import is complete:
Your products are immediately live. Every successfully imported product appears in your Products list and is searchable in the invoice builder right away.
Sync to other devices. Because EzDukkan uses cloud sync, imported products will automatically appear on all your other logged-in devices (mobile app, other POS terminals) within seconds to minutes, depending on their sync cycle.
Review and Enrich. The bulk import covers the core data fields. Go through your newly imported products and consider adding:
- Product images (poster, gallery, description image) — these cannot be bulk-imported.
- Barcodes for products where you know them but didn't include in the spreadsheet.
- Stock Batch details if your products came from multiple purchase lots at different costs.
Set Up Stock Batches. If your imported products arrived in specific supplier batches (different purchase prices, different expiry dates), record these through the Purchase Bills feature. Each Purchase Bill you create will automatically update stock quantities and create proper batch records.
Split large files into batches of 500 rows. While there is no hard row limit, files with thousands of rows are harder to review in the preview. Splitting into 500-row batches makes error resolution much more manageable.
Use a staging run first. Before importing 2,000 products, do a test import of 10 products. Verify they appear correctly — name, pricing, stock quantity, unit — before committing to the full file.
Standardise brand names before importing. Open your spreadsheet and use Excel's Find & Replace (Ctrl+H) to standardise all variations of a brand name. "AMUL", "Amul", and "amul" will all become separate brands in EzDukkan. Pick one spelling and replace all instances before uploading.
Export from your old system and map columns. If you are migrating from another POS or accounting software, export your product data to CSV/Excel from that system first. Then open both your export and the EzDukkan template side by side, and use Excel's VLOOKUP or copy-paste to map your data into the correct template columns.
Keep a master copy. Save your filled template as a permanent file. Any time you need to add products in the future, simply add rows to this master file and re-import. EzDukkan will recognise existing products (by barcode or name match) and skip them, only adding the new rows.
Will importing update prices for existing products?
If an existing product's barcode matches an imported row, the importer may update the product's price. The exact behaviour depends on whether "Update Existing" is toggled on in the import settings. If you only want to add new products (not update existing ones), ensure "Update Existing" is turned off.
Can I import products in multiple currencies?
No. EzDukkan India edition operates in Indian Rupees (₹) only. All price values must be in INR.
What happens if I close the browser during an import?
Products that were already processed before you closed will have been saved. However, the import will stop at the point of interruption. You may end up with a partial import. Check your Products list after re-logging in to see how many were imported, and run a second import with only the remaining rows.
Can I import product images through the bulk import?
Not currently. Product images (poster, gallery, description) must be added manually through each product's edit view after import.
The import says "0 products imported" even though my file has 200 rows. What happened?
The most common cause is that your data starts before Row 5 (the correct data start row). If you accidentally deleted a header row, all your data rows would be in the wrong positions and the importer would try to read them as header data. Re-download a fresh template and copy your data starting from Row 5.
Can I import products with sub-variants (like different sizes or colours)?
EzDukkan does not natively support product variants in a parent-child relationship. Each size/colour combination must be imported as a separate product row with its own name (e.g., "Nike Air Max 90 - Size 42 - Black" and "Nike Air Max 90 - Size 43 - Black" as two separate rows).
How do I handle products without an MRP (like fresh produce or bulk commodities)?
If your products are sold at a negotiated or weight-based price with no manufacturer MRP, use the actual selling price as the MRP for the purpose of EzDukkan import. The "MRP" field in EzDukkan is effectively just the base reference price — you are not legally required to print it as an MRP on your invoices unless your product is a pre-packaged consumer good.