Formulas that fail without erroring
What does INVALID_FORMULA_FIELD, "Your formula has an unrecognized field in it", mean in a saved search?
Short answer
It means a field token in your Criteria formula did not resolve, so NetSuite refused the search before running it. The Criteria side validates field names; the Results side does not, and the same typo there returns no error at all. Fix the token in braces, not the logic.
A field token inside a Criteria formula did not resolve, and the Criteria side is the strict one, so NetSuite refused the search before running any of it. Nothing executed. The logic of your CASE or your comparison is not being questioned; one of the names in braces is.
The error, verbatim:
INVALID_FORMULA_FIELD
Your formula has an unrecognized field in it. Please go back and correct the formula and resubmit.
That double space after in it. is in the message as NetSuite emits it, reproduced here so a search for the exact string finds this page.
Minimal reproduction
A criteria formula with a token that cannot resolve:
Criteria: Formula(Numeric) greaterthan 0
Formula: {zzznosuchrootfield}
The call comes back with code INVALID_FORMULA_FIELD and the message above. No rows, no partial result, no execution.
Timing is a useful tell. That rejection returned in roughly a quarter of a second, against a second or two for the equivalent searches that actually ran. It is a parse-time refusal, and it costs nothing.
This is the good error message
The twist worth knowing, and the reason this page exists at all: put the same typo in a Results formula and there is no error whatsoever. The search runs, returns every row, and the column is populated with the literal string ERROR: Field Not Found as its value. Same expression, same search, two opposite outcomes decided only by which box you typed it into. That failure mode has its own page, and it is the one that reaches production.
So INVALID_FORMULA_FIELD is not the enemy. It is the only field-name validation the saved search engine gives you.
The fix, and a use for it
Correct the token. Whatever is inside the braces is either misspelled or is a join path that does not exist in this context. The message does not name the offending token, so on a long formula the fastest route is to cut the expression down until it validates, then add the pieces back.
Once it validates, the same expression is safe to move to Results. That is worth doing deliberately: paste a Results formula into a Criteria formula first, purely to see whether NetSuite accepts the field names, then move it back. The check is cheap and it is the only one available. Note that Criteria offers three formula types, Date, Numeric and Text, against seven on Results, so a Currency, Percent, Date/Time or HTML formula has to be checked as Formula(Text).
Validation is the only thing that differs
On valid input, the two forms of criteria formula agree with each other exactly. The run compared a text-criteria form:
Criteria: Formula(Text) is 'large'
Formula: CASE WHEN {quantity} > 1000 THEN 'large'
WHEN {quantity} > 0 THEN 'small'
ELSE 'other' END
against a numeric-criteria form asking the same question:
Criteria: Formula(Numeric) greaterthan 1000
Formula: {quantity}
Both selected exactly the same rows, and the count matched the large bucket from the same expression run as a grouped Results column. So on this input there is no behavioural difference in what gets selected between the text form and the numeric form. The difference between Criteria and Results is validation, and only validation.
That is a statement about valid input, not a general endorsement of the text form. On other operators a text formula behaves as a string comparison rather than a numeric one, which is a separate trap with its own page.
How to tell if you are affected
If you are seeing this code at all, you are in the fortunate case: the engine caught your typo. The audit worth running is the other way round. Take every Results formula in your saved searches, drop the same expression into a Criteria formula on a copy of the search, and see which ones come back with INVALID_FORMULA_FIELD. Those are the searches that have been quietly returning ERROR: Field Not Found in a column instead of a value.
Scope: one sandbox account on NetSuite 2026.1, Administrator role. The searches behind this page were built and run ad hoc through the SuiteScript search engine (nlapiCreateSearch / runSearch) without saving anything, so the error comes from the search engine rather than from the saved search form's own validation.
How this was established
3 probe runs against one NetSuite 2026.1 sandbox account on the Administrator role, through the saved search UI and the SuiteScript search engine. Where this page draws a boundary around a finding, that boundary is the edge of what was actually run.
Related
- Why does my saved search formula column say "ERROR: Field Not Found" instead of a value?
Because the search succeeded. A field token in a Results formula did not resolve, and NetSuite writes the literal 22-character string "ERROR: Field Not Found" into the column as its value on every row. It is data, not an exception, it appears in Formula(Numeric) columns, it survives SUM, and NVL does not protect it.
- Why does {entity.internalid} not work in a NetSuite saved search formula?
Because the token is {entity.id}. In a formula, internalid is not a resolvable name, and the failure is silent: the column fills with the literal string ERROR: Field Not Found on every row and the search reports success. One join level works with .id; two levels did not resolve in this run.
- Can I use a formula as an Available Filter on a saved search?
You can select one and you can never make it work. The Available Filters sublist has four columns, Filter, Show in Filter Region, Show as Multi-Select and Label, and none of them is a formula box. Criteria has a column literally labelled Formula; Available Filters does not. The search saves anyway, with no error, carrying a filter that has no expression in it.