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

Help centre · Migrate

Import customers and suppliers with GSTIN

One row per party, in a file from Tally Prime, Zoho Books, Vyapar, Busy or a spreadsheet. Every row is checked before anything is written, and the whole batch can be undone.

Updated · 7 min read

In short

SimpleERP reads one row per customer or supplier: name, GSTIN, address, phone, credit days and opening balance. It checks every GSTIN, matches parties you already have, and posts each opening balance dated the day before your books start.

Open Settings → Import data, pick where your data is today, and drop the file. SimpleERP finds the customer and supplier lists in it, matches the columns, checks each row and shows what it will create, update or skip. Nothing is written until you click Import, and the batch can be undone for 30 days.

Which columns does the importer read?

Only the name is required; every other column is optional. Column headings from Tally Prime, Zoho Books, Vyapar and Busy are matched automatically, and our template uses the names below.

ColumnWhat goes in it
nameDisplay name, required. Used on invoices and in lists.
legal_nameRegistered name, if different from the display name.
codeYour own party code from the old system. Must be unique.
gstin15-character GSTIN. The check digit is verified.
gst_treatmentRegistered, unregistered, consumer, overseas or exempt. Zoho values such as business_registered_regular are understood.
pan10-character PAN.
email, phone, websiteMain contact details. Phones are cleaned to 10 digits.
address_line1, address_line2, city, state, postal_codeBilling address. State as a name or code; blank takes it from the GSTIN. PIN must be 6 digits.
shipping_* (same five)Shipping address, only when it differs from billing.
contact_name, contact_phone, contact_emailThe person you deal with. Becomes the primary contact.
credit_daysDays allowed to pay. Becomes payment terms.
credit_limitAmount in rupees.
opening_balanceWhat is outstanding on the day before your start date.
notesAnything else you want kept on the party.
Customer and supplier columns. The same columns serve both cards.

How are existing parties matched?

Each row is matched against parties already in SimpleERP by GSTIN first, then by code, then by name ignoring capitals. The first match wins.

  • No match: a new party is created with its billing address, optional shipping address and primary contact.
  • Match with the other role: a supplier that already exists becomes also a customer, and the other way round. No duplicate party is created.
  • Match with the same role: the row is skipped, or the details are updated if you choose that option on the card.
  • Same party twice in the file: the second row is an error that names the first row, so you decide which one is right.

What happens when a GSTIN fails the check?

A GSTIN that fails the check is reported as a row error and the row is not imported until you fix it. The last character of every GSTIN is a check digit worked out from the first 14, so a single mistyped letter or digit is caught.

The message says what to do: "Row 14: GSTIN 33ABCDE1234F1Z5 has a wrong check digit. Fix it in the file or clear it." The format is defined by the GST system; you can confirm a number on the GST portal under Search Taxpayer.

  • Copy the GSTIN again from the party's invoice or the GST portal, and correct the file.
  • If you cannot confirm it today, clear the GSTIN and set the GST treatment to unregistered, because a registered party needs a GSTIN.
  • Or tick "Import valid rows only" and add the corrected parties later.
  • Download the errors as CSV to work through a long list in your spreadsheet.

How are state and phone numbers filled in?

When the state column is blank, the state comes from the first two digits of the GSTIN, so 33 becomes Tamil Nadu. The state decides whether later invoices charge CGST and SGST or IGST, so check it on parties without a GSTIN.

Phones are cleaned before they are checked: the +91 prefix, spaces and dashes are removed, and when 11 or 12 digits start with 0 or 91, the last 10 digits are kept. A number that still is not 10 digits is a row error.

In the fileSaved as
+91 98430 123459843012345
098430-123459843012345
91 98430 123459843012345
98430 1234Error: not 10 digits

How is the opening balance posted?

A positive opening balance means the customer owes you, or you owe the supplier. SimpleERP posts one journal per party, dated the day before your start date, against Opening Balance Equity. Tally's debit and credit signs are turned into this convention for you.

PartyDebitCredit
CustomerAccounts receivable (that customer)Opening Balance Equity
SupplierOpening Balance EquityAccounts payable (that supplier)
Journals posted for a positive opening balance.

Because the balance sits on the party, statements, ageing and payments all start from it. If you later bring in open invoices or bills for the same party, its opening balance is reduced by their total so nothing is counted twice.

How do credit days become payment terms?

Credit days are matched to your payment terms by number of days. A row with 30 uses your existing 30-day terms; a row with 45 when no such term exists creates "Net 45". Due dates on new invoices then follow the party's terms.

A worked example

Suppose Lakshmi Steel Furnitures in Coimbatore starts its books in SimpleERP on 1 April 2026. Its customer list from Tally Prime has three parties.

namegstinphonecredit_daysopening_balance
Sri Murugan Traders33AAKFS3398H1ZU+91 98430 123453062,660
Ravi Stores33ABCPR4821K1ZN094433 56789451,20,000
Kovai Office Systems33AABCK7102P1ZI3048,340
  1. Set the start date

    Books start on 1 April 2026, so opening balances are dated 31 March 2026.

  2. Drop the file and check

    All three GSTINs pass, the state is filled in as Tamil Nadu from 33, and both phones become 10 digits.

  3. Read the counts

    Three to create, none to skip. "Net 45" will be created for Ravi Stores because only 30-day terms exist.

  4. Import

    Three customers and three opening journals are posted, Dr Accounts receivable ₹2,31,000 in total, Cr Opening Balance Equity.

  5. Check receivables

    The receivables ageing shows each customer with its own balance, adding up to ₹2,31,000, the same as Sundry Debtors in Tally.

The supplier file follows. Tamil Nadu Steels (33AADFT5530M1Z3) at ₹1,48,500 and Coimbatore Paint House (33AAGFC6215L1ZJ) at ₹36,200 post Dr Opening Balance Equity, Cr Accounts payable, ₹1,84,700 in total.

FAQ

Questions, answered

Can I import customers without a GSTIN?

Yes. Leave the GSTIN blank and set the GST treatment to unregistered or consumer, and fill in the state yourself, because there is no GSTIN to take it from. You can add the GSTIN on the party later.

A party is both my customer and my supplier. Will I get two records?

No. Rows are matched by GSTIN, then code, then name. When the party already exists as a supplier, the customer row adds the customer role to the same party, so statements and balances stay in one place.

Should I enter the opening balance or bring the open invoices?

Either works. The opening balance is one figure per party. Open invoices keep each bill's number and due date for ageing. If you do both, the party's opening balance is reduced by the bills so nothing is counted twice.

What if the opening balance is on the wrong side?

Positive means the customer owes you or you owe the supplier. If the signs came out wrong, undo the batch, fix the column and run it again.

Can I re-run the file after fixing errors?

Yes. Parties already created are matched and skipped, so only the corrected rows are added. Choose the update option if you want details on existing parties refreshed from the file.

Run your whole business from one simple place.

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