NetSuiteFree referencePDF, Excel, Word exportNetSuiteAll NetSuite tools

NetSuite Transaction Status Codes for SuiteQL and Saved Search

NetSuite stores transaction status as a single letter per transaction type, while saved searches and N/search filters use the combined form such as SalesOrd:B. This table lists both, with the label, for the transaction types integration and reporting work touches most.

Download:
TransactionType codeStatus letter (SuiteQL)Search filter valueLabelMeaning
Sales Order
SalesOrd
A
SalesOrd:A
Pending Approval
Entered, waiting for approval before fulfillment
Sales Order
SalesOrd
B
SalesOrd:B
Pending Fulfillment
Approved, nothing shipped yet
Sales Order
SalesOrd
C
SalesOrd:C
Cancelled
Cancelled before fulfillment
Sales Order
SalesOrd
D
SalesOrd:D
Partially Fulfilled
Some lines or quantities shipped, none billed
Sales Order
SalesOrd
E
SalesOrd:E
Pending Billing/Partially Fulfilled
Part shipped and the shipped part is waiting to be billed
Sales Order
SalesOrd
F
SalesOrd:F
Pending Billing
Fully shipped, not yet billed
Sales Order
SalesOrd
G
SalesOrd:G
Billed
Fully shipped and billed
Sales Order
SalesOrd
H
SalesOrd:H
Closed
Remaining lines closed manually
Invoice
CustInvc
A
CustInvc:A
Open
Amount remaining to be paid
Invoice
CustInvc
B
CustInvc:B
Paid In Full
Fully paid or credited
Purchase Order
PurchOrd
A
PurchOrd:A
Pending Supervisor Approval
Waiting for approval
Purchase Order
PurchOrd
B
PurchOrd:B
Pending Receipt
Approved, nothing received
Purchase Order
PurchOrd
C
PurchOrd:C
Rejected by Supervisor
Approval rejected
Purchase Order
PurchOrd
D
PurchOrd:D
Partially Received
Some quantity received, none billed
Purchase Order
PurchOrd
E
PurchOrd:E
Pending Billing/Partially Received
Part received and the received part waiting for a bill
Purchase Order
PurchOrd
F
PurchOrd:F
Pending Bill
Fully received, not yet billed
Purchase Order
PurchOrd
G
PurchOrd:G
Fully Billed
Received and billed
Purchase Order
PurchOrd
H
PurchOrd:H
Closed
Remaining lines closed
Item Fulfillment
ItemShip
A
ItemShip:A
Picked
Picked, not packed (pick, pack and ship enabled)
Item Fulfillment
ItemShip
B
ItemShip:B
Packed
Packed, not shipped
Item Fulfillment
ItemShip
C
ItemShip:C
Shipped
Shipped; posts COGS
Vendor Bill
VendBill
A
VendBill:A
Open
Amount remaining to be paid
Vendor Bill
VendBill
B
VendBill:B
Paid In Full
Fully paid or credited
Vendor Bill
VendBill
C
VendBill:C
Cancelled
Cancelled
Vendor Bill
VendBill
D
VendBill:D
Pending Approval
Waiting for bill approval
Vendor Bill
VendBill
E
VendBill:E
Rejected
Approval rejected
Return Authorization
RtnAuth
A
RtnAuth:A
Pending Approval
RMA waiting for approval
Return Authorization
RtnAuth
B
RtnAuth:B
Pending Receipt
Approved, goods not received
Return Authorization
RtnAuth
C
RtnAuth:C
Cancelled
Cancelled
Return Authorization
RtnAuth
D
RtnAuth:D
Partially Received
Some goods received
Return Authorization
RtnAuth
E
RtnAuth:E
Pending Refund/Partially Received
Part received and waiting for credit or refund
Return Authorization
RtnAuth
F
RtnAuth:F
Pending Refund
Received, credit or refund not issued
Return Authorization
RtnAuth
G
RtnAuth:G
Refunded
Credit memo or refund issued
Return Authorization
RtnAuth
H
RtnAuth:H
Closed
Closed
Transfer Order
TrnfrOrd
A
TrnfrOrd:A
Pending Approval
Waiting for approval
Transfer Order
TrnfrOrd
B
TrnfrOrd:B
Pending Fulfillment
Approved, nothing shipped from source location
Transfer Order
TrnfrOrd
C
TrnfrOrd:C
Rejected
Approval rejected
Transfer Order
TrnfrOrd
D
TrnfrOrd:D
Partially Fulfilled
Some quantity shipped
Transfer Order
TrnfrOrd
E
TrnfrOrd:E
Pending Receipt/Partially Fulfilled
Part shipped and in transit
Transfer Order
TrnfrOrd
F
TrnfrOrd:F
Pending Receipt
Fully shipped, not received at destination
Transfer Order
TrnfrOrd
G
TrnfrOrd:G
Received
Received at destination
Transfer Order
TrnfrOrd
H
TrnfrOrd:H
Closed
Closed
Estimate
Estimate
A
Estimate:A
Open
Quote open
Estimate
Estimate
B
Estimate:B
Processed
Converted to a sales order or invoice
Estimate
Estimate
C
Estimate:C
Closed
Closed without conversion
Estimate
Estimate
V
Estimate:V
Voided
Voided
Estimate
Estimate
X
Estimate:X
Expired
Past its expiration date
Customer Payment
CustPymt
B
CustPymt:B
Not Deposited
In undeposited funds
Customer Payment
CustPymt
C
CustPymt:C
Deposited
Included in a deposit
Cash Sale
CashSale
B
CashSale:B
Not Deposited
In undeposited funds
Cash Sale
CashSale
C
CashSale:C
Deposited
Included in a deposit
Journal
Journal
A
Journal:A
Pending Approval
Journal approval routing on, not yet approved
Journal
Journal
B
Journal:B
Approved for Posting
Approved and posted

