Skip to main content
Category
NetSuite
Published
Updated
Reading time
10 min read

NetSuite General Ledger: Chart of Accounts & GL Guide (2026)

Guide to the NetSuite General Ledger — chart of accounts design, journal entries, period close, reporting dimensions, and GL configuration best practices.

Contents8 sections ↓

NetSuite General Ledger: the foundation everything else sits on

The NetSuite general ledger is the record where every posting transaction lands, such as invoices, vendor bills, expense reports, inventory movements and journal entries. Each posting carries an account (what kind of transaction it is) plus independent segments such as Department, Class and Location (where and why), so you need fewer accounts than in a system that bakes everything into the account number. Design the chart of accounts and the segments first; everything downstream depends on them.

Last reviewed: 25 October 2026. Period-close behavior, year-end close and approval options re-checked against Oracle's NetSuite help; new section below on 2026.1 and 2026.2.

Every transaction in NetSuite that posts ends up in the GL. If the GL is well structured, reporting is clean and audits are straightforward. If it is a mess, everything downstream suffers.


What changed in NetSuite 2026.1 and 2026.2

  • 2026.1: Intelligent Close Manager, a dashboard portlet that gives finance teams a view of period-end close tasks, with AI-driven flags for trends and errors (NetSuite release highlights).
  • 2026.1: you can change the Posting Period on journal entries in Pending Approval status, and reclassification journals are now approved automatically.
  • 2026.1: journal line sublists use a keyed configuration across supported journal types, so integrations over REST, CSV or SOAP can change individual lines without replacing the whole sublist. Details in our 2026.1 finance summary.
  • 2026.2: the finance changes are mostly around the GL rather than in it: bank reconciliation, Payment Runs for AP, and automated tax on term discounts. See our 2026.2 finance summary.

The release-specific items other than Intelligent Close Manager come from Oracle's release notes as summarized in those posts; the 2026.2 notes were Release Preview and Oracle marks them subject to change.


The multi-segment model

Traditional accounting systems use a segmented account number — something like 4100-200-01 where each segment represents a different dimension (account-department-location). This approach requires either very long account codes or a proliferation of accounts.

NetSuite takes a different approach. The GL has separate, independent dimensions:

  • Account: The core chart of accounts (Revenue, COGS, Salaries, Rent, Cash, AR, AP, etc.)
  • Department: Organizational unit (Marketing, Engineering, Sales, Support)
  • Class: Flexible classification (Product Line, Business Unit, Channel)
  • Location: Physical or logical location (offices, warehouses, regions)

When a transaction posts, it records all dimensions independently. A salary expense posts as:

  • Account: 6100 – Salaries & Wages
  • Department: Engineering
  • Class: Product Development
  • Location: Austin Office

You can then report on any combination: all salaries by department, engineering costs by location, product development expenses across all locations. This flexibility comes from having independent dimensions, not from creating hundreds of accounts.

Why this matters

A traditional system might need:

  • 6100 – Salaries – Marketing – NY
  • 6101 – Salaries – Marketing – LA
  • 6102 – Salaries – Engineering – NY
  • 6103 – Salaries – Engineering – LA
  • ...

That's an exponential explosion of accounts. NetSuite needs one Salaries account plus the department and location dimensions. Your chart of accounts stays clean, your trial balance is readable, and adding a new department or location doesn't require creating dozens of new accounts.


Designing the chart of accounts

Account types

NetSuite uses standard account types that determine balance sheet vs. income statement classification:

Balance Sheet:

Income Statement:

  • Income
  • Cost of Goods Sold
  • Expense
  • Other Income
  • Other Expense

Special:

  • Non-Posting, and Statistical accounts for tracking non-monetary data

Some accounts, such as Unbilled Receivable and Deferred Revenue Clearing, are system-generated: Oracle says all debits and credits to them must be system-generated, so do not post to them by hand.

Account numbering

