Most NetSuite accounts run at a fraction of what the license buys. This 47-point checklist covers the seven layers we audit in a NetSuite health check — financials, saved searches and reporting, workflows and scripts, roles and security, data hygiene, integrations, and licensing. The biggest wins are usually the cheapest to find: modules you pay $500–$3,000/month for but never configured, saved searches that drag every page load, and full-access licenses at $129–$199/month assigned to people who only enter time.

When a live NetSuite account gets a fresh set of eyes, the pattern rarely changes. The system was configured for the business as it looked two or three years ago, nobody has revisited it since go-live, and the account has quietly drifted. Reports slowed down. Scripts pile up. Someone bought a module in a renewal that never got turned on. Users who left the company still have licenses.

None of that is a NetSuite problem. It's a maintenance problem — and maintenance is cheap compared to what it costs to leave it. An hour of a US NetSuite consultant runs $125–$300 depending on the work. A module you're not using runs $6,000–$36,000 a year. The math on a review is not close.

This is the checklist we work from. You can run most of it yourself in a day. Where a fix needs SuiteScript or a data cleanup at scale, we'll flag it — and you can decide whether to do it in-house, put it on a managed-services retainer, or bring in help for a one-off block.

30–50%

Typical reduction in user-license spend when the license mix is right-sized — downgrading full users who only enter time and expense to self-service licenses at $10–$25/month instead of $129–$199. Market observation, 2026.

How the checklist is organized

Forty-seven checks across seven layers. Each layer maps to a place where accounts drift, and each item includes a one-line reason it matters. Work top to bottom — the order roughly follows what pays back fastest.

LayerChecksWhat it protects
1. Financials & close7Clean books, a faster close, no reopened periods
2. Saved searches & reporting7Page-load speed and numbers people trust
3. Workflows & scripts7Performance and predictable automation
4. Roles & security7Audit readiness and least-privilege access
5. Data hygiene7Reporting accuracy and clean matching
6. Integrations6Reliability and governance headroom
7. Licensing & cost6Money — recovering shelfware and over-provisioning

Layer 1 — Financials & the close

If the books are messy, everything downstream is guesswork. Start here. A mid-market close should land in 5–7 business days; when we see it stretch past 10, one of these is usually the reason.

  • 1. Accounting periods are locked as they close. Open prior periods let backdated transactions rewrite history you already reported. Lock A/P, A/R, and G/L per period; leave only the current one open.
  • 2. Bank and credit-card accounts reconcile monthly, inside NetSuite. Reconciliations done in a spreadsheet don't leave an audit trail and don't catch duplicate payments.
  • 3. Intercompany transactions actually eliminate. On multi-entity (OneWorld) accounts, check that intercompany journals and the elimination subsidiary net to zero. Manual consolidation in Excel is the single most common reason a close drags.
  • 4. Deferred revenue is running in the module, not by hand. If you licensed Advanced Revenue Management but the team still schedules revenue in a spreadsheet, you're paying for a feature and doing the work anyway.
  • 5. The chart of accounts hasn't sprawled. Accounts added ad hoc over the years bloat reports. Inactivate what's unused; use segments (department, class, location) instead of new accounts for slicing.
  • 6. Reminders and approval routing on bills and journals are on. Unapproved transactions sitting in limbo distort A/P aging and delay the close.
  • 7. Budgets are loaded and variance reporting works. An account with no budget in NetSuite is an account where the CFO is still running the business from a workbook.

Cross-check against the failure patterns we cover in why NetSuite implementations fail — several of them show up first as a close that won't come down.

Layer 2 — Saved searches & reporting

