Most of the companies we work with start out their NetSuite journey with a chart of accounts that has been growing for a long time. Sometime before anyone currently in the finance team joined, the company opened a second office, and someone created Rent Expense – East and Rent Expense – West so that the two offices would appear separately on the P&L. The team repeated that when the company launched a product line, and again when it stood up a second sales region. By the time they’ve finally, truly outgrown QuickBooks, the chart of accounts is 800 deep.
The instinct behind those 800 accounts made sense in the system that produced them. It will work against you in NetSuite, and I want to explain why before you sit down to map the old chart to the new one.
Where the 800 Accounts Came From
If your team worked in QuickBooks, the software gave them two reporting dimensions. QuickBooks Desktop offers Class and no Location field at all. QuickBooks Online adds Location, and Intuit’s developer support confirms that even Advanced supports one class per line and one location per invoice, with no way to add a third.
Accounts cost nothing. QuickBooks Desktop allows 10,000 accounts on Pro and Premier, and QuickBooks Online Advanced (QBO) allows unlimited accounts. A controller who needs the business by region, department, and program has three things to track and two fields to track them in, so the third one goes into the account name.It should be noted that QBO has come a long way in creating dimensionality since 2020.For a license upcharge you can have it but it may still leave you with a sense of wanting.
Companies coming from Dynamics GP and Sage reach 800 accounts for the opposite reason. GP builds a general ledger code from as many as ten segments, so account 300-6170-00 identifies repairs and maintenance for division 300. That controller never separated an account from a segment, because the system never did.
Many controllers also tried segments and got burned. Intuit publishes a list of transactions that break the Balance Sheet by Class report in QuickBooks Desktop, including journal entries that fail to balance within each class, paychecks referencing more than one class, sales tax payments, and inventory build assemblies. Each of those lands in an Unclassified column. Your controller learned that detail in an account name always survives, while detail in a segment does not.
How NetSuite Divides the Same Work
NetSuite (NS) gives you four segment fields and lets you define more. You can run financial reports by segment (e.g., Income Statement by Department).
Subsidiary should represent a legal entity. Each subsidiary produces its own balance sheet, files its own tax return (or is part of a consolidated tax return), and consolidates into the parent. We hold that line firmly, because a company that uses Subsidiary to separate divisions inside one legal entity generates intercompany activity no auditor requested and a consolidation that describes nothing real. Divisions and programs belong in the other fields. You must also associate each department, class, location, and custom segment with a subsidiary before anyone can select it on that subsidiary’s transactions.
Department and Class serve as general-purpose reporting dimensions. Most services organizations assign one to function and the other to service line. Neither Department nor Class drives the system’s operational behavior, but you can limit which accounts are available to which Departments/Classes.Many companies consider the Class Segment to be Business Unit and allows it to meet the needs of Segment Reporting.
For a U.S. public company, the accounting framework is ASC 280, Segment Reporting. The basic principle is that investors should be able to see the business through approximately the same lens that senior management uses to evaluate it.
Location does more than report. Once you enable Multi-Location Inventory, Location determines where NetSuite receives and ships stock. Any company with inventory should reserve the Location segment for inventory management.
Custom segments extend your ability to subdivide your financial statements. You define the dimension, populate its values, and attach it to the record types that need it. If you set a segment as GL Impacting, NetSuite treats it as a real accounting dimension: the segment appears on the GL Impact page, you can filter and group standard reports by it, and NetSuite can include it on the journals it generates for you, including revenue recognition and amortization. However, a word of caution.As desirable as a custom segment may be, its use may be limited with products in the NetSuite ecosystem that may only populate native NS segments: Account, Department, Class and Location. This is an important consideration, especially if, say, you plan on using expense capture systems as an integration to NS.
Segments Are Great, But There’s No Free Lunch
Every dimension becomes a field that somebody completes. Your team completes it on each transaction, import template, and integration mapping for as long as the company runs on NetSuite. For many segment values, on many transaction types, NetSuite will help you with default tagging, but the more segmentation you do, the more likely you are to have un-tagged transactions.
NetSuite handles header and line classifications differently. A company that uses per-line classifications alone will find that each item line on an invoice has a location while the Accounts Receivable line has none, which produces a correct P&L by location and a potentially confusing balance sheet by location. We recommend using both levels, and we settle three journal preferences during design: Always Allow Per-line Classifications on Journals, Allow Empty Classifications on Journals, and Allow Non-balancing Classifications on Journals (which should generally be false).
Budgeting does not treat custom segments the way people expect. You can build a budget by custom segment, but NetSuite excludes custom segments from the Column list on budget-related reports and from the Budget and Financial fields in the Financial Report Builder. When a CFO expects budget versus actual by a dimension, we make that dimension a class, a department, or a location.
We highly discourage creating dependencies between the segments.For example, if Class is Consulting, limit the selection of Departments to Independent Contractors, and Contractor Travel.This is very hard to manage, and NetSuite does not easily create validation rules for the coding at the segment level.At best you will need to create a number of adjustments after the fact and at worst, complex scripting can provide some assistance.Further, like above, it is nearly impossible to push these relationships to the perimeter of your systems stack to work in your order entry, expense reimbursement, or time capture system.
Two Clients, Two Answers
One client runs a professional services firm from a single office with four service lines and one legal entity. We enabled Class for service line and left the other fields off. That client works from a chart of roughly 150 accounts and pulls service-line profitability from a standard report.
Another client operates several legal entities on restricted funding. Subsidiary identifies the entity, Department identifies the program, and a custom Fund segment identifies the grant, with GL impact enabled so that the fund value survives revenue recognition. The client pays for that with a written policy naming who may create a fund value.
A Final Thought
Your team will continually think of reasons to add new accounts. Before agreeing to create a new one, think about whether it’s solving the business problem in the best way.
Strip the attribution out of the name. Remove every reference to a place, a team, a product, a program, or a client from the account someone asked you to create. If what remains describes a kind of transaction your chart does not cover, approve the account, and consider making it a child of the parent that covers the category. If what remains duplicates an account you already have, the request is for a segment value. Cloud hosting is a kind of cost. Rent Expense – East is just rent.
Ask whether the distinction changes the accounting or the reporting. A different account type, a different tax line, capitalizing instead of expensing, or deferring instead of recognizing, each argues for a separate account, because those choices change what NetSuite does with the transaction. A dimension labels a transaction and leaves the treatment alone. When the only thing that changes is who wants to see the number and how they want it grouped, you might be better served using a segment.
Ask whether the same distinction applies to your other accounts. If the person asking will also want the eastern version of salaries, travel, and marketing, then region is a dimension. A distinction that repeats across the chart is a dimension by definition, and writing it into account names multiplies your chart by every value the business adds later.
Adding a value to a dimension you already run takes a few minutes. Unpicking your legacy chart of accounts during design takes careful planning and thought, but will pay dividends for years in terms of easier, clearer reporting.
If you would like to talk through segment design before you rebuild your chart, Opal Creek is happy to help.
Resources
NetSuite
Classifications Overview — Departments, classes, and locations, including the subsidiary association rule in OneWorld.
Custom Segments — The SuiteGL reference, and the entry point for balancing segments.
Benefits of Custom Segments — What GL impact gives you, including report filters and grouped columns.
Custom Segments in Automatically-Generated Journals — Which system journals include custom segment values.
Using Per-Line Classifications — Header and line behavior, including the invoice whose receivable line has no location.
Configuring Per-Line Locations for Transactions — How per-line locations behave with Multi-Location Inventory.
Class, Department, Location Journal Entry Preferences — The three journal preferences named above.
Setting Up a Subsidiary Budget — The dimensions NetSuite accepts when you create a budget.
Budget-Related Reports — Where custom segments stop working in budget reporting.
Merging Accounts — The same-type merge rule and its effect on reconciliations.
QuickBooks
Learn About Usage Limits — Intuit’s caps by plan, including unlimited accounts on Advanced.
Maximum Number of List Entries — Desktop list limits, including 10,000 accounts on Pro and Premier.
What Transactions Are Not Supported by Balance Sheet by Class — Intuit’s list of what breaks a segmented balance sheet.
Intuit Developer Support: Dimensions in QuickBooks Online Advanced — One class per line, one location per invoice, no third dimension.
Mapping General Ledger Accounts in QuickBooks Advanced Payroll — How location-specific payroll accounts work.
Legacy ERP and year-end workflows
Dynamics GP General Ledger — Microsoft on account segments and divisional retained earnings.
Dynamics GP Account Framework — The segment structure set at installation.
Lacerte Trial Balance Utility — How tax software assigns tax lines to accounts.
Import Account Balances into UltraTax CS — Tax codes assigned at the account level.
Related reading on the Opal Creek blog


