Refresh a NetSuite statistical account from a saved search

Point a statistical schedule at a grouped employee saved search, run it, and NetSuite posts headcount by department to a statistical account as a journal, with no hand-typed counts.

The quick answer

Use a statistical schedule. Build a summary saved search whose first result column counts or sums the driver, such as Internal ID with Summary Type Count, and whose other columns group by Subsidiary and the classification you allocate by, such as Department. Then go to Transactions → Financial → Create Statistical Schedule, choose the statistical account and the saved search, pick a Frequency, and save. NetSuite treats each grouped result as the target balance for that subsidiary and department, compares it with the account's current balance, and posts only the difference as a statistical journal. It runs on the schedule's frequency, or right away when you click Create Journal Entry.

Dynamic allocation schedules weight their splits by a statistical account balance, and that balance is only as current as the last person who updated it. Entering a statistical journal by hand works once. After that someone has to recount every month, and the allocation drifts when they forget. A statistical schedule lets a saved search do the counting.

This walkthrough fills statistical account 9920 Staff Count from an employee search called Staff by Department: 1 in Administration, 4 in Engineering, 2 in Operations and 5 in Sales, 12 in all. If you haven't set up the statistical account itself yet, start with recording headcount in a statistical account by hand. The screenshots use sample data and fictional person and company names.

Before you start

You need the Statistical Accounts feature, which depends on Multiple Units of Measure, and a statistical account with a unit type. Here that's 9920 Staff Count, counted in the Staff unit type with Employee as its unit. To classify the balance by department, the Departments feature has to be on. A dynamic allocation that reads the balance later also needs Expense Allocation, Dynamic Allocation and Accounting Periods.

The walkthrough uses an Administrator role in a OneWorld account with one subsidiary, Larkspur US. A custom role typically needs Make Journal Entry to reach the page and Set Up Accounting to create the schedule, plus access to the saved search and the employee records it reads. Role and subsidiary restrictions change what the search returns, so a search that looks right to you can return different rows for someone else. The subsidiaries in the results should be ones the statistical account is available to.

01 · See what the saved search returns

Go to Lists → Search → Saved Searches and click View next to Staff by Department. The results show one row per subsidiary and department with an Employee Count, and a Total of 12.

Administration 1, Engineering 4, Operations 2, Sales 5. These are the balances 9920 Staff Count should hold.

Check this list before you build anything on it. Each row becomes the target balance for that subsidiary and department, and the schedule posts whatever it takes to make the account match. If your criteria let inactive employees or people with no department through, they count too, and a blank department can turn into an unclassified line. Criteria such as Inactive is false and Department is not none keep those rows out. Once the schedule is in use, a search that returns no rows sets the balance to zero, so test any criteria change before the next run.

02 · Check the search layout

Click Edit this Search and open the Results subtab. A statistical schedule only accepts a summary search with this shape:

  • The first column is the amount the schedule posts. It has to use Summary Type Count or Sum. Here it's Internal ID with Summary Type Count and Summary Label Employee Count.
  • At least one other column uses Summary Type Group. In OneWorld, Subsidiary has to be one of them. Group by the classifications your allocation or reporting needs. Here that's Department.

Don't group by more than one kind of entity, such as Employee and Customer, in the same search.

Internal ID is counted first. Subsidiary and Department are grouped.

Click Cancel to leave the search unchanged.

03 · Open the Statistical Schedules list

Go to Transactions → Financial → Create Statistical Schedule → List. In this account the submenu's other item, Status, opens the execution status page you'll use in step 05. If your role shows no submenu, Create Statistical Schedule opens the new schedule form directly, and the form's List link gets you to the list.

Transactions → Financial → Create Statistical Schedule → List.

The list has no schedules yet. Click New.

No schedules yet.

04 · Define the schedule and save it

In Name, enter Monthly Staff Count. In Statistical Account, choose 9920 Staff Count. NetSuite fills Account Subsidiaries with Larkspur US, Unit Type with Staff and Unit of Measure with Employee from the account, and the schedule posts in that unit.

In Saved Search, choose Staff by Department. The Validate button next to it checks that the search can drive a schedule and names the segments it found, such as Subsidiary and Department. It wasn't clicked in this walkthrough. In your own account, click it before you save; it's the quickest way to catch a search with the wrong layout.

Under Scheduling, leave Frequency at End of Period and enter Start Date 10/31/2026, so the schedule runs automatically at each period end from October, in the schedule's time zone. Leave Time Zone as it is.

The account fills Account Subsidiaries, Unit Type and Unit of Measure. You pick the search and the frequency.

Click Save. The Statistical Schedules list now shows Monthly Staff Count on Staff Count, with Saved Search Staff by Department and Frequency End of Period. Saving doesn't post anything. The account still has no balance.

Monthly Staff Count is saved, set to End of Period.

05 · Run the schedule now