Saved searches are NetSuite's engine and its most common performance sink. A single heavy search on a dashboard portlet runs every time the page loads, for every user, all day.

  • 8. No unbounded searches on dashboards. A transaction search with no date filter can scan millions of lines. Bound every dashboard search to a rolling window (this fiscal quarter, last 90 days).
  • 9. Formula filters aren't doing work that native fields can do. Filtering on a CASE WHEN formula forces a full scan. Filter on indexed fields first, formulas last.
  • 10. Dashboards carry five portlets, not fifteen. Every reminder, KPI, and list portlet is a query. Trim home dashboards to what people actually read each morning.
  • 11. Orphaned searches are inactivated. Searches built for a project that ended, or by someone who left, still run if they're on a shared dashboard or feeding a workflow. Find and retire them.
  • 12. Reports and searches agree. When the same metric returns two numbers depending on where you look, adoption dies. Reconcile the definitions and pick one source of truth.
  • 13. Scheduled email searches still have an audience. Daily result emails nobody opens are load and noise. Confirm each recipient list is current.
  • 14. Heavy analytics live in SuiteAnalytics or a warehouse, not real-time searches. Board-level trend reporting over years of data belongs in a workbook or an external warehouse, not a live search hammering the transaction table.

30–60s → seconds

A dashboard search that takes 30–60 seconds to load usually drops to a few seconds once its date range is bounded and its formula filters are moved off the critical path. This is the most common single fix we make on a slow account.

Layer 3 — Workflows & scripts

Automation is where NetSuite earns its keep and where it silently rots. SuiteScript — NetSuite's JavaScript-based customization language — and SuiteFlow workflows accumulate over years, and old logic keeps firing long after anyone remembers why.

  • 15. No two scripts fight over the same record. Competing user-event scripts on the same transaction type cause intermittent, maddening bugs. Map what fires on save for your key records.
  • 16. Scheduled and map/reduce scripts stay inside governance limits. Scripts that hit usage-unit ceilings fail silently mid-run, leaving data half-processed. Check the script execution logs for governance errors.
  • 17. Workflows do workflow-sized jobs. Heavy record loops built in SuiteFlow belong in a script. Workflows are for state and routing, not bulk processing.
  • 18. Deprecated API versions are flagged. Scripts written on SuiteScript 1.0 still run, but they're on borrowed time. Inventory them and plan the migration to 2.x before Oracle forces it.
  • 19. Error handling and logging are real. A script that swallows errors is a script that corrupts data quietly. Confirm failures are logged and someone sees them.
  • 20. Bundle and SuiteApp updates are current. Third-party bundles that haven't been updated in years drift out of support and break on release upgrades.
  • 21. Every customization has a note explaining why it exists. Undocumented scripts are the reason nobody will touch a working system. Require a one-line business reason on each.

When the automation layer needs real work — rebuilding a script, untangling an integration trigger — that's development and integration territory, not a config change.

Layer 4 — Roles & security

Access sprawl is the check most companies skip and every auditor asks about. It's also fast to fix.

  • 22. Administrator is rare. The full Administrator role should sit with one or two people. We routinely find five, ten, a dozen — including ex-employees. Everyone else gets a scoped role.
  • 23. Terminated employees have no active login. An active login for someone who left is both a security hole and, if it's a full license, money you're still paying.
  • 24. Roles follow least privilege. A sales rep doesn't need to edit the chart of accounts. Trim standard roles to what each function actually touches.
  • 25. Segregation of duties holds. The person who enters a vendor bill shouldn't also approve and pay it. Check the approval chains for gaps.
  • 26. Two-factor authentication is enforced on privileged roles. NetSuite supports it; many accounts never turned it on for admins and finance.
  • 27. IP restrictions and login audit make sense. Review the login audit trail for logins from places or hours that shouldn't happen.
  • 28. Custom roles are documented and owned. A pile of one-off custom roles nobody can explain is how access creeps back after you clean it up.

Layer 5 — Data hygiene

Dirty data is the root cause behind most "NetSuite is wrong" complaints. The software reports exactly what's in it. If customers are duplicated three ways, so is the revenue.

  • 29. Duplicate customers, vendors, and items are merged. Duplicates split reporting, break matching, and inflate lists. Run the duplicate detection and merge on a schedule.
  • 30. Inactive records are actually inactive. Old items and customers cluttering dropdowns slow data entry and invite mis-keying.
  • 31. Item costing is set and consistent. Mixed or missing costing methods produce inventory valuations no one trusts — the classic post-go-live distributor problem.
  • 32. Required fields are enforced where they matter. If a field is important for reporting, make it mandatory. Optional fields get skipped, and gaps show up in every report that groups by them.
  • 33. Naming conventions are consistent. "ABC Corp," "ABC Corporation," and "ABC" are three customers to NetSuite. Standardize and enforce.
  • 34. Open transactions are genuinely open. Old open sales orders, purchase orders, and unapplied payments distort every operational report. Close or write them off.
  • 35. Subsidiary, class, department, and location tagging is complete. Blank segments are the reason a P&L by department has an "unassigned" bucket eating the margin.

