When writing SuiteScript searches or filtering transactions by status, you need the internal status code β not the display name. NetSuite stores transaction statuses as a two-part code: {RecordTypeCode}:{StatusLetter} (e.g., SalesOrd:B for “Sales Order: Pending Fulfillment”).
This page is a complete reference of every NetSuite transaction status name and its corresponding internal code, validated against the official Oracle NetSuite Help Center documentation.
How Transaction Status Codes Work
In SuiteScript 2.x, when you retrieve the transtatus field from a transaction record using record.getValue({fieldId: 'transtatus'}) or use it in a search filter, NetSuite returns or expects the internal code format rather than the human-readable label.
The format is always: RecordTypeAbbreviation:StatusLetter. For example:
// SuiteScript 2.1 example: filter Sales Orders that are Pending Fulfillment
var soSearch = search.create({
type: search.Type.SALES_ORDER,
filters: [
['transtatus', 'anyof', 'SalesOrd:B'] // Pending Fulfillment
],
columns: ['tranid', 'entity', 'amount', 'transtatus']
});
soSearch.run().each(function(result) {
var status = result.getValue('transtatus'); // Returns 'SalesOrd:B'
var statusText = result.getText('transtatus'); // Returns 'Pending Fulfillment'
log.debug('Order', result.getValue('tranid') + ' - ' + statusText);
return true;
});
Complete Transaction Status Code Reference
The table below lists every transaction type, its human-readable status name, and the corresponding internal status code used in SuiteScript, SuiteQL, and saved searches.
Bill (Vendor Bill)
| Status Name | Internal Code |
|---|---|
| Open | VendBill:A |
| Paid In Full | VendBill:B |
| Pending Approval | VendBill:D |
Bill Payment
| Status Name | Internal Code |
|---|---|
| Voided | VendPymt:V |
| Online Bill Pay Pending Accounting Approval | VendPymt:Z |
Cash Sale
| Status Name | Internal Code |
|---|---|
| Unapproved Payment | CashSale:A |
| Not Deposited | CashSale:B |
| Deposited | CashSale:C |
Check
| Status Name | Internal Code |
|---|---|
| Voided | Check:V |
| Online Bill Pay Pending Accounting Approval | Check:Z |
Commission
| Status Name | Internal Code |
|---|---|
| Pending Payment | Commissn:A |
| Overpaid | Commissn:O |
| Pending Accounting Approval | Commissn:P |
| Rejected by Accounting | Commissn:R |
| Paid in Full | Commissn:X |
Credit Memo
| Status Name | Internal Code |
|---|---|
| Open | CustCred:A |
| Fully Applied | CustCred:B |
Customer Deposit
| Status Name | Internal Code |
|---|---|
| Not Deposited | CustDep:A |
| Deposited | CustDep:B |
| Fully Applied | CustDep:C |
Customer Refund
| Status Name | Internal Code |
|---|---|
| Voided | CustRfnd:V |
Expense Report
| Status Name | Internal Code |
|---|---|
| In Progress | ExpRept:A |
| Pending Supervisor Approval | ExpRept:B |
| Pending Accounting Approval | ExpRept:C |
| Rejected by Supervisor | ExpRept:D |
| Rejected by Accounting | ExpRept:E |
| Approved by Accounting | ExpRept:F |
| Approved (Overridden) by Accounting | ExpRept:G |
| Rejected (Overridden) by Accounting | ExpRept:H |
| Paid In Full | ExpRept:I |
Invoice
| Status Name | Internal Code |
|---|---|
| Open | CustInvc:A |
| Paid In Full | CustInvc:B |
| Pending Approval | CustInvc:D |
Item Fulfillment
| Status Name | Internal Code |
|---|---|
| Picked | ItemShip:A |
| Packed | ItemShip:B |
| Shipped | ItemShip:C |
Journal Entry
| Status Name | Internal Code |
|---|---|
| Pending Approval | Journal:A |
| Approved for Posting | Journal:B |
Opportunity
| Status Name | Internal Code |
|---|---|
| In Progress | Opprtnty:A |
| Issued Estimate | Opprtnty:B |
| Closed β Won | Opprtnty:C |
| Closed β Lost | Opprtnty:D |
Paycheck
| Status Name | Internal Code |
|---|---|
| Undefined | Paycheck:A |
| Pending Tax Calculation | Paycheck:C |
| Pending Commitment | Paycheck:D |
| Committed | Paycheck:F |
| Preview | Paycheck:P |
| Reversed | Paycheck:R |
Payment (Customer Payment)
| Status Name | Internal Code |
|---|---|
| Unapproved Payment | CustPymt:A |
| Not Deposited | CustPymt:B |
| Deposited | CustPymt:C |
Payroll Liability Check
| Status Name | Internal Code |
|---|---|
| Voided | LiabPymt:V |
Purchase Order
| Status Name | Internal Code |
|---|---|
| Pending Supervisor Approval | PurchOrd:A |
| Pending Receipt | PurchOrd:B |
| Rejected by Supervisor | PurchOrd:C |
| Partially Received | PurchOrd:D |
| Pending Billing/Partially Received | PurchOrd:E |
| Pending Bill | PurchOrd:F |
| Fully Billed | PurchOrd:G |
| Closed | PurchOrd:H |
Quote (Estimate)
| Status Name | Internal Code |
|---|---|
| Open | Estimate:A |
| Processed | Estimate:B |
| Closed | Estimate:C |
| Voided | Estimate:V |
| Expired | Estimate:X |
Return Authorization
| Status Name | Internal Code |
|---|---|
| Pending Approval | RtnAuth:A |
| Pending Receipt | RtnAuth:B |
| Cancelled | RtnAuth:C |
| Partially Received | RtnAuth:D |
| Pending Refund/Partially Received | RtnAuth:E |
| Pending Refund | RtnAuth:F |
| Refunded | RtnAuth:G |
| Closed | RtnAuth:H |
Sales Order
| Status Name | Internal Code |
|---|---|
| Pending Approval | SalesOrd:A |
| Pending Fulfillment | SalesOrd:B |
| Cancelled | SalesOrd:C |
| Partially Fulfilled | SalesOrd:D |
| Pending Billing/Partially Fulfilled | SalesOrd:E |
| Pending Billing | SalesOrd:F |
| Billed | SalesOrd:G |
| Closed | SalesOrd:H |
Sales Tax Payment
| Status Name | Internal Code |
|---|---|
| Voided | TaxPymt:V |
| Online Bill Pay Pending Accounting Approval | TaxPymt:Z |
Statement Charge
| Status Name | Internal Code |
|---|---|
| Open | CustChrg:A |
| Paid In Full | CustChrg:B |
Tax Liability Cheque
| Status Name | Internal Code |
|---|---|
| Voided | TaxLiab:V |
Tegata Payable (Japan)
| Status Name | Internal Code |
|---|---|
| Endorsed | TegPybl:E |
| Issued | TegPybl:I |
| Paid | TegPybl:P |
Tegata Receivables (Japan)
| Status Name | Internal Code |
|---|---|
| Collected | TegRcvbl:C |
| Discounted | TegRcvbl:D |
| Endorsed | TegRcvbl:E |
| Holding | TegRcvbl:H |
Transfer Order
| Status Name | Internal Code |
|---|---|
| Pending Approval | TrnfrOrd:A |
| Pending Fulfillment | TrnfrOrd:B |
| Rejected | TrnfrOrd:C |
| Partially Fulfilled | TrnfrOrd:D |
| Pending Receipt/Partially Fulfilled | TrnfrOrd:E |
| Pending Receipt | TrnfrOrd:F |
| Received | TrnfrOrd:G |
| Closed | TrnfrOrd:H |
Vendor Return Authorization
| Status Name | Internal Code |
|---|---|
| Pending Approval | VendAuth:A |
| Pending Return | VendAuth:B |
| Cancelled | VendAuth:C |
| Partially Returned | VendAuth:D |
| Pending Credit/Partially Returned | VendAuth:E |
| Pending Credit | VendAuth:F |
| Credited | VendAuth:G |
| Closed | VendAuth:H |
Work Order
| Status Name | Internal Code |
|---|---|
| Planning | WorkOrd:A |
| Pending Build | WorkOrd:B |
| Cancelled | WorkOrd:C |
| Partially Built | WorkOrd:D |
| Built | WorkOrd:G |
| Closed | WorkOrd:H |
Using Status Codes in SuiteScript Searches
The most common use case for these codes is filtering a search.create() call by transaction status. Here are practical examples:
/**
* @NApiVersion 2.1
* @NScriptType Suitelet
*/
define(['N/search', 'N/record'], function(search, record) {
function onRequest(context) {
// Example 1: Find all open invoices
var openInvoices = search.create({
type: search.Type.INVOICE,
filters: [['transtatus', 'anyof', 'CustInvc:A']],
columns: ['tranid', 'entity', 'amount']
});
// Example 2: Find Sales Orders pending fulfillment OR partially fulfilled
var pendingOrders = search.create({
type: search.Type.SALES_ORDER,
filters: [['transtatus', 'anyof', ['SalesOrd:B', 'SalesOrd:D']]],
columns: ['tranid', 'entity', 'transtatus']
});
// Example 3: Get the status of a specific record
var rec = record.load({ type: record.Type.SALES_ORDER, id: 12345 });
var statusCode = rec.getValue({ fieldId: 'transtatus' }); // 'SalesOrd:B'
}
return { onRequest: onRequest };
});
Using Status Codes in SuiteQL
In SuiteQL (available via query.runSuiteQL()), the status field on the transaction table stores the same internal codes:
define(['N/query'], function(query) {
function onRequest(context) {
var results = query.runSuiteQL({
query: "SELECT id, tranid, status, entity FROM transaction WHERE type = 'SalesOrd' AND status IN ('SalesOrd:B', 'SalesOrd:D') AND voided = 'F' ORDER BY trandate DESC"
});
results.asMappedResults().forEach(function(row) {
log.debug('Order', row.tranid + ' | Status: ' + row.status);
});
}
return { onRequest: onRequest };
});
Validation Notes
This reference was cross-validated against the Oracle NetSuite Help Center. Key notes:
- Invoice: Pending Approval (CustInvc:D) β Requires the Invoice Approval workflow to be enabled in your account.
- Bill Pending Approval (VendBill:D) β Requires the “Approve Vendor Bills” feature to be enabled.
- Work Order: Planning (WorkOrd:A) β Available only when the Manufacturing module is enabled.
- Tegata statuses (TegPybl, TegRcvbl) β Japan-specific feature for promissory notes; only visible in accounts with Japan Localization enabled.
- Commission statuses (Commissn) β Available only when the Commissions feature is enabled.
- Letter V = Voided, Z = Online Bill Pay Pending Accounting Approval across all applicable transaction types.
Quick Lookup: Record Type Prefixes
| Prefix | Transaction Type |
|---|---|
CashSale | Cash Sale |
Check | Check |
Commissn | Commission |
CustChrg | Statement Charge |
CustCred | Credit Memo |
CustDep | Customer Deposit |
CustInvc | Invoice |
CustPymt | Customer Payment |
CustRfnd | Customer Refund |
Estimate | Quote / Estimate |
ExpRept | Expense Report |
ItemShip | Item Fulfillment |
Journal | Journal Entry |
LiabPymt | Payroll Liability Check |
Opprtnty | Opportunity |
Paycheck | Paycheck |
PurchOrd | Purchase Order |
RtnAuth | Return Authorization |
SalesOrd | Sales Order |
TaxLiab | Tax Liability Cheque |
TaxPymt | Sales Tax Payment |
TegPybl | Tegata Payable (Japan) |
TegRcvbl | Tegata Receivables (Japan) |
TrnfrOrd | Transfer Order |
VendAuth | Vendor Return Authorization |
VendBill | Vendor Bill |
VendPymt | Bill Payment |
WorkOrd | Work Order |
Discover more from The NetSuite Pro
Subscribe to get the latest posts sent to your email.
Leave a Reply