Turn on the Use Account Numbers preference, then keep the scheme simple. A common layout:

  • 1000-1999: Assets
  • 2000-2999: Liabilities
  • 3000-3999: Equity
  • 4000-4999: Revenue
  • 5000-5999: Cost of Goods Sold
  • 6000-6999: Operating Expenses
  • 7000-7999: Other Income/Expense
  • 8000-8999: Taxes

Leave gaps between account numbers for future additions. If your current expense accounts run 6000–6050, don't start the next one at 6051 — use 6100, 6200, etc. to leave room for related accounts.

Sub-accounts

NetSuite supports parent-child account hierarchies. For example:

  • 6000 – Payroll Expenses (parent)
    • 6010 – Salaries & Wages
    • 6020 – Payroll Taxes
    • 6030 – Employee Benefits
    • 6040 – Workers' Compensation

Sub-accounts roll up to the parent on financial reports. Use them for reporting detail within a category, but don't go deeper than 2-3 levels — deeply nested accounts become hard to manage and report on.

How many accounts is too many?

There is no magic number. A useful test: if you have accounts such as "Travel – Sales" and "Travel – Marketing", they should be one "Travel" account with a Department segment. A chart of accounts that keeps growing usually has accounts that should be segments.


Journal entries

Manual journal entries

Navigate to Transactions > Financial > Make Journal Entries to create manual journal entries.

Every journal entry requires:

  • Date: the posting date
  • Period: the accounting period (auto-populated from date)
  • Subsidiary: for OneWorld companies
  • Lines: at minimum two lines (debit and credit) that balance to zero

Each line specifies the account, debit or credit amount, and the optional dimensions (department, location, class, entity, memo).

When to use journal entries

Journal entries are appropriate for:

  • Adjusting entries: accruals, deferrals, reclassifications
  • Non-transactional entries: depreciation, amortization, bank fee recording
  • Correcting entries: fixing misclassified transactions
  • Intercompany entries: entries that affect multiple subsidiaries

They are not appropriate for:

  • Recording revenue (use invoices/cash sales)
  • Recording expenses (use vendor bills/expense reports)
  • Inventory adjustments (use inventory adjustment records)

Using the correct transaction type ensures proper subledger updates. A journal entry that credits revenue doesn't update the AR subledger — an invoice does.

Recurring journal entries

For entries that repeat on a schedule (monthly depreciation, rent accruals, standard allocations), use memorized transactions:

  1. Create the journal entry
  2. Click Memorize
  3. Set the recurrence (monthly, quarterly, etc.)
  4. Choose whether the entry is entered automatically or you are reminded to enter it

This eliminates the manual creation of predictable entries each period.

Approval workflows

For companies that require journal entry approval:

There are two routes:

  1. Require Approvals on Journal Entries (Setup > Accounting > Accounting Preferences, General subtab): every journal waits for a user with the Journal Approval permission before it posts.
  2. Approval routing: with Journal Entries checked under Approval Routing, a SuiteFlow or SuiteApproval workflow decides who approves, so you can build rules by amount or account. When it is on, the first preference no longer appears.

Use one or the other, and approve existing pending entries before switching.

This is particularly important for entries that affect revenue, intercompany balances, or executive compensation — areas where auditors expect controls.


Period management

Accounting periods

NetSuite uses named accounting periods that you define:

  • Standard: monthly periods in the fiscal year
  • Other calendars, such as 4-4-5 or 13 periods, where your finance team uses them

Navigate to Setup > Accounting > Manage G/L > Manage Accounting Periods to define your periods.

Period close

NetSuite separates locked from closed:

  • Locked (Lock A/R, Lock A/P, Lock Payroll, Lock All): users with the Override Period Restrictions permission can still post and edit. Others cannot until the transaction type is unlocked for the period.
  • Closed: no one, administrators included, can make changes that affect the general ledger. The period must be reopened first.