Paying too much? Benchmark your license spend.

Before you renew, see what your license and modules should actually cost against 2026 market benchmarks — itemized, in about two minutes.

Estimate my cost in 2 minutes

Free · instant on-screen results · no sales call required.

Layer 6 — Integrations

Every connector to Shopify, Salesforce, a 3PL, or a bank is a moving part that can fail, over-poll, or quietly fall out of sync. Integrations cost $15,000–$50,000 each to build; they cost more than that to ignore once live.

  • 36. Nothing polls every minute that doesn't need to. A connector hammering NetSuite on a tight schedule burns governance and can throttle everything else. Match poll frequency to how fresh the data truly needs to be.
  • 37. Failed syncs raise an alarm. The dangerous integration is the one that fails silently. Confirm errors surface to a human, not just a log.
  • 38. Field mappings still match reality. Source systems change fields; mappings drift. Spot-check that orders, items, and customers land where they should.
  • 39. There's a reconciliation between systems. A daily or weekly count of records on each side catches drift before finance does.
  • 40. Integration credentials use token-based auth and dedicated roles. Connectors running under a named employee's login break when that person leaves and over-grant access. Give each integration its own scoped role and token.
  • 41. Retired integrations are fully turned off. A connector for a tool you stopped using may still be running, still authenticated, still consuming capacity.

Layer 7 — Licensing & cost

This is where the checklist pays for itself. Licensing drift is pure waste — money leaving every month for capacity you don't use. Run these before every renewal, and start 90 days ahead because changes take effect at the contract date.

  • 42. Every module you pay for is configured and used. Modules run $500–$3,000/month each (SuiteCommerce up to $5,000). A licensed-but-dark module is $6,000–$60,000 a year of pure shelfware. This is the most common recovery we find.
  • 43. Full users who only enter time are on self-service licenses. Full access is $129–$199/user/month; employee self-service is $10–$25. Reclassifying the wrong-tier users is the fastest license saving there is.
  • 44. Licensed user count matches active user count. You pay for provisioned seats, not used ones. Reclaim licenses tied to people who've left or changed roles.
  • 45. You're not about to trip a service-tier cap by surprise. The Standard tier includes 100 users and 200,000 monthly transaction lines. Crossing either forces a paid jump to Premium. Know where you sit before Oracle tells you at renewal.
  • 46. The renewal uplift is capped. Renewals rise 5–8% a year by default. A 3–5% cap negotiated into the contract is achievable and worth six figures over a decade.
  • 47. Sandbox and premium-support add-ons still earn their keep. A sandbox at 10–20% of your license subtotal is worth it during active development and questionable when nobody's built anything in a year.

How to run this audit yourself in a day

You don't need us for the first pass. Work in this order — it front-loads the findings that pay back fastest and keeps you inside a single business day.

  1. Morning — money and access. Start with Layer 7 (licensing) and Layer 4 (roles). Both are pure inspection: pull the Manage Users and Billing Information pages, list active licenses versus active people, and note every module you can't confirm is in use. This is where the dollars are.
  2. Midday — performance. Move to Layer 2 (saved searches) and Layer 3 (scripts). Open Customization > Scripting > Saved Searches and sort by owner and last run. Check Script Execution Logs for governance errors. Note the heavy searches on shared dashboards.
  3. Afternoon — books and data. Finish with Layer 1 (financials), Layer 5 (data hygiene), and Layer 6 (integrations). Check period-lock status under Manage Accounting Periods, run duplicate detection, and review integration logs for silent failures.

