How to Import New GL Accounts From a CSV in NetSuite

Add a bank account and an income account to the chart of accounts in one CSV import. Choose Accounting and Chart of Accounts, set Data Handling to Add, check the mapping, and confirm the new accounts.

The quick answer

Put one account per row in a chart of accounts CSV, then go to Setup > Import/Export > Import CSV Records. Keep Import Type on Accounting and Record Type on Chart of Accounts, upload the file, and keep Data Handling on Add. On Field Mapping, check that Name, Number, Type and Subsidiaries are mapped. Name the mapping, click Save & Run, and check that the job imported every row. This example adds a bank account and an income account in a OneWorld account.

The screenshots show sample data. Person and company names are fictional. Use your own account numbers, names, and subsidiaries when you follow the steps.

Before you start

You need a role that can run CSV imports and create accounts, and in a OneWorld account, access to the subsidiaries you're assigning. The subsidiaries have to exist already. Menu paths are the ones in this account. If one isn't where it says, search for its name in global search.

Each row in the file is one account. This example uses these columns: externalid, acctnumber, acctname, accttype, currency, description, subsidiaries and includeChildren. A few rules decide whether a row loads:

  • Name, Number, Type and Subsidiaries are required on an Add import.
  • A Bank or Credit Card account needs a currency and exactly one subsidiary, so Include Children has to be FALSE. Other account types leave currency blank.
  • With the default reference type Names, a subsidiary is its full hierarchy name, like Brightwater Holdings : Brightwater US, and a currency is the currency record's name, like US Dollar. An ISO code like USD only works if that is the currency's name in your account. If you change a field's reference type to Internal ID or External ID, the file has to hold those values instead.
  • Use Add when every row is meant to create a new account. If your file has a parent account (Subaccount of), the parent has to exist before its child row is processed, so import parents first. This example has no parent column.

01. Check the chart before the import

Go to Lists > Accounting > Accounts. This chart has 10 accounts. 1010 Harbor National Checking is the only bank account, 4010 Consulting Revenue and 4020 Implementation Fees are the income accounts, and there's no 1015 or 4015 yet. That's the gap the import fills.

The chart before the import: 10 accounts, one bank account, no 1015 or 4015.

02. Review the CSV file

Open chart-of-accounts-import.csv. Row 2 is the bank account: 1015, First Coastal Operating, Bank, US Dollar, Brightwater Holdings : Brightwater US, FALSE. Row 3 is the income account: 4015, Recurring License Revenue, Income, no currency, Brightwater Holdings, TRUE. With TRUE on the parent subsidiary, the income account is available to that subsidiary and all of its children. Whether to share an account that widely is an accounting call, so don't copy that value without thinking about it.

The externalid column repeats the account number. That gives each account an identifier you chose, which later imports can use. It's optional, and External IDs have to be unique among account records.

One row per account. The bank row has a currency and one subsidiary with FALSE; the income row has no currency and the parent subsidiary with TRUE.

03. Start a Chart of Accounts import

Go to Setup > Import/Export > Import CSV Records. Keep Import Type on Accounting and Record Type on Chart of Accounts. Those are the defaults here. Leave Character Encoding and CSV column delimiter alone unless your file needs something else. Under CSV File(s), click Select..., choose chart-of-accounts-import.csv, and click Next.

Import Type Accounting, Record Type Chart of Accounts, and the chosen file.

04. Keep Data Handling on Add

On Import Options, leave Data Handling on Add and click Next. These accounts don't exist yet. Update and Add or Update can change an existing account whose identifier matches a row, so don't pick them for a file of new accounts.

Data Handling is Add.

05. Check the field mapping

Field Mapping proposes a match for each column in your file. Check every row instead of trusting the proposal. Here acctname goes to Account : Name (Req), acctnumber to Account : Number (Req), accttype to Account : Type (Req), and subsidiaries to Account : Subsidiaries (Req). The other four columns go to Currency, Description, External ID and Include Children. A column NetSuite didn't match needs to be mapped by you or removed. The required rows have no remove control.

Click the pencil on the subsidiaries row. Default Value or Reference Type opens with Choose Reference Type set to Names, which matches the full subsidiary names in this file. If your file held internal IDs, you would pick Internal ID here. Click Cancel to keep Names, then click Next.

All four (Req) fields are mapped. The pencil on the subsidiaries row opens its reference type.
Reference Type is Names, which matches full subsidiary names such as Brightwater Holdings : Brightwater US.

06. Save the mapping and run the import

On Save mapping & Start Import, enter Chart of Accounts Add as the Import Map Name. Saving it means the mapping is there the next time you import a file with the same columns. Click Save & Run.

The mapping is named Chart of Accounts Add before Save & Run.

NetSuite confirms that the CSV import "Chart of Accounts Add" has been saved and that the import job is in process.

The confirmation: mapping saved, job in process.

07. Check the import job

Click Import Job Status in the confirmation, or go to Setup > Import/Export > View CSV Import Status. The Chart of Accounts job shows Complete, 100.0%, and 2 of 2 records imported successfully. The count of successful rows should equal the number of data rows in your file. If it's lower, open CSV Response to see the error for each failed row.

Status Complete, 2 of 2 records imported successfully.

08. Confirm the new accounts

Go back to Lists > Accounting > Accounts. The chart now has 12 accounts. 1015 First Coastal Operating sits after 1010 as a Bank account in US Dollar, and 4015 Recurring License Revenue sits after 4010 as an Income account. Both start at a $0.00 balance and carry the descriptions from the file.

The chart after the import: 12 accounts, including 1015 and 4015.

Check the result

  1. Job Status shows Complete and 2 of 2 records imported successfully.
  2. Total reads 12 on the chart of accounts, up from 10.
  3. 1015 First Coastal Operating shows Bank and US Dollar, and 4015 Recurring License Revenue shows Income.

Common questions

Why would the bank account row fail?

A Bank account needs a currency and exactly one subsidiary. Use the currency's name, US Dollar in this example, put the full subsidiary name in the subsidiaries column, and set Include Children to FALSE. The currency also has to be one the subsidiary can use. If a row fails, the CSV Response on the job lists its error.

Should the currency say USD or US Dollar?

With the reference type on Names, use the name of the currency record, which here is US Dollar. USD only works if that's what your currency record is named, or if you change the mapping to a reference type that accepts it.

What does Include Children do?

When it's TRUE, the account is available to the subsidiary in that row and all of its children. The income account here uses the parent, Brightwater Holdings, with TRUE. The bank account uses one child subsidiary with FALSE, because a bank account can belong to only one subsidiary.

What is the External ID column for?

It's an identifier you choose for the account, so a later import or integration can point at it without relying on the name. Here it repeats the account number, which is common but not required. It has to be unique among your accounts.

What does the pencil on a mapping row do?

It opens Default Value or Reference Type. For a reference field like Subsidiaries, you choose whether the values in your file are Names, Internal IDs or External IDs. This file uses full subsidiary names, so Names is right.

Can I reuse the saved mapping?

That's what saving it is for. Chart of Accounts Add is kept so you can start a later import from it with a file that has the same columns. This walkthrough only saves it and runs it once, so it doesn't show a rerun. Check the file and the mapping again before you run it on new data.