Work order statuses are covered in the separate NetSuite work order status reference. Labels can be renamed in some accounts and extra statuses appear with approval routing or features such as payment approval; confirm against the Status filter list in a saved search for your account. In SuiteQL, always filter status together with type.

Statuses not matching your report?

Send us the filter and the counts you expect and we will check them against your account's status list.

Optional. The tool and every export work without this. No spam.

Was this tool useful?

How to use it

Filter by transaction or type code, then copy the form you need. In SuiteQL write t.type = 'SalesOrd' AND t.status = 'B', or use the combined value with BUILTIN.CF: BUILTIN.CF(t.status) = 'SalesOrd:B'. In SuiteScript N/search, use the search filter value: ['status', 'anyof', ['SalesOrd:B', 'SalesOrd:D']]. To show labels in SuiteQL output, select BUILTIN.DF(t.status).

  • SuiteQL raw column: one letter
  • N/search and saved search filters: TypeCode:Letter
  • Labels in SuiteQL: BUILTIN.DF(status)

Why the letter alone is not enough

The same letter means different things on different types. B is Pending Fulfillment on a sales order, Paid In Full on an invoice, Pending Receipt on a purchase order and Packed on an item fulfillment. A query that filters status = 'B' without a type filter mixes all of them. Oracle's BUILTIN.CF documentation says to use CF for filters on composite fields like status, which returns the type and the letter together and removes that risk.

Worked example: backlog by status

SELECT BUILTIN.DF(t.status) AS status_label, COUNT(*) AS orders, SUM(t.foreigntotal) AS value FROM transaction t WHERE t.type = 'SalesOrd' AND t.status IN ('B', 'D', 'E') GROUP BY BUILTIN.DF(t.status). That returns Pending Fulfillment, Partially Fulfilled and Pending Billing/Partially Fulfilled orders, which together form the open shipping backlog. Add F to include orders shipped but not billed, which is the unbilled revenue queue rather than the shipping queue.

How to check the result in the system

Create a transaction saved search, add a Status filter and open its value list: each entry shows the label, and the internal value used by scripts is the TypeCode:Letter form. Compare a SuiteQL count for one letter with a saved search count for the same status and date range; they should match when you filter mainline the same way.

Frequently Asked Questions

What is the status for CustInvc in NetSuite SuiteQL?

Invoices use A for Open and B for Paid In Full. In SuiteQL filter t.type = 'CustInvc' AND t.status = 'A' for open invoices, or BUILTIN.CF(t.status) = 'CustInvc:A'. BUILTIN.DF(t.status) returns the label.

What does SalesOrd:B mean?

It is the search filter value for a sales order in Pending Fulfillment status: approved, with nothing fulfilled yet. Use it in saved search criteria and N/search filters. In SuiteQL the same status is the letter B on a row where type = 'SalesOrd'.

What is the difference between Pending Billing and Pending Billing/Partially Fulfilled?

Pending Billing (F) means everything has shipped and some or all of it is not billed. Pending Billing/Partially Fulfilled (E) means only part has shipped and that shipped part is waiting to be billed, so the order is still open for fulfillment too.

Where are work order statuses?

Work orders have their own status set covering planned, released, in process, built and closed states. They are in the separate NetSuite work order status reference, linked below, to keep this table focused on sales, purchasing and finance transactions.

If your team wants to ask which orders are stuck in which status in plain English, we can set up a private AI layer over NetSuite that answers from live data and shows the query.

ArchRay builder
Design the on-prem AI stack for NetSuite: model, GPUs, RAG pipeline, guardrails
See memory, speed and cost as you swap parts, then export the diagram. Free, in your browser.
Open the builder

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

AI on your ERP

Integrations

Comparisons

Software