Suite Utils
Back to Blog
SuiteScriptJul 26, 2026 • 5 min read

Create NetSuite Saved Searches for Account Balances

When you first log into NetSuite, the reporting suite can feel overwhelming. You might just want a simple list of accounts or a specific subset of transactions, but instead of a clean list, you find y…

Sarah Jenkins, CPASarah Jenkins, CPAPrincipal Finance Automation Specialist
Create NetSuite Saved Searches for Account Balances
Photo by path digital on Unsplash

When you first log into NetSuite, the reporting suite can feel overwhelming. You might just want a simple list of accounts or a specific subset of transactions, but instead of a clean list, you find yourself staring at complex layouts and nested filters.

The most common point of frustration for new users is trying to filter data within a standard Report. While Reports are excellent for formatted outputs (like an Income Statement or Balance Sheet), they are often less flexible than Saved Searches. If your goal is to isolate specific accounts or filter data based on criteria like "Show me only transactions for Account X," a Saved Search is almost always the superior starting point.

Why Start with a Saved Search?

In NetSuite, there is a fundamental distinction between how Reports and Saved Searches handle data. A Report is designed to aggregate and present data, often applying complex accounting logic (like grouping by account or calculating totals). A Saved Search is a query tool. It acts as the "filter" for your data.

If you find yourself struggling to filter a Report, it is often because the report's underlying logic is too rigid. By creating a Saved Search first, you can:

  1. Filter precisely: Isolate specific Account IDs, Subsidiaries, or Classes.
  2. Control the Output: Choose exactly which columns (fields) appear.
  3. Feed the Report: Once you have a perfect Saved Search, you can often use that logic as the foundation for more complex reporting.

Step-by-Step: Creating a Filtered Account Search

To address the common request of "filtering some accounts," follow this precise workflow to create a Saved Search. This is the most efficient way to isolate data without getting bogged down in complex report configurations.

1. Initiate the Search

Navigate to Reports > Saved Searches > All Saved Searches and click New. Note: While some users go directly to the Reports menu, you want to build the data set before you worry about the layout. You can also access this via Lists > Search > Saved Searches.

2. Select the Record Type

For most financial data, you will select Transaction. If you only need a list of the accounts themselves (and not the transactions associated with them), you would select Account.

3. Configure the Criteria Tab

This is where you define "what" data is included. This is the equivalent of a filter in Excel or any other database.

FieldConditionValueDescription
Accountis any of[Select your accounts]Limits the search to specific GL accounts.
Posting Periodis any of[Current Month]Ensures you aren't seeing old data.
Amountis any of[Greater than 0]Filters out zero-dollar entries.

4. Configure the Results Tab

This determines "how" the data is displayed. This is where you choose your columns.

  • Criteria: The "Filter" (e.g., Only show Account A).
  • Results: The "Columns" (e.g., Show Date, Memo, and Amount).

5. The Preview Loop

One of the most important steps is using the Preview button. Unlike many other tools, NetSuite allows you to see the results in real-time as you add or remove filters.

Pro Tip: If your search returns no results, check the "Criteria" tab again. It is common to have a filter that is too restrictive (e.g., searching for an account in a subsidiary you do not have access to).


detailed Filtering: Using SuiteQL for Complex Logic

While the UI-based Saved Search is perfect for most users, sometimes you need to filter data based on complex logic that the standard UI doesn't allow, such as filtering by a specific string within a multi-select field or performing complex joins.

For these scenarios, SuiteQL is the standard. SuiteQL allows you to query NetSuite data using SQL syntax, which provides much more granular control over filtering.

Example: Filtering Transactions by Account and Amount

If you were to write a query to pull specific transaction data for a report, it would look like this:

SELECT 
    CASE_ID, 
    TRANSACTION_NAME, 
    AMOUNT, 
    DATE, 
    ACCOUNT_NAME
FROM 
    Transaction T JOIN Account A ON T.Account = A.ID
WHERE 
    A.TYPE = 'Income' 
    AND T.AMOUNT > 1000
ORDER BY_DATE DESC

Automating Data Retrieval with SuiteScript 2.1

If you are building a custom tool or an automated report export, you might use the N/search module. This allows you to programmatically filter records and handle the results.

/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 */
define(['N/search', 'N/log'], (search, log) => {
    /**
     * Example of programmatically fetching transactions 
     * for specific accounts.
     */
    const getFilteredTransactions = () => {
        const transactionSearch = search.create({
            type: search.Type.TRANSACTION,
            filters: [
                ['account', 'anyof', '12345,67890'], // Replace with actual Account IDs
                'amount:>', 1000
            ],
            columns: [
                'trandate',
                'amount',
                'memo'
            ]
        });

        const results = transactionSearch.run();

        // Iterate through the search results
        results.each((result) => {
            const date = result.getValue({ name: 'trandate' });
            const amount = result.getValue({ name: 'amount' });
            
            log.audit({ 
                title: 'Transaction Found', 
                details: `Date: ${date} | Amount: ${amount}` 
            });
            
            return true; // Continue to the next result
        });
    };

    return {
        // Note: This is a helper function example. 
        // In a real script, you would call this within an entry point.
    };
});

Best Practices for Report Accuracy

To ensure your reports are accurate and provide the correct financial data, keep these three rules in mind:

  1. Use Internal IDs: When filtering via SuiteScript or SuiteQL, always use the internal ID of the record (e.g., vendorbill, purchaseorder).
  2. Distinguish Between Reports and Searches: If you need to see a "Balance Sheet," use the Report tool. If you need to see a list of "All Invoices over $5,000 for Account X," use a Saved Search.
  3. Filter at the Source: It is always more efficient to filter data in a Saved Search than it is to pull a massive report and try to filter the results manually. By filtering at the search level, you reduce the amount of data NetSuite has to process, which improves performance.

A Saved Search is generally the more useful tool for isolating data: precise Criteria and Results tabs without the frustration of complex report formatting. Whether you're filtering by Account ID or transaction amount, build a clean search first so your data is right before it reaches a report.

| Feature | Saved Search | Standard Report | |:--- |:--- | | | Primary Purpose | Filtering and extracting data. | Formatting and summarizing data. | | User Experience | Row-based, easy to filter. | Column/Grouped layout. | | Flexibility | High (can use complex filters). | Moderate (limited by report logic). | | Best For | Lists, Dashboards, Custom Workflows. | Financial Statements (P&L, Balance Sheet). | | Ease of Use | High (use the "Preview" button). | Moderate (requires understanding layout). |

For more help simplifying your NetSuite workflows, check out the tools at suiteutils.com.

About the author

Put these ideas to work.

Suite Utils builds small NetSuite tools that fix the specific thing breaking your day. Each one runs as a native SuiteScript SuiteApp inside your account. No sales call, no onboarding.

Browse the Tools

Enjoyed this one?

Get NetSuite tips like this in your inbox. No spam. Practical guides only.

Keep reading