At a Glance — n8n NetSuite Integration
- Authentication to use: OAuth 2.0 with the authorization code flow, which is what the NetSuite REST node uses
- What you create in NetSuite: an integration record with the Authorization Code Grant, the REST Web Services scope and n8n's redirect URL
- What you enter in n8n: your account subdomain, the Client ID and the Client Secret
- TBA: still works for existing integrations; new ones can't be created from NetSuite 2027.1 (Oracle 2026.1 release notes)
- REST base URL:
https://{accountId}.suitetalk.api.netsuite.com/services/rest/record/v1/. SuiteQL:/services/rest/query/v1/suiteql - Permissions: use a dedicated integration user and role with only the permissions your workflows need
How n8n connects to NetSuite
n8n does not include an official built-in NetSuite node, so there are two practical ways to connect. Both use the same NetSuite OAuth 2.0 setup, covered next.
- The NetSuite REST community node (
n8n-nodes-netsuite-rest, built by Entech Solutions). A verified community node that works on both n8n Cloud and self-hosted n8n. It supports 150+ standard record types, custom records and fields, and SuiteQL, and signs in with OAuth 2.0. - The HTTP Request node. You call the NetSuite REST API and SuiteQL endpoint yourself. It reaches everything NetSuite exposes, but you build each request by hand.
Set up OAuth 2.0 in NetSuite
You need a NetSuite administrator for this part. The steps follow NetSuite's integration-record screens, so button names can differ slightly between releases.
- Enable the features. Go to Setup → Company → Enable Features, open the SuiteCloud tab, and make sure both REST Web Services and OAuth 2.0 are checked.
- Create the integration record. Go to Setup → Integration → Manage Integrations → New. Give it a name such as "n8n Automation" and set the state to Enabled.
- Choose the grant and scope. Under OAuth 2.0, check Authorization Code Grant and the REST Web Services scope.
- Add the redirect URL. Paste the OAuth Redirect URL that n8n shows in the credential screen (next section), so create the credential in n8n first to copy it.
- Save and copy the credentials. NetSuite shows the Client ID (Consumer Key) and Client Secret (Consumer Secret) once. Copy both now.
- Note your account subdomain. It's the part before
.app.netsuite.comin the address you use after signing in to NetSuite.
The user who approves the connection decides what n8n can read or write. Create a dedicated integration user and role with only the permissions your workflows need, and make sure the role is allowed to use REST Web Services and OAuth 2.0 access (check your account's role permission list). Don't connect with a personal administrator account.
Connect n8n to NetSuite
Option A: the NetSuite REST node
- Install the node. On n8n Cloud, an instance owner or admin turns on Verified Community Nodes in the Admin Panel, then anyone can search the nodes panel for NetSuite REST. On self-hosted n8n, go to Settings → Community Nodes → Install and enter
n8n-nodes-netsuite-rest. - Create a NetSuite REST OAuth2 API credential and enter the Account Subdomain, Client ID and Client Secret.
- Copy the OAuth Redirect URL from the credential into the NetSuite integration record (step 4 above).
- Click the connect button in the credential and approve access when NetSuite asks.
Then add the NetSuite REST node to a workflow, pick a resource such as Customer and an operation such as Get record, and run it.
Option B: the HTTP Request node
Create a generic OAuth2 API credential in n8n with the same endpoints the node uses:
- Grant Type: Authorization Code
- Authorization URL:
https://{accountSubdomain}.app.netsuite.com/app/login/oauth2/authorize.nl - Access Token URL:
https://{accountSubdomain}.suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token - Scope:
rest_webservices - Authentication: Header
- Client ID and Client Secret: from the integration record
In the HTTP Request node, choose this credential and call the REST API. n8n adds the access token to each request:
GET https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/customer/12345
Authorization: Bearer <access token>
The response is a JSON object with the customer's fields.
Refresh tokens don't last forever. NetSuite limits how long a refresh token stays valid, so a connection that sits unused can need to be re-authorized by a user. Check the token settings on your integration record and Oracle's OAuth 2.0 documentation for the current limits, and test a workflow that runs only occasionally. PKCE is coming. Oracle's documentation says that from NetSuite 2027.1, new integrations using the authorization code grant must include PKCE parameters. If you create a new integration record after that, confirm that your n8n credential can send them.
NetSuite also offers OAuth 2.0 client credentials (machine-to-machine). It needs no user sign-in, but it doesn't use a client secret: you generate a certificate, upload it to NetSuite, and sign a JWT with the private key for each token request. That takes more setup than the authorization code flow, and n8n's standard OAuth2 credential isn't set up for signing JWTs, which is why the NetSuite REST node uses the authorization code flow.
Querying data with SuiteQL
SuiteQL is NetSuite's SQL-like query language for reading data across record types. It is more efficient than fetching records one by one when you need joins, filters or aggregates. In n8n, call it with the HTTP Request node (or use the SuiteQL action in the NetSuite REST node):
- Method: POST
- URL:
https://{accountId}.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql - Headers:
prefer: transient - Body (JSON):
{"q": "SELECT id, companyName, email FROM customer WHERE isInactive = 'F'"}
The response is a JSON object with an items array; each item is a row. Feed it to downstream nodes with {{ $json.items }}. Table and column names depend on the records and fields in your account and on your role's permissions, so look them up in NetSuite's Records Catalog and test queries there before you build them into a workflow.
SuiteQL returns a limited number of rows per request. For larger result sets, page through them with LIMIT and OFFSET, check the response's hasMore field, and continue until it is false. Our guide to looping through all NetSuite records in n8n shows the full pattern, including where to keep the offset between passes.
Legacy: token-based authentication (TBA)
Many older n8n–NetSuite tutorials use token-based authentication, NetSuite's OAuth 1.0-style method. It still works for integrations that already use it. According to Oracle's NetSuite 2026.1 release notes, new integrations can no longer use TBA from NetSuite 2027.1, and existing TBA integrations are not forcibly disabled at that time. If you are starting fresh, skip TBA.
If you maintain an existing TBA integration, n8n connects through its OAuth1 API credential:
- From NetSuite you need five values: Account ID, Consumer Key, Consumer Secret, Token ID and Token Secret. The key and secret come from a TBA integration record; the token comes from an access token created for a dedicated user and role.
- In n8n, create an OAuth1 API credential with those values and set the signature method to HMAC-SHA256, then select it in the HTTP Request node. n8n signs each request.
When you are ready to move off TBA, see our TBA deprecation guide.
What the NetSuite REST community node supports
The node, built by Entech Solutions, is a verified community node, available on npm and in n8n's nodes panel. See the n8n community announcement for notes and the changelog, and the npm package page for the current version. It supports:
- Create, read, update and delete on 150+ standard NetSuite record types
- Custom fields on entities and bodies, and create/read/update/delete on custom records
- SuiteQL queries through a dedicated action
- A debug mode that shows the raw request and response
- OAuth 2.0 sign-in: enter your subdomain, Client ID and Client Secret once
See our n8n NetSuite integration service page for how Entech can build this for you.
Example workflows
These are outlines (trigger, steps and outcome), not import-ready workflows. Adapt the field names and record IDs to your own NetSuite account.
Shopify order → NetSuite sales order
Trigger: Shopify Trigger node on orders/create webhook. Steps: map Shopify customer email to NetSuite customer ID via SuiteQL lookup, create a NetSuite Sales Order via POST to /salesOrder with line items, log the new NetSuite transaction ID back to the Shopify order notes via Shopify API. Result: each new Shopify order is created in NetSuite automatically, with no manual entry.
HubSpot deal won → NetSuite customer + project
Trigger: HubSpot Trigger on deal stage change to "Closed Won". Steps: check if a NetSuite customer exists for the HubSpot company (SuiteQL lookup by name/email), create if not found, then create a NetSuite Project record linked to the customer. Optionally post a Slack notification with the NetSuite project URL. See also: HubSpot to NetSuite sync with n8n.
Daily inventory alert
Trigger: Schedule node (daily at 7 AM). Steps: run SuiteQL query for items below reorder point, format results into a Slack message with item names, current quantity, and reorder point. If zero items below threshold, skip the Slack message using an IF node. This replaces a daily manual NetSuite report.
Overdue invoice escalation
Trigger: Schedule node (every Monday). Steps: SuiteQL query for invoices 30+ days overdue, look up account owner in HubSpot by customer email, post a Slack message to the account owner's DM with the invoice list and amounts. Route invoices over $10,000 to a separate escalation channel.
n8n vs Celigo for NetSuite
This is worth addressing directly because we build both. Celigo offers prebuilt NetSuite integration apps, a field-mapping interface and vendor support, which usually makes it the better choice for high-volume ERP integrations and tight compliance requirements. See our comparison: n8n vs Celigo.
n8n is the better fit when you need custom logic that a connector flow can't handle, your team has developer capacity, or your NetSuite workflows are one part of a broader automation stack that includes non-ERP systems. On cost, n8n is free to self-host and its cloud plans start at €20 a month, billed annually (n8n.io, October 2026). Celigo licensing runs roughly $7,800 to $25,500 a year; see our Celigo NetSuite integration cost breakdown. The comparison isn't only licence price: with n8n you build and maintain more of the integration yourself.
Sources
- NetSuite help: OAuth 2.0 as the replacement for deprecated authentication methods (Oracle)
- n8n-nodes-netsuite-rest on npm
Entech Solutions builds both. If you are unsure which fits your NetSuite setup, get in touch and we can walk through your specific use case.
Frequently asked questions
Does n8n have a native NetSuite node? No. n8n doesn't ship an official built-in NetSuite node. You can use the verified community node n8n-nodes-netsuite-rest, built by Entech Solutions, which works on both n8n Cloud and self-hosted n8n and authenticates with OAuth 2.0, or call the NetSuite REST API and SuiteQL endpoint yourself with the HTTP Request node.
How do you authenticate n8n with NetSuite? Use OAuth 2.0 with the authorization code flow. In NetSuite, enable the REST Web Services and OAuth 2.0 features and create an integration record with the Authorization Code Grant, the REST Web Services scope and n8n's OAuth redirect URL. Then enter your account subdomain, the Client ID and the Client Secret in an n8n credential and sign in to NetSuite to approve access.
Should I still use token-based authentication (TBA) with n8n and NetSuite? Only for integrations that already use it. Oracle's NetSuite 2026.1 release notes say new integrations using TBA can no longer be created from NetSuite 2027.1, while existing TBA integrations are not forcibly disabled at that time. For anything new, set up OAuth 2.0 instead.
What is the difference between authorization code and machine-to-machine OAuth in NetSuite? With the authorization code flow, a NetSuite user signs in once and approves access, and the integration then holds tokens on that user's behalf. Machine-to-machine (client credentials) needs no user sign-in, but it uses a certificate you upload to NetSuite and a signed JWT instead of a client secret, so it takes more setup. The n8n NetSuite REST node uses the authorization code flow.
What is SuiteQL and how do you use it in n8n? SuiteQL is NetSuite's SQL-like query language for reading data across record types. In n8n, send a POST request to https://{accountId}.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql with the header prefer: transient and a JSON body such as {"q": "SELECT id, companyName, email FROM customer WHERE isInactive = 'F'"}. The response contains an items array, one entry per row. The NetSuite REST community node also has a SuiteQL action.
Should I use n8n or Celigo for NetSuite integrations? It depends on complexity and who maintains it. Celigo offers prebuilt NetSuite integration apps and vendor support, which suits high-volume ERP integrations where reliability matters most. n8n is free to self-host, has cloud plans from €20 a month (billed annually, per n8n.io in October 2026) and is more flexible for custom logic and developer-led teams, but you build and maintain more yourself.