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 design and build custom software for businesses running on NetSuite — from mobile apps and Web portals to Web APIs and integrations.
I’ve created several widely used open-source solutions for the NetSuite community, including the SuiteQL Query Tool and SuiteAPI, which help developers and businesses get more out of their systems.
I’m also the founder of SuiteStep, a NetSuite development studio focused on pushing the boundaries of what’s possible on the platform. Through SuiteStep, I deliver custom software and AI-driven solutions that make NetSuite more powerful, accessible, and future-ready.
Copyright © 2025 Tim Dietrich.