If you develop in SuiteScript and you are trying to search on the transaction ‘status’, you may be frustrated because the values you need are not documented. By parsing NetSuite’s JavaScript in the Saved Search Interface, I found the ‘Transaction_Status’ array which contains a list of the display values and the corresponding underlying filter reference codes.
To use this list, create a NetSuite nlobjSearchFilter with syntax that looks as follows:
filters[2] = new nlobjSearchFilter(‘status’, ‘applyingtransaction’, ‘noneof’, [‘CashSale:C’,’CashSale:B’,’CustInvc:B’]);
NetSuite Transaction Internal Status List
This list is valid as of the time of this article posting. It will likely grow as NetSuite enhances its API and transaction capacity:
Status | SearchFilter |
Cash Sale:Unapproved Payment | CashSale:A |
Cash Sale:Not Deposited | CashSale:B |
Cash Sale:Deposited | CashSale:C |
Check:Voided | Check:V |
Check:Online Bill Pay Pending Accounting Approval | Check:Z |
Commission:Pending Payment | Commissn:A |
Commission:Overpaid | Commissn:O |
Commission:Pending Accounting Approval | Commissn:P |
Commission:Rejected by Accounting | Commissn:R |
Commission:Paid in Full | Commissn:X |
Statement Charge:Open | CustChrg:A |
Statement Charge:Paid In Full | CustChrg:B |
Credit Memo:Open | CustCred:A |
Credit Memo:Fully Applied | CustCred:B |
Customer Deposit:Not Deposited | CustDep:A |
Customer Deposit:Deposited | CustDep:B |
Customer Deposit:Fully Applied | CustDep:C |
Invoice:Open | CustInvc:A |
Invoice:Paid In Full | CustInvc:B |
Payment:Unapproved Payment | CustPymt:A |
Payment:Not Deposited | CustPymt:B |
Payment:Deposited | CustPymt:C |
Customer Refund:Voided | CustRfnd:V |
Quote:Open | Estimate:A |
Quote:Processed | Estimate:B |
Quote:Closed | Estimate:C |
Quote:Voided | Estimate:V |
Quote:Expired | Estimate:X |
Expense Report:In Progress | ExpRept:A |
Expense Report:Pending Supervisor Approval | ExpRept:B |
Expense Report:Pending Accounting Approval | ExpRept:C |
Expense Report:Rejected by Supervisor | ExpRept:D |
Expense Report:Rejected by Accounting | ExpRept:E |
Expense Report:Approved by Accounting | ExpRept:F |
Expense Report:Approved (Overridden) by Accounting | ExpRept:G |
Expense Report:Rejected (Overridden) by Accounting | ExpRept:H |
Expense Report:Paid In Full | ExpRept:I |
Inventory Count:Open | InvCount:A |
Inventory Count:Started | InvCount:B |
Inventory Count:Completed/Pending Approval | InvCount:C |
Inventory Count:Approved | InvCount:D |
Item Fulfillment:Picked | ItemShip:A |
Item Fulfillment:Packed | ItemShip:B |
Item Fulfillment:Shipped | ItemShip:C |
Journal:Pending Approval | Journal:A |
Journal:Approved for Posting | Journal:B |
Payroll Liability Check:Voided | LiabPymt:V |
Opportunity:In Progress | Opprtnty:A |
Opportunity:Issued Estimate | Opprtnty:B |
Opportunity:Closed – Won | Opprtnty:C |
Opportunity:Closed – Lost | Opprtnty:D |
Paycheck:Undefined | Paycheck:A |
Paycheck:Pending Tax Calculation | Paycheck:C |
Paycheck:Pending Commitment | Paycheck:D |
Paycheck:Committed | Paycheck:F |
Paycheck:Preview | Paycheck:P |
Paycheck:Reversed | Paycheck:R |
Purchase Order:Pending Supervisor Approval | PurchOrd:A |
Purchase Order:Pending Receipt | PurchOrd:B |
Purchase Order:Rejected by Supervisor | PurchOrd:C |
Purchase Order:Partially Received | PurchOrd:D |
Purchase Order:Pending Billing/Partially Received | PurchOrd:E |
Purchase Order:Pending Bill | PurchOrd:F |
Purchase Order:Fully Billed | PurchOrd:G |
Purchase Order:Closed | PurchOrd:H |
Return Authorization:Pending Approval | RtnAuth:A |
Return Authorization:Pending Receipt | RtnAuth:B |
Return Authorization:Cancelled | RtnAuth:C |
Return Authorization:Partially Received | RtnAuth:D |
Return Authorization:Pending Refund/Partially Received | RtnAuth:E |
Return Authorization:Pending Refund | RtnAuth:F |
Return Authorization:Refunded | RtnAuth:G |
Return Authorization:Closed | RtnAuth:H |
Sales Order:Pending Approval | SalesOrd:A |
Sales Order:Pending Fulfillment | SalesOrd:B |
Sales Order:Cancelled | SalesOrd:C |
Sales Order:Partially Fulfilled | SalesOrd:D |
Sales Order:Pending Billing/Partially Fulfilled | SalesOrd:E |
Sales Order:Pending Billing | SalesOrd:F |
Sales Order:Billed | SalesOrd:G |
Sales Order:Closed | SalesOrd:H |
Tax Liability Cheque:Voided | TaxLiab:V |
Sales Tax Payment:Voided | TaxPymt:V |
Sales Tax Payment:Online Bill Pay Pending Accounting Approval | TaxPymt:Z |
Tegata Payable:Endorsed | TegPybl:E |
Tegata Payable:Issued | TegPybl:I |
Tegata Payable:Paid | TegPybl:P |
Tegata Receivables:Collected | TegRcvbl:C |
Tegata Receivables:Discounted | TegRcvbl:D |
Tegata Receivables:Endorsed | TegRcvbl:E |
Tegata Receivables:Holding | TegRcvbl:H |
Transfer Order:Pending Approval | TrnfrOrd:A |
Transfer Order:Pending Fulfillment | TrnfrOrd:B |
Transfer Order:Rejected | TrnfrOrd:C |
Transfer Order:Partially Fulfilled | TrnfrOrd:D |
Transfer Order:Pending Receipt/Partially Fulfilled | TrnfrOrd:E |
Transfer Order:Pending Receipt | TrnfrOrd:F |
Transfer Order:Received | TrnfrOrd:G |
Transfer Order:Closed | TrnfrOrd:H |
Vendor Return Authorization:Pending Approval | VendAuth:A |
Vendor Return Authorization:Pending Return | VendAuth:B |
Vendor Return Authorization:Cancelled | VendAuth:C |
Vendor Return Authorization:Partially Returned | VendAuth:D |
Vendor Return Authorization:Pending Credit/Partially Returned | VendAuth:E |
Vendor Return Authorization:Pending Credit | VendAuth:F |
Vendor Return Authorization:Credited | VendAuth:G |
Vendor Return Authorization:Closed | VendAuth:H |
Bill:Open | VendBill:A |
Bill:Paid In Full | VendBill:B |
Bill:Cancelled | VendBill:C |
Bill:Pending Approval | VendBill:D |
Bill:Rejected | VendBill:E |
Cash Payment:Voided | VendPymt:V |
Cash Payment:Online Bill Pay Pending Accounting Approval | VendPymt:Z |
Work Order:Planning | WorkOrd:A |
Work Order:Pending Build | WorkOrd:B |
Work Order:Cancelled | WorkOrd:C |
Work Order:In Process | WorkOrd:D |
Work Order:Built | WorkOrd:G |
Work Order:Closed | WorkOrd:H |
Related Articles
- NetSuite SearchFilter Internal Transaction Type Codes
- NetSuite SearchFilter Internal Account Type Codes
- How To: Script to Automate NetSuite Journal Entries
- Showing NetSuite Internal IDs and Field Names
- Use Custom Logic to Drive NetSuite General Ledger Posting Accounts
Get Help
If you find the list is outdated, let me know. I will refresh it. If you want help to optimize your NetSuite account, contact us.
Very valuable information.
When you fetch a transaction record in SuiteScript, you get something similar to this (in this case, an item fulfillment):
"shipstatus": {
"name": "Shipped",
"internalid": "C"
}
So, surely, a search filter with shipstatus, anyof, and [“C”], should find this same record, right?
Nope.
Not only do you have to use status in place of shipstatus, but you also have to use ItemShip:C in place of C.
Even clicking on the field in NetSuite tells you that the internal ID of the field is shipstatus.
This works for searching but not always for changing status from script.
I’m trying to start, complete, and approve an inventory count from script and it just ignores the change. Any hints to help?
Hi Rob,
Status can not always be changed via script. Many times, it is calculated from other related records.
Marty
I find it astonishing that five years later this information is *still* not documented anywhere by NetSuite (that I’ve been able to find). Thank you for this excellent resource!
Thank you for this! It applies to the SuiteTalk SOAP API as well.
I’ve got this page bookmarked for good reason – thanks for providing this resource Marty!
I’d like to add a note for anyone who encounters this obstacle related to transaction statuses and SuiteQL:
SELECT DISTINCT status
FROM transaction
WHERE type = 'Opprtnty'
AND status NOT IN ('C', 'D')
ORDER BY status
/* results
STATUS
A
B
C
D
*/
You may notice that the statuses (‘C’,’D’) still appear in that list even though I ruled them out. Taking a cue from the composed status as listed in Marty’s article (Opprtnty:C, Opprtnty:D), the approach should be
SELECT DISTINCT status
FROM transaction
WHERE type = 'Opprtnty'
AND status NOT IN (type||':C', type||':D')
ORDER BY status
/* results
STATUS
A
B
*/
This isn’t readily apparent from inspecting the results of a query returning the status column, but a query filtering by status must concatenate the transaction type and the status as shown above.
I hope this helps someone else that runs into a similar situation in the future!
Thank you Clay. That’s quite helpful.
Marty