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.
| Transaction | Type code | Status letter (SuiteQL) | Search filter value | Label | Meaning |
|---|---|---|---|---|---|
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.
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.
Related Tools
NetSuite Work Order Status Reference
Lookup table of NetSuite work order statuses and the transactions and records around them, with what each one means and what to check.
NetSuiteNetSuite Transaction Type Codes Reference
Look up the short type code stored in transaction.type for common NetSuite transactions, with the matching record id.
NetSuiteNetSuite SuiteQL Transaction and TransactionLine Columns Reference
Column-by-column guide to the two SuiteQL tables behind every transaction query, with types, example values and the sign conventions that trip people up.
NetSuiteNetSuite SuiteQL BUILTIN Functions Reference
The ten BUILTIN functions Oracle documents for SuiteQL, with exact parameter order and one-line examples, plus the Oracle SQL functions you will use beside them.
More NetSuite tools
See all- NetSuite Saved Search Formula Generator
- NetSuite CSV Import Template Guide
- NetSuite Role Permission Matrix Worksheet
- NetSuite Inventory Costing Method Reference
- NetSuite Month End Close Checklist
- NetSuite License Cost Estimator
- NetSuite User Access Request Form Template
- NetSuite Custom Record Design Spec Template
- NetSuite SuiteScript Deployment Handover Template
Keep exploring
Free tools
- NetSuite SuiteQL Transaction Query GeneratorPick a transaction type, date range and row limit and get ready-to-run SuiteQL for headers, lines and the REST call that executes it.
- NetSuite Transaction Type Codes ReferenceLook up the short type code stored in transaction.type for common NetSuite transactions, with the matching record id.
- NetSuite Saved Search vs Report vs SuiteQL vs Workbook AssessmentScore your reporting need on joins, volume, delivery, users and integration to see whether a saved search, workbook, SuiteQL or SuiteAnalytics Connect fits best.
ERP fixes and how-tos
- How to write and run SuiteQL queries in NetSuiteRun SuiteQL from Analytics > SuiteQL Query Tool or via N/query in SuiteScript. Syntax basics, joins, pagination and real examples for NetSuite reporting.
- How to use formula fields in a NetSuite saved searchHow to build formula (text), formula (numeric) and formula (date) fields in a NetSuite saved search, with CASE WHEN, DECODE and NVL examples that actually work.
- N/query versus N/search: choosing the right SuiteScript data access moduleCompare NetSuite's N/query (SuiteQL) and N/search modules for performance, governance cost and capability, and decide which to use for joins, aggregation, sublist reads and large exports in SuiteScript 2.1.
Runs with your ERP
- BlackLine and Oracle NetSuite: Account Reconciliation ConnectorHow BlackLine pulls NetSuite balances, GL and bank transactions and saved searches for account reconciliation and matching, with setup steps and pitfalls.
- RF-SMART SummitIT and Oracle NetSuite: Label and Document PrintingSummitIT is RF-SMART's add-on for printing labels and documents directly from NetSuite. Data flows, setup steps, label pitfalls and alternatives.
- Celigo Shopify-NetSuite integration app: orders, inventory and refundsHow the Celigo Shopify-NetSuite integration app syncs orders, inventory, items, customers, fulfillments and refunds, with setup steps and common failure modes.
AI on your ERP
- NetSuite Procurement With AI for Purchase Orders, Receipts and Vendor BillsAI for NetSuite procurement: query purchase orders, item receipts and vendor bills with SuiteQL, flag three-way match breaks, and draft vendor follow-ups.
- AI agents for NetSuite manufacturing operationsAI agents for NetSuite manufacturing: WIP tracking, routing exceptions, and work order status grounded in SuiteQL, with human approval on anything that writes back.
Integrations
- How to add AI agents to Oracle NetSuiteHow to add AI agents to Oracle NetSuite: SuiteQL and REST tool layer, RESTlet writes, role-scoped tokens, human approval, and where a private model fits.
- How to use Claude with Oracle NetSuiteUse Claude with Oracle NetSuite through MCP connectors, the Anthropic API, AWS Bedrock or Vertex, plus the on-prem alternative for controlled data.