Help centre · Migrate
Import customers and suppliers with tax numbers
One row per party, in a file from Zoho Books, QuickBooks, Xero 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, tax number, address, phone, credit days and opening balance. It checks each tax number against your country's format, matches parties you already have, and posts opening balances 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. Common headings from Zoho Books, QuickBooks, Xero and spreadsheets are matched automatically, and our template uses the names below. A few columns are named after your country: the tax number column is vat_number in the UK, trn in the UAE, ein in the US and abn in Australia, and the postal code and region columns use your country's words.
| 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. |
| Tax number (vat_number, trn, ein, abn…) | The party's tax registration number, checked against your country's format. |
| tax_treatment | Registered, unregistered, consumer, overseas or exempt. Blank means registered when there is a tax number, unregistered when there is none. |
| email, phone, website | Main contact details. Phones are read as numbers in your country. |
| address_line1, address_line2, city, region or state, postal code | Billing address. Region by name or code, where your country has regions. |
| 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 | An amount in your currency. |
| opening_balance | What is outstanding on the day before your start date. |
| notes | Anything else you want kept on the party. |
In India, the template carries gstin, gst_treatment and pan columns instead, a GSTIN's check digit is verified, and a blank state is taken from the GSTIN.
How are existing parties matched?
Each row is matched against parties already in SimpleERP by tax number 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 tax number fails the check?
A tax number that does not fit your country's format is reported as a row error, and the row is not imported until you fix it. Spaces are ignored, so 980 7806 84 and 980780684 are the same number.
The message says what to do and shows the right shape: "GB12345 isn't a valid VAT number, like GB980780684. Fix it in the file or clear it." Check confirms the format only; whether the number is live is for your tax authority's own lookup, where it has one.
- Copy the tax number again from the party's invoice or letterhead, and correct the file.
- If you cannot confirm it today, clear it and set the tax treatment to unregistered, because a registered party needs a tax number.
- 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 phone numbers and regions read?
Phones are read as numbers in your business's country. Spaces, dashes and brackets are removed; a leading + and country code, or a leading 0, is understood. A number that is not a valid mobile number for your country is a row error that says so; clear it and add a foreign number by hand on the party later.
| In the file (UK-style numbers) | Saved as |
|---|---|
| +44 7911 123456 | +44 7911 123456 |
| 07911 123456 | +44 7911 123456 |
| (07911) 123-456 | +44 7911 123456 |
| 07911 1234 | Error: not a valid +44 mobile number |
Where your country has regions, such as states in the US and Australia or emirates in the UAE, the region column takes a name or code. One SimpleERP does not know is a row error that asks for its name or code.
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. Debit and credit marks such as Dr and Cr 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 Harbor Supply Co. starts its books in SimpleERP on 1 January 2027. This example uses UK-style details (VAT numbers, +44 phones) with amounts in dollars, like every example on this site; your columns follow your own country. Its customer list from QuickBooks has three parties.
| name | vat_number | phone | credit_days | opening_balance |
|---|---|---|---|---|
| Bluewater Traders | GB980780684 | +44 7911 123456 | 30 | 720 |
| Northside Retail | 07700 900123 | 45 | 1,368 | |
| Summit Interiors | GB 123 4567 82 | 30 | 552 |
Set the start date
Books start on 1 January 2027, so opening balances are dated 31 December 2026.
Drop the file and check
Bluewater's VAT number passes. Summit's has spaces, which are ignored before the check. Northside has no VAT number and a blank treatment, so it comes in as unregistered.
Read the counts
Three to create, none to skip. "Net 45" will be created for Northside Retail because only 30-day terms exist.
Import
Three customers and three opening journals are posted, Dr Accounts receivable $2,640 in total, Cr Opening Balance Equity.
Check receivables
The receivables ageing shows each customer with its own balance, adding up to $2,640, the same as the old aged receivables report.
The supplier file follows. Allied Steel Supply at $1,780 and Eastfield Paints at $330 post Dr Opening Balance Equity, Cr Accounts payable, $2,110 in total.
FAQ
Questions, answered
Can I import customers without a tax number?
Yes. Leave the tax number blank and the party comes in as unregistered, or set the treatment to consumer. You can add the tax number on the party later.
A party is both my customer and my supplier. Will I get two records?
No. Rows are matched by tax number, 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 a spreadsheet, QuickBooks, Xero or Zoho Books, what stays in the old system, how to pick the start date and the order the Import data page follows.
Read moreFrom QuickBooks or Xero
Export customers, suppliers, products, the trial balance and unpaid invoices and bills from QuickBooks Online or Xero, and bring them into SimpleERP checked and in order.
Read moreAccounts and opening balances
How account types from your old software 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 more
Run your whole business from one simple place.
Seven days free. No card. Your first invoice in minutes.