Skip to content

Import Data

If you are migrating from MyBillBook or another app, you can import your existing data into Hisaabo rather than starting from scratch. The import system supports parties (customers and suppliers), items, invoices, and payments.

Data typeSource supportedNotes
Parties (customers & suppliers)CSV / MyBillBookDuplicates (same name) are skipped automatically
ItemsCSV / MyBillBookDuplicates (same name) are skipped automatically
InvoicesCSV / MyBillBookImports with full line items and calculates totals
PaymentsCSV / MyBillBookLinked to invoices by invoice number

Your CSV must have at least a name column. Additional columns are optional:

name,type,phone,email,gstin,pan,openingBalance,billingAddress,city,state,pincode
Raj Traders,customer,9876543210,raj@example.com,27AABCT1234A1Z5,,5000,Shop 12 Market,Mumbai,Maharashtra,400001
Gupta Suppliers,supplier,9123456789,,,,12000,,,Rajasthan,

Column reference:

ColumnRequiredValues
nameYesParty name
typeNocustomer or supplier (default: customer)
phoneNoMobile number
emailNoEmail address
gstinNo15-character GSTIN
panNo10-character PAN
openingBalanceNoAmount in INR. Positive means the party owes you; negative means you owe them. Default: 0
billingAddressNoFull billing address
shippingAddressNoFull shipping address
cityNoCity name
stateNoState name
pincodeNoPIN code

If a party with the same name (case-insensitive) already exists in your business, the import skips it. The import response tells you how many records were created and how many were skipped:

{ "created": 47, "skipped": 3, "total": 50 }
name,itemType,salePrice,purchasePrice,taxPercent,hsn,unit,stockQuantity,sku,category
Samsung 65 inch TV,product,55000,48000,18,85287200,pcs,5,SAM-65,Electronics
AC Installation,service,2500,,18,998719,pcs,0,,Services
Basmati Rice 5kg,product,450,380,5,10063020,bag,200,RICE-5KG,Groceries

Column reference:

ColumnRequiredValues
nameYesItem name
itemTypeNoproduct or service (default: product)
salePriceNoSale price in INR
purchasePriceNoPurchase price in INR
taxPercentNoGST rate: 0, 5, 12, 18, or 28 (default: 0)
hsnNoHSN code for products, SAC code for services
unitNoUnit of measure (see Supported Units). Default: pcs
stockQuantityNoOpening stock quantity. Default: 0
skuNoYour internal SKU or barcode
categoryNoCategory name for grouping

Invoice import is the most complex operation. Each row in the CSV represents one line item on an invoice. Rows sharing the same invoiceNumber are grouped into a single invoice.

invoiceNumber,invoiceDate,partyName,partyGstin,type,itemName,quantity,unit,unitPrice,taxPercent,discountPercent,notes
INV-00001,2025-04-01,Raj Traders,27AABCT1234A1Z5,sale,Samsung 65 inch TV,2,pcs,55000,18,0,
INV-00001,2025-04-01,Raj Traders,27AABCT1234A1Z5,sale,HDMI Cable,2,pcs,500,18,10,
INV-00002,2025-04-02,Gupta Suppliers,,purchase,Basmati Rice 5kg,100,bag,380,5,0,Stock replenishment

Column reference:

ColumnRequiredNotes
invoiceNumberYesGroups rows into one invoice. Use your existing numbering.
invoiceDateYesFormat: YYYY-MM-DD
partyNameYesMust match an existing party name exactly (case-insensitive)
partyGstinNoParty’s GSTIN — used to update the party record if not already set
typeYessale or purchase
itemNameYesItem description (does not need to match an existing item)
quantityYesNumeric quantity
unitNoUnit of measure (default: pcs)
unitPriceYesPrice per unit in INR (excluding tax if tax-exclusive)
taxPercentNoGST rate percentage (default: 0)
discountPercentNoLine-level discount percentage (default: 0)
notesNoInvoice-level notes (applied to the first row for each invoice number)

For each invoice, the system:

  1. Groups all rows by invoiceNumber
  2. Calculates line item totals (quantity × unitPrice, then applies discount and tax)
  3. Sums up subtotal, tax amount, discount amount, and total amount
  4. Sets the invoice status to paid if all amount is accounted for, otherwise sent
  5. Updates stock quantities (sales reduce stock; purchases increase stock)
invoiceNumber,partyName,amount,mode,paymentDate,referenceNumber,notes
INV-00001,Raj Traders,126780,bank,2025-04-05,TXN123456,NEFT transfer
INV-00002,Gupta Suppliers,39900,upi,2025-04-03,UPI789,,

Column reference:

ColumnRequiredValues
invoiceNumberYesLinks this payment to an existing invoice
partyNameYesMust match an existing party
amountYesAmount paid in INR
modeYescash, bank, upi, cheque, or other
paymentDateYesFormat: YYYY-MM-DD
referenceNumberNoUTR, cheque number, UPI reference, etc.
notesNoFree-text note

Follow this sequence to avoid dependency errors:

  1. Parties — customers and suppliers must exist first
  2. Items — products and services (optional, invoices can import without matching items)
  3. Invoices — requires parties to exist
  4. Payments — requires invoices and parties to exist

What happens if I import the same CSV twice? Duplicate detection is name-based for parties and items. Re-importing the same file creates no duplicate parties or items. For invoices, if an invoice number already exists in your business, the import skips it.

My party names in the CSV have slightly different spelling from what I have in Hisaabo. What do I do? The import matches by exact name (case-insensitive). “Raj Traders” and “RAJ TRADERS” are treated as the same party, but “Raj Trader” (missing the s) would create a new record. Normalise your CSV before importing.

Can I import opening balances for parties? Yes. Set the openingBalance column in your parties CSV. A positive value means the party owes you money (a receivable). A negative value means you owe them money (a payable).

What format should dates be in? Use YYYY-MM-DD format (for example, 2025-04-01 for 1st April 2025). Other formats are not guaranteed to parse correctly.