Write each finding as a one-line problem plus an owner. You'll end the day with a prioritized list. Most of it — inactivating searches, reassigning roles, right-sizing licenses — you can action yourself. A handful will need a developer or a scoped consulting block.

The five highest-ROI fixes we make in optimization engagements

Across the accounts we're called into, five fixes recur — and they're the ones that move a real number. These are patterns we see in the market, not a promise about your specific account.

FixTypical impact we observe
Drop or downgrade shelfware modules and mis-tiered usersRecovers $500–$3,000/month per unused module and 30–50% of user spend
Bound and reindex heavy dashboard saved searchesPage and portlet loads fall from 30–60s to a few seconds
Fix intercompany elimination and period lockingClose comes down toward the 5–7 day mid-market norm
Right-size Administrator and terminated-user accessRemoves the finding auditors flag first; closes a real security gap
Throttle over-polling integrations and add failure alertsFrees governance headroom; stops silent data drift

Notice the shape: the biggest financial wins are the cheapest to make. Turning off a module you don't use is a phone call to your account rep at renewal. It's the reporting and script work — Layers 2 and 3 — that takes real hours, and that's where outside help usually earns its rate.

When to bring in help versus doing it yourself

Honest triage, because not every account needs a consultant.

Do it yourself when the findings are configuration and cleanup: inactivating searches, reassigning roles, merging duplicates, right-sizing licenses at renewal. If you have a capable NetSuite admin, this is their job, and the checklist above is their punch list.

Bring in help when the fix touches SuiteScript, when integrations are failing at production volume, when the close won't come down no matter what you inactivate, or when nobody in-house knows why a customization exists and everyone's afraid to touch it. That's when a scoped block of hours — or an ongoing managed-services arrangement — costs less than the slow bleed of leaving it.

And if you're weighing what "the AI can do this now" claims are worth against a straightforward config cleanup, our take on what's actually useful in NetSuite AI separates the features that pay off today from the demo-ware.

The whole point of a review is to stop paying for what you're not using and to make the account fast and trustworthy again. Whether you run the checklist yourself or have us do it, the return on a day's work here is rarely close.

Want the full audit done for you?

Book a free 30-minute NetSuite health check. We'll walk your account against this checklist and tell you the highest-value fixes first — before you commit to anything.

Book my free health check

Free · no obligation · see how optimization engagements work.

Frequently asked questions

How often should a NetSuite account be reviewed?

Run a full optimization review once or twice a year, and a light check every quarter around the close. Also review any time you cross a threshold — a new subsidiary, a jump past the 100-user or 200,000 monthly transaction-line service-tier caps, a new integration, or a renewal quote. Accounts drift: unused modules, stale scripts, and over-provisioned licenses accumulate quietly between reviews.

Why is my NetSuite slow?

The three most common causes are heavy saved searches with unindexed formula filters running on dashboards and page loads, scripts and workflows firing on every record save, and reports pulling millions of transaction lines without date bounds. Slowness is rarely the platform itself — it's almost always a handful of specific searches, scripts, or portlets doing far more work than they need to on every click.

What does a NetSuite health check cost?

Standalone optimization work is typically scoped as a short fixed block of consulting hours at market rates of $125–$300/hour for functional work and $175–$275/hour for SuiteScript, or folded into a monthly managed-services retainer that runs $2,500–$12,000/month depending on scope. Many firms, including ours, offer an initial 30-minute health check at no cost to surface the highest-value fixes before you commit.

Can I reduce my NetSuite license cost?

Often, yes. The common wins are downgrading full users who only enter time and expense to self-service licenses at $10–$25/month instead of $129–$199, dropping modules you were sold but never configured at $500–$3,000/month each, and negotiating a renewal uplift cap of 3–5% instead of the default 5–8%. Right-sizing the license mix alone can cut user spend 30–50%. Changes usually take effect at renewal, so start 90 days ahead of your contract date.

Changelog — July 2026: initial publication with 2026 pricing and licensing benchmarks. Sources: aggregated 2025–2026 partner quotes and published market data; Gartner ERP research; Oracle NetSuite documentation. Oracle does not publish list prices — figures shown are market ranges.