Published on April 24, 2024.
The most commonly asked question that I get from NetSuite developers regarding SuiteQL is something along the lines of, "What table are {some transaction type} stored in?"
A lot of developers that I speak with are expecting to find specific tables for each transaction type. However, all NetSuite transactions are stored in a generic "Transaction" table, and are categorized based on their type.
To see a list of all of the types of transactions that are currently stored in your NetSuite instance, you can run this query.
SELECT DISTINCT BUILTIN.DF( Type ) AS Name, Type FROM Transaction ORDER BY BUILTIN.DF( Type )
The results will look something like this.
Transaction Type Name | Transaction Type |
---|---|
Assembly Build | Build |
Assembly Unbuild | Unbuild |
Bill | VendBill |
Bill Credit | VendCred |
Bill Payment | VendPymt |
Bin Putaway Worksheet | BinWksht |
Bin Transfer | BinTrnfr |
Blanket Purchase Order | BlankOrd |
Cash Sale | CashSale |
Check | Check |
Credit Card | CardChrg |
Credit Memo | CustCred |
Currency Revaluation | FxReval |
Customer Deposit | CustDep |
Customer Refund | CustRfnd |
Deposit | Deposit |
Deposit Application | DepAppl |
Expense Report | ExpRept |
Inventory Adjustment | InvAdjst |
Inventory Cost Revaluation | InvReval |
Inventory Count | InvCount |
Inventory Transfer | InvTrnfr |
Inventory Worksheet | InvWksht |
Invoice | CustInvc |
Item Fulfillment | ItemShip |
Item Receipt | ItemRcpt |
Journal | Journal |
Lease | Custom |
Opportunity | Opprtnty |
Payment | CustPymt |
Purchase Contract | PurchCon |
Purchase Order | PurchOrd |
Quote | Estimate |
Request For Quote | Rfq |
Requisition | PurchReq |
Return Authorization | RtnAuth |
Sales Order | SalesOrd |
System Journal | SysJrnl |
Transfer Order | TrnfrOrd |
Vendor Prepayment | VPrep |
Vendor Prepayment Application | VPrepApp |
Vendor Request For Quote | VendRfq |
Vendor Return Authorization | VendAuth |
Work Order | WorkOrd |
Work Order Close | WOClose |
Work Order Completion | WOCompl |
Work Order Issue | WOIssue |
If you have the internal ID of a transaction, but aren't sure of its type, then you can run a query like this to determine its type.
SELECT TranID, BUILTIN.DF( Type ) AS TypeName, Type FROM Transaction WHERE ID = 33213
If you're querying the Transaction table via an integration, you'll need permission to query not only the Transaction table itself, but also the specific types of transactions that you want to access.
To query the Transaction table, you'll want to assign this permission: Transactions - Find Transaction
Then assign permissions for each transaction type that you want access to. For example, to query for Sales Orders, you'd assign: Transactions - Sales Order
For a list of tables and the permissions that are needed to access them, see: SuiteQL Tables & Permissions Reference
Here are some previous posts that discuss the Transaction table:
• Querying Transactions With SuiteQL
• SuiteQL, the Transaction Table, Statuses, and Built-In Functions
Hello, I'm Tim Dietrich. I develop custom software for businesses that are running on NetSuite, including mobile apps, Web portals, Web APIs, and more.
I'm the developer of several popular NetSuite open source solutions, including the SuiteQL Query Tool, SuiteAPI, and more.
I founded SuiteStep, a NetSuite development studio, to provide custom software and AI solutions - and continue pushing the boundaries of what's possible on the NetSuite platform.
Copyright © 2025 Tim Dietrich.