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.
| Column | What goes in it |
|---|---|
| name | Display name, required. Used on invoices and in lists. |
| legal_name | Registered name, if different from the display name. |
| code | Your own party code from the old system. Must be unique. |
| gstin | 15-character GSTIN. The check digit is verified. |
| gst_treatment | Registered, unregistered, consumer, overseas or exempt. Zoho values such as business_registered_regular are understood. |
| pan | 10-character PAN. |
| email, phone, website | Main contact details. Phones are cleaned to 10 digits. |
| address_line1, address_line2, city, state, postal_code | Billing 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_email | The person you deal with. Becomes the primary contact. |
| credit_days | Days allowed to pay. Becomes payment terms. |
| credit_limit | Amount in rupees. |
| opening_balance | What is outstanding on the day before your start date. |
| notes | Anything else you want kept on the party. |
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 file | Saved as |
|---|---|
| +91 98430 12345 | 9843012345 |
| 098430-12345 | 9843012345 |
| 91 98430 12345 | 9843012345 |
| 98430 1234 | Error: 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.
| Party | Debit | Credit |
|---|---|---|
| Customer | Accounts receivable (that customer) | Opening Balance Equity |
| Supplier | Opening Balance Equity | Accounts payable (that supplier) |
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.
| name | gstin | phone | credit_days | opening_balance |
|---|---|---|---|---|
| Sri Murugan Traders | 33AAKFS3398H1ZU | +91 98430 12345 | 30 | 62,660 |
| Ravi Stores | 33ABCPR4821K1ZN | 094433 56789 | 45 | 1,20,000 |
| Kovai Office Systems | 33AABCK7102P1ZI | 30 | 48,340 |
Set the start date
Books start on 1 April 2026, so opening balances are dated 31 March 2026.
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.
Read the counts
Three to create, none to skip. "Net 45" will be created for Ravi Stores because only 30-day terms exist.
Import
Three customers and three opening journals are posted, Dr Accounts receivable ₹2,31,000 in total, Cr Opening Balance Equity.
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.
Related
Keep reading
Migrate to SimpleERP
What to bring from Tally, Zoho Books, Vyapar, Busy or Excel, what stays in the old system, how to pick the start date and the order the Import data page follows.
Read moreAccounts and opening balances
How Tally groups and Zoho account types become SimpleERP accounts, which system accounts are skipped, and how the opening balances journal is matched and posted.
Read moreOpen invoices and bills
Bring unpaid sales invoices and purchase bills across bill by bill, so collections, payments and ageing continue from your cut-over date.
Read moreFix errors and undo
How the import check works, the common errors and their fixes, why a second upload never duplicates masters, and how to undo an import within 30 days.
Read moreOpening balances
What opening balances are, why Opening Balance Equity must end at zero, and a worked cut-over from a trial balance with parties, stock and fixed assets.
Read moreGST billing
Tax invoices with CGST, SGST or IGST by place of supply, HSN on every line and a UPI QR on the print.
Read more
Run your whole business from one simple place.
Seven days free. No card. Your first GST invoice in minutes.