End of Period won't run until October closes, and the account needs a balance now. Click View on Monthly Staff Count. The Execution Log at the bottom says there are no records to show, because the schedule hasn't run.

Click Create Journal Entry. This runs the schedule immediately, whatever its next scheduled date.

Create Journal Entry runs the schedule now. The empty Execution Log shows it hasn't run before.

The run is asynchronous. NetSuite opens Statistical Schedule Execution Status, which here lists Monthly Staff Count at 0.0% with Status Pending.

Queued: 0.0%, Pending.

Click Refresh. The run now shows 100.0% and Status Complete.

After Refresh: 100.0%, Complete.

06 · Check the journal it created

Click Complete. The Statistical Schedule Execution Detail has one line per subsidiary and department. Each line shows the account's Previous Balance, the search's Current Balance, and the Difference the schedule posted, which is Current Balance minus Previous Balance. The account was empty, so Previous Balance is 0 everywhere and the Difference is the full count: 1, 4, 2 and 5. Every line names journal JE527.

Previous Balance 0, Current Balance from the search, Difference posted to JE527.

That's the part that makes the schedule worth having. It posts the change, not the total. Next month, if one person moves from Sales to Engineering and the search picks that up, the run posts −1 to Sales and +1 to Engineering and leaves the other departments alone. If nothing changed, it creates no journal at all.

Click JE527. The statistical journal is marked Created from Statistical Schedule, and the Classification section links back to Monthly Staff Count. It's in the Staff unit type for Larkspur US, dated 09/30/2026 in Sep 2026. That's the day of the manual run, a month before the schedule's 10/31/2026 start date: a manual run doesn't wait for the scheduled date, and its journal takes the run's date and an open period. Check the date and period on a generated journal before an allocation reads it.

JE527 came from the schedule, and the link at the right goes back to it.

The Lines subtab holds four 9920 Staff Count lines: 1 Administration, 4 Engineering, 2 Operations and 5 Sales, 12.00 emp in total. Those match the saved search from step 01.

The same counts the search returned, now a balance on 9920 Staff Count.

A dynamic allocation schedule that uses 9920 Staff Count as its weight source reads these balances when it generates its journal. If the allocation's destinations are these four departments in Larkspur US and the account holds no other balances, the split is 1/12, 4/12, 2/12 and 5/12. Make sure the statistical schedule has finished before the allocation runs each period, or the allocation weights by last period's headcount.

Common questions

What is a statistical schedule in NetSuite?

It's a record that keeps a statistical account in step with a saved search. Each run treats the grouped search results as target balances, compares them with the account's balances, and posts the difference as a statistical journal. Monthly Staff Count reads Staff by Department and posts to 9920 Staff Count, so nobody types the counts.

What saved search layout does a statistical schedule need?

A summary search. The first result column uses Summary Type Count or Sum and supplies the amount, like Internal ID counted as Employee Count. At least one other column uses Summary Type Group, and in OneWorld Subsidiary has to be grouped. Group by one kind of entity only, not Employee and Customer together.

Why does my saved search fail validation?

Usually the layout: the first column isn't Count or Sum, nothing is grouped, or Subsidiary isn't grouped in a OneWorld account. Grouping by more than one entity type fails it too, and the rules can vary with the search type and the features turned on. Fix the Results subtab and click Validate again. This walkthrough didn't click Validate.

Does the schedule post the full balance or only the change?

Only the change: Current Balance minus Previous Balance for each subsidiary and classification. The first run into an empty account posts the full counts, which is why JE527 holds 1, 4, 2 and 5 for 12.00 emp. A later run posts just the departments that moved.

Why did my statistical schedule run not create a journal entry?

Most often nothing changed. If the search returns the balances the account already holds, every Difference is zero and there's nothing to post. Make sure the run shows Complete rather than Pending, then open its execution detail. If you expected a change, check the search criteria and whether the employee records were actually updated.

What does the End of Period frequency do?

It runs the schedule automatically at the end of each accounting period, starting from the Start Date in the schedule's time zone. Monthly and Weekly run on fixed intervals instead, and Never turns automatic runs off. Whatever the frequency, Create Journal Entry runs it right away.

Where do I see the journals a schedule created?

Open the schedule. Its Execution Log lists each run and how many journal entries it created. The run's execution detail lists every line with its Previous Balance, Current Balance, Difference and journal, and the journal itself shows Created from Statistical Schedule with a link back.

What happens if the search stops returning a department?

That department's current balance counts as zero, so the next run posts whatever brings its balance down to zero. A search that returns no rows at all clears the account. Test criteria changes before the next run, and check the execution detail after one that looks wrong.

How do I keep headcount current for a dynamic allocation?

Point the allocation's weight source at the statistical account and make sure the statistical schedule finishes before the allocation runs. The allocation reads the balance when it generates its journal, so a late schedule means last period's weights. The allocation's subsidiary and departments also have to match what the statistical account carries. This walkthrough stops before building the allocation.