A single vendor bill lands for facilities work across three sites and two departments. Code it to one location and your P&L by location is wrong the moment you post it.
That is the real job of location and department coding in NetSuite: making sure every line of every bill lands in the right segment before it hits the general ledger. This guide walks through the configuration end to end, from enabling the classification fields to routing approvals by location, and where the native setup starts to strain at volume.
Get the classifications right before you touch a bill
NetSuite classifies transactions with three standard segments: Department, Location, and Class, plus any custom segments you create and, in OneWorld, Subsidiary. Location tells you *where* the spend happened, Department tells you *which function owns it*, and Class is a flexible third axis for things like product line or program.
Coding accuracy is what makes segment reporting trustworthy. Get it right and your P&L by location, departmental budgets, and cost allocations all reconcile; get it wrong and finance spends close week chasing miscoded bills.
Step 1: Turn on the features you will code against
You cannot code to a segment that is not enabled. Go to Setup > Company > Enable Features and switch on Departments, Locations, and Classes under the Company tab.
In the same screen, enable Approval Routing and SuiteFlow, which you will need for department-based routing later. If you run OneWorld, confirm your subsidiaries are set up first, since Location and Department records can be restricted per subsidiary.
Step 2: Decide where coding happens, header or line
This is the decision that makes or breaks multi-location bills. NetSuite lets you apply Department, Location, and Class at the header level for the whole bill, or at the line level for each expense and item line.
Header-level coding is fine when a bill belongs entirely to one location. For any bill that spans sites or functions, you code at the line level and split the amount across the right segments, which is the only way a single invoice allocates cleanly to multiple locations.
Make the classification fields mandatory so a bill cannot be saved without them. That one setting prevents the most common cause of miscoded spend: a rushed AP clerk leaving the field blank.
Step 3: Set defaults so coding is not manual every time
Manual coding on every line does not scale. Reduce it by setting defaults where NetSuite lets you.
Assign a default Department and Location on employee, vendor, and item records so recurring bills pre-fill their segments. A utility vendor tied to a specific plant, for example, should default to that location every time.
Defaults handle the predictable bills. They do not solve the split bill that hits several locations at once, which still needs line-level attention.
Step 4: Route approvals by location and department
Coding and approval are two halves of the same workflow. NetSuite’s native approval routing lives in the Approvals Workflow SuiteApp (SuiteApprovals), which is not enabled by default and adds multi-level routing, rules, and multiple approvers.
Two setup steps matter most. Assign a supervisor to every employee who enters bills, since the supervisor is the default approver, and set your approval preferences under Setup > Accounting > Accounting Preferences.
From there, SuiteFlow lets you build rules that route a bill by amount, department, location, class, or subsidiary. A bill coded to the Chicago plant above a threshold can route to the Chicago controller, then to finance, automatically.
Native NetSuite coding vs AP automation
Native NetSuite handles all of this. The question is how much manual effort it takes as your bill volume and location count grow.
| Capability | Native NetSuite | With AP automation (e.g. DOKKA) |
| Line-level department/location coding | Manual entry per line | AI pre-codes lines, human reviews |
| Split one bill across locations | Manual line splits | Suggested splits from history and rules |
| Default segments | Per employee, vendor, item | Learned per vendor plus rules |
| Missing-code prevention | Mandatory fields | Flagged before posting |
| Approval routing by segment | SuiteApprovals + SuiteFlow | Configurable by amount, vendor, department, PO status |
| PO matching | Manual or SuiteApp | 2- and 3-way matching built in |
| Audit trail | Native | Native plus full document trail |
| Effort at high volume | Grows with every bill | Roughly flat |
Where native coding starts to strain
The native setup works well until scale changes the math. Across dozens of locations and thousands of monthly bills, line-level coding becomes a real time sink, and every blank or wrong segment surfaces at close as a correction.
The pain is worst for multi-entity organizations. Bills arrive in different formats, split across locations that each need their own approver, and the manual coding sits directly in the critical path of month-end.
How DOKKA AP automates the coding and routing
This is where an AP automation layer on top of NetSuite earns its place. DOKKA AP captures every invoice, and its contextual AI extracts the vendor, amounts, and line items, then maps each line to the right department, location, and cost center before it reaches NetSuite.
Instead of typing segments on every line, your team reviews exceptions. Recurring vendors code themselves from history, split allocations are suggested rather than rebuilt by hand, and a missing code is flagged before anything posts.
Approvals ride the same rails. DOKKA runs configurable multi-level approval workflows by amount, vendor, department, or PO status, with two- and three-way PO matching so discrepancies are caught before payment.
Because DOKKA syncs natively with NetSuite, the clean, coded, approved bill posts straight into your ledger with the segments already attached. NetSuite stays the system of record; DOKKA removes the manual coding and routing that slow the close.
Frequently asked questions
Can you code a single NetSuite vendor bill to multiple departments or locations?
Yes. Apply Department, Location, and Class at the line level rather than the header, then split the lines across the segments they belong to, which is how one invoice allocates cleanly across several locations in a single posting.
Do you need SuiteApprovals to route bills by department?
For automated, rule-based routing, yes. The Approvals Workflow SuiteApp (SuiteApprovals), off by default, is what lets you route by amount, department, location, or subsidiary and add multiple approvers, whereas basic supervisor approval works without it.
What is the difference between Department, Class, and Location in NetSuite?
Location records where spend physically happened, Department records which function owns it, and Class is a flexible third dimension for things like product line or program. They are independent segments, so a single bill line can carry all three at once for precise reporting.
How do you make department and location mandatory on vendor bills?
Set the classification fields to mandatory in your accounting preferences and field configuration so a bill cannot be saved without them. Making the segments required is the simplest control against blank or miscoded lines that surface as corrections at close.
Can AP automation code invoices by location automatically?
Yes. Tools like DOKKA use contextual AI to pre-code each line by department, location, and cost center from the vendor and historical patterns, then route and sync the coded bill into NetSuite, so your team reviews exceptions instead of coding every line.
The bottom line
Configuring multi-location and department coding in NetSuite comes down to four moves: enable the segments, code at the line level, set defaults, and route approvals by segment. Done well, it keeps your P&L by location and department accurate without a fight.
The manual effort is what grows with scale. If line-level coding across many locations is slowing your close, an AP automation layer pre-codes and routes bills into NetSuite for you.
Book a demo to see it run on your own invoices.