SuiteQL is Oracle NetSuite's SQL-like query language exposed through REST web services. It supports JOIN, GROUP BY, subqueries, aggregations, and most ANSI SQL features, allowing external tools to query NetSuite records, transactions, and saved searches using standard SQL syntax. Unlike SuiteAnalytics Connect (ODBC), SuiteQL is included in every NetSuite license at no extra cost.

How SuiteQL works

A SuiteQL request is an HTTP POST to /services/rest/query/v1/suiteql with a SQL query in the body and an OAuth 2.0 bearer token in the header. NetSuite returns paginated JSON results. Authentication uses NetSuite's standard token-based authentication (TBA), which you set up once in the NetSuite UI under Setup > Users/Roles > Access Tokens.

Example query that pulls all open invoices joined to their customer records:

SELECT t.tranid, t.trandate, t.foreigntotal,
       c.entityid AS customer_name
FROM transaction t
JOIN customer c ON c.id = t.entity
WHERE t.type = 'CustInvc'
  AND t.status = 'Invoice:A'
  AND t.trandate >= TO_DATE('2026-01-01', 'YYYY-MM-DD')
ORDER BY t.trandate DESC

SuiteQL vs SuiteAnalytics Connect (ODBC)

Aspect SuiteQL (REST) SuiteAnalytics Connect (ODBC)
CostFree (included)$499/month ($5,988/year)
Driver installNoneRequired (per workstation or gateway)
AuthOAuth 2.0 / TBAUsername + password + token
TransportHTTPS / TLS 1.3ODBC over TLS
Results formatPaginated JSONTabular rowsets
SQL featuresJOIN, GROUP BY, subqueries, CTEsSame set, ODBC-flavored
Best forModern integrations, cloud BILegacy desktop BI, Excel direct connect

When to use SuiteQL

  • Connecting NetSuite to Power BI, Snowflake, BigQuery, SQL Server, or Azure Synapse: modern cloud destinations work better with REST than ODBC.
  • Automating exports: replace manual CSV downloads or fragile SuiteScript jobs with scheduled SuiteQL pulls.
  • Building custom dashboards: query exactly the fields and joins you need without rebuilding Saved Searches.
  • Replacing custom API integrations: SuiteQL handles complex queries that previously required custom RESTlets or SuiteScript.

Limits and gotchas

SuiteQL has rate limits (typically 5 concurrent connections per role) and a 4-minute query timeout. Long-running aggregations should be partitioned by date range. Some NetSuite custom record types and saved-search-only fields are not exposed via SuiteQL. For very large historical pulls, incremental sync (querying only changed records since the last run) is the practical approach.

How Acterys NetSuite Sync uses SuiteQL

Acterys NetSuite Sync uses SuiteQL natively for all data extraction. That means no ODBC driver to install, no SuiteAnalytics Connect license, no gateway server, and no manual schema mapping. Customers connect via OAuth in 30 seconds, pick the tables they want, and Acterys handles incremental sync, retry logic, schema evolution, and destination loading. See how it works or compare against CData ODBC.