The Period Close Checklist runs the locking tasks first, then adjustments such as intercompany adjustments, revaluing open foreign currency balances, recognizing revenue and calculating consolidated exchange rates. Close is the final task. If a period record has Allow Non-G/L Changes checked, users with that permission can still make changes that do not touch the GL.

Quick Close, enabled in Accounting Preferences, closes many periods at once but does not run the closing tasks; it only marks them complete. Use it for old periods, not for a live close.

Year-end close

You do not need a closing journal entry. Oracle recommends Automatic Close: close all periods in the year and NetSuite handles the rest.

  • Income and expense balances are not actually posted to retained earnings, because that would zero past income statements and stop you viewing them. Reports show the figures as if the year were closed.
  • Prior-year net income appears in Retained Earnings and current-year net income in Net Income.
  • Manual Close, where you journal the balances to retained earnings, is possible but Oracle advises against it.

To correct something after year-end, reopen the period; reopening also reopens all later closed periods.

Need help designing your chart of accounts or streamlining period close?

We configure GL structures, reporting dimensions, and close workflows for mid-market NetSuite implementations. Get it right from the start.

Talk to our NetSuite team

Reporting from the GL

Standard financial reports

NetSuite includes built-in financial reports:

  • Balance Sheet: standard or comparative
  • Income Statement / P&L: by period, YTD, comparative
  • Cash Flow Statement: indirect or direct method
  • Trial Balance: detailed or summary

All reports can be filtered and grouped by any dimension — department, location, class, subsidiary.

Financial Report Builder

For custom financial reports, use the Financial Report Builder (Reports > New Financial Report):

  • Drag and drop account rows
  • Add calculated rows (subtotals, percentages, variances)
  • Add columns by period, dimension, or comparison (budget, prior year, prior period)
  • Apply formatting and conditional highlighting

This builds the financial statements your CFO and board want to see, without exporting to Excel.

Saved searches on GL data

For ad-hoc GL analysis, saved searches query the transaction table directly:

  • Filter by account, period, department, entity, amount
  • Summarize by any combination of dimensions
  • Export to CSV or connect to dashboards

Saved searches are more flexible than financial reports for non-standard analysis — "show me all journal entries over $10,000 posted in the last week" or "total expenses by vendor by department."


Best practices

Don't create accounts for reporting. If you find yourself creating "Salary – Engineering" and "Salary – Sales," stop. Use one Salary account with the Department dimension. Accounts are for the type of transaction; dimensions are for the organizational context.

Standardize department and class hierarchies. If every subsidiary has a different department structure, consolidated reporting becomes painful. Agree on a common hierarchy across the organization.

Lock and close periods promptly. An open period is an invitation for backposted transactions that distort comparative reporting. Set a target for how soon after reconciliation each period is locked, and keep to it.

Maintain a GL account request process. Don't let anyone create new GL accounts without finance approval. Every new account should have a clear purpose that can't be served by an existing account plus a dimension.

Review inactive accounts annually. GL accounts accumulate over time. Review the chart of accounts annually and inactivate accounts that haven't been used — they clutter reports and create confusion.

Document your segment definitions. What does "Class" represent in your company? If it's product line, document that. If it's channel, document that. Future employees and auditors need to understand your dimensional model.


What clients ask before signing

Lucia · BrokenRubik

Replies by email within 24 hours

Lucia

Not working the way this guide describes? Tell us what you see in your account and we'll reply with what we'd check first.

A person reads every message. No sales sequence.

Share
Gustavo Cañete

Gustavo Cañete

Co-Founder & Development Director

Co-founder and Development Director at BrokenRubik overseeing technical excellence and development operations. 12+ years of experience leading NetSuite development teams and delivering complex enterprise solutions.

12+ years experienceOracle NetSuite Certified +1
NetSuite DevelopmentSuiteCommerce AdvancedTeam ManagementTechnical Leadership+2 more

Related