Skip to content

NetSuite

Built, not certified Built and tested against recorded and synthetic responses (version 1.0.0, 10 November 2026). Not yet run against the vendor's sandbox or a client environment.

Reads NetSuite customers, transactions, items and support cases by SuiteQL, so finance and service agents can answer from the ledger and the case history. It signs in with the client’s certificate, machine to machine, and sends only SELECT queries.

CollectorNetSuite, version 1.0.0
ReadsOracle: NetSuite (SuiteTalk REST, SuiteQL) (the vendor's documentation)
FamilyERP
KindERP
Ways to connectOAuth approval, Key pair
Scopes
  • Read: rest_webservices
Read onlyYes, except: [object Object]; [object Object]
Vendor's API can move moneyNo
Personal dataFinancial, Identity, Content
Hosts it may contact*.suitetalk.api.netsuite.com, *.app.netsuite.com, {host}
Vendor API versionsNetSuite REST web services (SuiteQL), OAuth 2.0 client credentials (M2M)
Lowest engine version0.46.0
  • Four kinds, which you choose: customers, transactions, items and cases, with the business record’s columns (names, status, terms, totals, currency, memo, dates). A customer’s email and phone are not read.
  • Changes since the cursor: SuiteQL’s lastmodifieddate is in the account’s time zone with no offset, so the query starts a day before the cursor, the time is read as written (as UTC), and what is not newer is dropped.
  • SuiteQL’s offset paging stops at 100,000 rows, so a larger first pull starts again from the newest time it has read, skipping ids already read, until a restart brings nothing new. The listing for a reconcile pages by id.
  • Deletions: every six hours the ids are listed (ids only) and what has gone is withdrawn. A record type the role cannot read (400, 403) keeps its ids.
  1. In NetSuite, create an integration record with the OAuth 2.0 client-credentials grant, generate a certificate, and upload it under Setup, Integration, OAuth 2.0 Client Credentials (M2M) Setup, mapped to a role that only views the records named.
  2. In LightHouse, open Connectors, choose NetSuite, and give the client id, the certificate’s id and the certificate’s private key (PEM). They are sealed in your browser to your deployment’s key and kept in your own secrets store; LightHouse never opens them.
  3. In code, set NETSUITE_CREDENTIAL to the credential’s JSON fields (account_id, client_id, certificate_id, certificate) and add a kind: netsuite source card with objects, label and requires.

The rest_webservices scope, with a mapped role that has view permission on the records named and nothing that creates or edits; read and write is not offered. The deployment signs a five-minute assertion (PS256, the certificate’s id as kid) and NetSuite answers an hour’s token. No password and no token-based-authentication secret pair is asked for.

Every request goes to the account’s own host, <account>.suitetalk.api.netsuite.com, made from the sealed account id, and the fetcher refuses any other. The only POSTs are the token request and SuiteQL, which carries its query in a POST body; both are listed in the manifest’s read_operations, and the read-only test asserts they are the only paths used and that every query is a SELECT.

  • account_id is the NetSuite account id (for example 1234567 or 1234567_SB1).
  • Only the four kinds are read, with fixed columns.
  • Offset paging is capped at 100,000 rows by SuiteQL; the collector restarts from the newest time and skips ids read.
  • A re-read of a day’s changes is normal, because of the time-zone widening.
  • Requests are paced and back off when NetSuite asks (Retry-After).
  • Records are copied into the deployment’s corpus under the source’s label. They are financial records and name customers and suppliers (companies, and some people); a customer’s email and phone are not read.
  • The private key stays in the client’s store; only a five-minute assertion is signed and sent, and an hour’s token is held in memory. Neither is written to logs or run notes.
  • Nothing leaves the deployment: only counts reach LightHouse.
What you see What it means What to do
account_id is your NetSuite account id, e.g. 1234567 or 1234567_SB1 The account id is not NetSuite’s Use the account id from Setup, Company, Company Information
the NetSuite certificate holds no readable private key The pasted PEM has no private key Paste the private key and the certificate
NetSuite answered no access token The token request was accepted but gave no token Check the integration record and the certificate mapping
HTTP 400 or HTTP 401 on the token request The client id, certificate id or mapped role is wrong Check the M2M setup
HTTP 403 on a query The role cannot view that record type Grant view permission; its ids are kept meanwhile
Read succeeded, 0 written No record changed since the cursor Nothing to do

Each entry is a run by Atlantic Agentic Labs, newest first. Only a run against the vendor’s sandbox or a client environment certifies a collector; a certification lasts six months, or less if the vendor publishes an API version the collector does not list. See How collectors are certified.

DateCollectorEngineVendor APIMethodExpires
10 November 20261.0.00.46.0NetSuite REST web services, SuiteQL, OAuth 2.0 client credentials (M2M)Fixtures only: built, not certifiedNot applicable

From the collector’s last scan on the default branch. What each line means, and what blocks a release: Security posture.

Last scanned10 November 2026
Critical findings0
High findings0
Medium findings0
Low findings0
Info findings0
Release blockedNo
Network allow-list checkPass
Read-only behavioural testPass
SBOM (CycloneDX)Produced
Dependency licencesPass
Scannersbandit 1.9.4, semgrep 1.181.1, pip-audit 2.10.1, osv-scanner 2.7.0, cyclonedx-py 7.5.0, pip-licenses 5.5.5, gitleaks repository job aal-secrets, hosts_check tools/hosts_check.py, read-only test pytest -m read_only