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) |
|---|---|---|
| Cost | Free (included) | $499/month ($5,988/year) |
| Driver install | None | Required (per workstation or gateway) |
| Auth | OAuth 2.0 / TBA | Username + password + token |
| Transport | HTTPS / TLS 1.3 | ODBC over TLS |
| Results format | Paginated JSON | Tabular rowsets |
| SQL features | JOIN, GROUP BY, subqueries, CTEs | Same set, ODBC-flavored |
| Best for | Modern integrations, cloud BI | Legacy 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.
Related glossary entries
- SuiteAnalytics Connect — the legacy ODBC service SuiteQL replaces.
- ODBC — what SuiteAnalytics Connect uses under the hood.
- OneWorld — multi-subsidiary considerations when using SuiteQL.