NetSuite Resources
Reference articles for NetSuite developers and administrators: SuiteScript patterns, performance optimization, workflow design, and more.
How to Use Advanced Record Customization (ARC) in NetSuite
Advanced Record Customization (ARC) is a new area in NetSuite 2026.2 under Customization where you can manage AI descriptions for standard and custom record types. Here is how to access it and what you can do.
How to Use the Match Suggestions Tab in NetSuite Bank Reconciliation
NetSuite 2026.2 replaced the Review subtab on the Match Bank Data page with a new Match Suggestions subtab. Here is how to navigate to it, what the five suggested actions mean, and what else changed on the page.
How to Review Your NetSuite Bill Capture Preferences After the 2026.2 Update
NetSuite 2026.2 changed how blank Bill Capture preference fields behave. A blank Save Tax As now maps to No Tax, and a blank Save Shipping Cost As maps to No Shipping Cost. Here is how to check and update your settings.
How to Set Currency Context on NetSuite Currency Custom Fields
NetSuite 2026.2 adds a Currency Context option to currency custom fields. Here is how to find the setting and what it controls for custom fields that store monetary amounts.
How to Migrate NetSuite RESTlet Integrations from NLAuth to Token-Based Authentication
NLAuth stops working in NetSuite 2027.1. Here are the steps to audit your RESTlet integrations and migrate them to Token-Based Authentication before the deadline.
How to Use a Passkey as Your Second Factor in NetSuite
Starting in NetSuite 2026.2, a FIDO2-compliant passkey can replace the authenticator app prompt for two-factor authentication. Here is what qualifies and how it works at login.
NetSuite Automated Payment Adjustments: What Gets Handled and When
NetSuite 2026.2 automates payment adjustments for bank fees, convenience fees, and underpayments from customer payment and customer deposit records. Here is what is covered and how it works.
How to Use Payment Runs in NetSuite to Process Multiple Vendor Payments
Payment Runs is a new NetSuite 2026.2 feature that groups vendor bills, credits, journal entries, and expense reports into a single reviewed and approved payment workflow.
The 5 New Project Health Indicators in NetSuite 2026.2
NetSuite 2026.2 adds five project health indicators: Planned vs. Actual Time Overrun, Overdue Tasks, Project Resource Coverage for Remaining Work, Project Margin Indicator, and Unbilled Approved Charges. Here is what each one tracks.
How to Use Sequential Batch Processing in NetSuite REST Web Services
NetSuite 2026.2 adds sequential processing for REST batch operations so you can run multiple API requests in a guaranteed order. Here is when to use it and what it means for dependent operations.
How to Start Order Fulfillment from the NetSuite Sales Order List
NetSuite 2026.2 lets you initiate item fulfillment directly from the sales order list without opening each individual order. Here is how to use it.
How to Use Bound Parameters in NetSuite REST SuiteQL
Bound parameters let you pass dynamic values to SuiteQL queries separately from the query string, preventing injection vulnerabilities. Here is the format and how to convert an existing query to use them.
How to Fix NetSuite SuiteQL Queries Affected by the 2026.2 Default Sort Change
NetSuite 2026.2 changed the default sort for Transaction table SuiteQL queries from tranDisplayName to tranDate. Here is how to find and fix queries that relied on the old default order.
How to Enable Tax on Term Discounts in NetSuite SuiteTax
NetSuite 2026.2 adds support for tax adjustments on term discounts in SuiteTax. Two settings are required: one in Accounting Preferences and one at the nexus level. Here are the steps.
How to Enable Passkeys in NetSuite for Faster, More Secure Logins
NetSuite supports passkeys — a passwordless authentication method using Touch ID, Face ID, or Windows Hello. Here is how to set it up and why it is worth doing.
NetSuite Map/Reduce: Why Each map() Execution Must Be Independent
The power of Map/Reduce comes from parallel execution. If your map() function shares state with other invocations — through global variables, running totals, or order assumptions — that parallelism breaks silently. Learn why, and how to design map() correctly.
Why search.runPaged() Should Replace search.run() for Large Datasets
search.run().getRange() has a 4,000-record ceiling in SuiteScript. Learn when to use search.runPaged() and how to implement it correctly to avoid silently missing records.
record.submitFields() vs record.load() in SuiteScript: Choosing the Right Update Method
Using record.load() to update a single body field is one of the most common SuiteScript performance mistakes. Learn when to use record.submitFields() — and the critical User Event caveat you need to know before switching.
NetSuite Map/Reduce: Why getInputData() Should Do Almost Nothing
getInputData() is the most misunderstood stage in SuiteScript Map/Reduce. Its job is to define the workload — not execute it. Loading records or running searches inside getInputData() defeats the purpose of the framework entirely.
Why Your NetSuite Saved Search Got Slower Over Time (And What to Do About It)
Saved Searches rarely become slow all at once. They accumulate formula columns, joined fields, and summary calculations until what started as a simple query becomes a complex reporting engine. Learn how to diagnose the cause and when to move to SuiteAnalytics Workbook.
NetSuite Workflow Entry Conditions: The Performance Setting Most Admins Overlook
A workflow without an Entry Condition evaluates on every record save, even when nothing relevant changed. Learn how Entry Conditions reduce unnecessary evaluations and improve NetSuite performance on high-volume accounts.
Why You Should Never record.load() Inside a Loop in SuiteScript
Loading records inside a loop is one of the most common SuiteScript performance mistakes. Learn how to use saved search columns instead, and when record.load() in a loop is actually unavoidable.
record.load() vs search.lookupFields() in SuiteScript: When to Use Each
If you only need a few field values from a known record, search.lookupFields() is significantly faster than record.load(). Learn the difference, when each applies, and what search.lookupFields() cannot do.
NetSuite Scheduled Script vs Map/Reduce Script: Choosing the Right Script Type
Using a Scheduled Script for work that should be handled by Map/Reduce is one of the most common causes of governance limit errors and slow batch processing. Learn the difference and when each type applies.
NetSuite Saved Search vs SuiteAnalytics Workbook: Which One to Use
Saved Searches and SuiteAnalytics Workbook may look similar, but they are built for different jobs. Using the wrong one leads to slow reports and frustrated users. Learn the distinction and how to choose.
NetSuite beforeSubmit vs afterSubmit: Choosing the Right User Event Trigger
beforeSubmit and afterSubmit serve different purposes in NetSuite User Event scripts. Using the wrong one causes silent failures, data errors, and missed business logic. Learn when each fires and how to choose correctly.
NetSuite Is Slow: Five Things to Check Before Assuming It's a Platform Problem
Most NetSuite performance complaints are not caused by NetSuite itself. They are caused by something in the account — scripts, workflows, saved searches, or accumulated metadata. Here is where to look first.
NetSuite User Event Script vs Client Script: When to Use Each
User Event scripts run on the server. Client scripts run in the browser. Choosing the wrong one means your business logic silently fails whenever records are saved via API, CSV import, or workflow. Learn the distinction and how to apply it.
Why Your NetSuite Workflow Is Firing Twice on the Same Record
A NetSuite workflow that fires twice on every save is almost always a trigger configuration issue. Learn the two most common causes and how to fix them.