NetSuite User Connector
Connect NetSuite to Abacus.AI so that ChatLLM Teams chats with RouteLLM, the Abacus AI Agent and Custom Chatbots can read and write NetSuite records (customers, sales orders, invoices, items, vendors and more) and run SuiteQL queries through the SuiteTalk REST Web Services API, under each user's own NetSuite login and role.
Setting up NetSuite is a two-part process, for two different audiences:
| Part | Who does it | What it does | Page |
|---|---|---|---|
| 1. Administrator setup | A NetSuite administrator together with an Abacus.AI workspace administrator | Enables the NetSuite features, creates the Integration Record (OAuth 2.0 application), grants role permissions, and registers the credentials once as a config connector | Administrator setup |
| 2. Connect and use | Each end user | Signs in to NetSuite through OAuth 2.0 so the agent acts under that user's own NetSuite login and permissions | This page |
A config connector is required for the NetSuite user connector to work. Until an administrator completes Administrator setup, users have no OAuth application to authenticate against and connecting fails with "NetSuite organization-level setup is incomplete".
Prerequisites​
- Access to ChatLLM Teams
- A NetSuite user account with a role that carries the Log in using OAuth 2.0 Access Tokens, OAuth 2.0 Authorized Applications Management and REST Web Services permissions (granted in Administrator setup, Step 4)
- The NetSuite config connector created in Administrator setup, Step 6
Scopes and permissions​
The scopes requested when you sign in are set on the config connector by your administrator. rest_webservices is always required; restlets and suite_analytics are optional and only take effect if the administrator enabled them both on the Integration Record and on the config connector. Beyond scopes, the connector can only see the records your NetSuite role can see.
Use NetSuite in ChatLLM​
Step 1 — Connect NetSuite​
In ChatLLM Teams, click the Connectors link on the home page, or click your profile in the top right and navigate to Profile → User Connectors.

- Find NetSuite in the list and click it.
- A browser pop-up opens on your NetSuite account's login page. Sign in with the NetSuite user whose role has the required permissions.
- Review the requested access and click Allow.
- The pop-up closes and NetSuite appears under your connected services, ready to use in chat.
The sign-in page is hosted on your own NetSuite account domain, which is derived from the Account ID on the config connector. If you are already signed in to NetSuite in the same browser, NetSuite may skip straight to the authorization prompt.
Step 2 — Chat with RouteLLM​
- Open a new chat in ChatLLM Teams.
- From the model selector, choose RouteLLM (
route-llm). RouteLLM automatically routes each request to the most suitable underlying model, and is available for unlimited use to ChatLLM subscribers.

- Ask a question that references NetSuite, for example "List the NetSuite sales orders created this week". RouteLLM invokes the NetSuite tool, fetches the data under your identity, and responds in chat.
The first time you query a newly connected service in a chat, you may be prompted to authorize the connector. Complete the sign-in once and the request continues automatically; subsequent requests reuse the connection.
You don't need to train a Custom Chatbot to use NetSuite with RouteLLM. Once the connector is configured in the User Connectors panel, it is immediately available across your workspace chats and to the Abacus AI Agent.
If you want a dedicated bot with its own instructions and a restricted set of tools, train a Custom Chatbot in the Developer Platform and, under Advanced Options → Tool Use, select Netsuite_Tool. You must also pick the NetSuite config connector under **Config Connectors**; without it, the chatbot's users cannot connect to NetSuite. End users of that chatbot are prompted to sign in to NetSuite once, and the bot then acts under each user's own identity. See the Custom Chatbots guide for the full training and deployment walkthrough.
Supported NetSuite tool actions​
The NetSuite user connector provides a thin REST wrapper that lets the AI agent call the SuiteTalk REST Web Services API. The tool resolves your account host from the connector, attaches the OAuth access token, and refreshes it automatically when it expires. You only provide the path after the /services/rest/ base.
| Operation | Endpoint | Method | Description |
|---|---|---|---|
| List customers | record/v1/customer | GET | List customer records |
| Get customer | record/v1/customer/{id} | GET | Fetch a single customer |
| Update customer | record/v1/customer/{id} | PATCH | Update fields on a customer |
| List sales orders | record/v1/salesOrder | GET | List sales orders |
| Create sales order | record/v1/salesOrder | POST | Create a sales order |
| Get invoice | record/v1/invoice/{id} | GET | Fetch a single invoice |
| Run SuiteQL | query/v1/suiteql | POST | Run a SuiteQL query with a JSON body such as {"q": "SELECT id, companyname FROM customer"} |
The {account} host is derived automatically from the config connector's Account ID; never include it in the endpoint path. Pagination uses the limit and offset query parameters; NetSuite returns a hasMore flag and links for the next page. The Prefer: transient header required by SuiteQL is set automatically.
Important notes​
- Per-user identity: each user authenticates with their own NetSuite login, so the agent is limited to that user's NetSuite role permissions.
- Automatic token refresh: NetSuite access tokens are valid for a fixed 60 minutes and are refreshed automatically. NetSuite also rotates the refresh token on every refresh, and Abacus.AI persists the new value for you.
- Refresh token lifetime: the refresh token lifetime is configured on the Integration Record (1–720 hours, 7 days by default). If a user does not use the connector within that window, they are asked to reconnect.
- Sandbox accounts: a sandbox Account ID such as
1234567_SB1points at a different SuiteTalk host than production. Use a separate config connector if you need to reach both.
Troubleshooting​
- "NetSuite config-only setup requires the following fields: ...": one of Account ID, Client ID or Client Secret is missing on the config connector. Re-open it and fill in every required field.
- "NetSuite organization-level setup is incomplete": the config connector is missing or incomplete. Ask an administrator to complete Administrator setup.
- "Your Role Does Not Support OAuth2 Login": your NetSuite role is a Web Services Only or Single Sign-On Only role, or it is missing the Log in using OAuth 2.0 Access Tokens permission. See Administrator setup, Step 4.
- "Not enough permissions granted to access the requested resources": the scopes requested by Abacus.AI are not all enabled on the NetSuite Integration Record. Ask your administrator to align the Integration Record SCOPE checkboxes with the connector's Scopes field.
- Invalid redirect URI on the NetSuite sign-in page: the Integration Record must list
https://abacus.ai/oauth/callbackexactly, with no trailing slash. - Wrong account or sandbox: the Account ID determines the SuiteTalk host. A sandbox Account ID such as
1234567_SB1resolves to a different host than production. - Verification is slow the first time: Abacus.AI validates the connection against the SuiteTalk metadata catalog. On accounts with many custom records this can take up to a minute; wait for it to finish rather than retrying.
- HTTP 403 on a specific record type: your NetSuite role is missing the record-level permission for that record. Ask your administrator to add it under the Transactions, Lists, Reports or Custom Record subtab of the role.
- Connection stopped working after a while: the refresh token may have expired or the Integration Record's client secret was reset. Reconnect NetSuite from Profile → User Connectors.