Skip to main content
NetSuite is Oracle’s cloud ERP suite, covering accounting, inventory, CRM, and order management for companies that often run across multiple locations and subsidiaries. Connecting NetSuite to Prowork lets finance and ops teams pull saved search results into the same flows used for reconciliation and reporting, and push sales orders, purchase orders, and other records back to NetSuite, without manual exports or engineering work. There are three ways to authorize NetSuite in Prowork, and not every step uses the same one:
  • Token-based authentication covers Pulling Data via Saved Search and Sending Data. These two share the same integration record and credentials, you only need to set this up once.
  • OAuth 2.0 covers Pulling Data via SuiteQL only. This uses a separate integration record from the token-based one above.
  • Client Credentials with Private Key JWT is for connecting to NetSuite’s REST API through Prowork’s API steps (Pull from an API, Send to an API, Enrich with API). It doesn’t require re-authorizing every 7 days. See Authorizing with Client Credentials (Private Key JWT).
A single NetSuite integration record can have both Token-Based Authentication and OAuth 2.0 enabled at once, they’re independent checkboxes on the same record. If you’re setting up all three, you can reuse one integration record by enabling both sets of checkboxes on it. If you’re only setting up one method from scratch, just check the boxes for the one you need.

Creating a NetSuite role

The permissions on the role applied to your integration determine which saved searches, transactions, lists, and results you’ll be able to access in Prowork. Confirm the role has access to every object you plan to use before moving on. Missing permissions are one of the most common causes of support tickets later.
You’ll also need your own NetSuite user to have permissions to create new integrations, manage access tokens, and edit roles. These are needed to generate the credentials below, separately from whatever role/permissions you’re setting up for Prowork itself.
Recommended permissions, in addition to anything specific to your use case:

Transactions

  • Any specific transaction types you need (sales orders, purchase orders, transfer orders, etc.)
  • Find transaction

Reports

  • Any specific report types you need

Lists

  • Any specific lists you need (items, locations, companies, customers, etc.)
  • Perform search, persist search, and publish search

Setup

  • Log in using Access Tokens
  • SOAP Web Services (required for Pulling Data via Saved Search)
  • REST Web Services (required for Pulling Data via SuiteQL and Sending Data)

Custom Records

  • Any specific custom record objects you need
Make sure the web services only checkbox is selected on the role. This is under the Authentication section of the role record, not the Permissions tabs.
NetSuite role record with Web Services Only Role checked and the Transactions/Reports/Lists/Setup/Custom Record permission tabs visible
Watch a video walkthrough of this setup:

Authorizing token-based access (Pulling Data via Saved Search and Sending Data)

Pulling Data via Saved Search and Sending Data both use token-based authentication and share the exact same NetSuite integration record and credentials. You only need to do this setup once. You’ll create an integration record and an access token in NetSuite, then enter the resulting credentials in Prowork.

Creating a NetSuite integration

Follow this path in the NetSuite UI: Setup > Integration > Manage Integrations > New
1

Name the integration

Specify an integration name and ensure the status is set to Active.
2

Enable token-based authentication

Under Authentication, check Token-Based Authentication.
3

Leave other options unchecked

Leave TBA: Issuetoken Endpoint and TBA: Authorization Flow unchecked.
4

Save the record

Save the record.
NetSuite Integration record with Token-Based Authentication enabled
Saving the record generates a Consumer Key and Consumer Secret. Record these immediately, since NetSuite only displays them once and they cannot be retrieved after you leave the page.
NetSuite Client Credentials shown once after saving the integration record

Creating a new access token

Once the role, user, and integration exist, generate the access token Prowork will authenticate with. Follow this path in the NetSuite UI: Setup > Users/Roles > Access Tokens > New Access Token
1

Select the integration, user, and role

Select the integration you created above, along with the desired user and role.
2

Save

Click Save.
The Token ID and Token Secret appear at the bottom of the page. As with the client credentials, record these immediately, since they disappear once you leave the page.
NetSuite Token ID and Token Secret shown once after creating the access token

Entering credentials in Prowork

1

Log in to Prowork

Log in to Prowork.
2

Add a Pull from NetSuite step

Add a Pull from NetSuite step onto your canvas. You can do this by describing what you want to Prowork’s chat, or by navigating to Integrations in the top left of your canvas and selecting Pull from NetSuite.
3

Open the step

Double-click into the step once it’s on the canvas to open it.
4

Authorize NetSuite

Click Authorize NetSuite on the left side of the step window.
5

Add a new account

Click Edit Accounts, then Add a new account.
6

Gather your credentials

Gather the Account ID, Consumer Key/Secret, and Token ID/Secret from the steps above.
7

Connect

Enter each credential and click Connect.
Connect your NetSuite account dialog for the Pull from NetSuite (Saved Search) step, showing Account ID, Consumer Key, Consumer Secret, Token ID, and Token Secret fields
This same authorization also covers Send to NetSuite. There’s no separate integration record or separate authorization step for it. The only extra requirement is a role permission: make sure your role has full access to REST Web Services (in addition to SOAP Web Services, which Pulling Data via Saved Search requires). This is already listed in the role permissions above; if you set up the role using that list, you’re covered.
REST Web Services and SOAP Web Services listed among a NetSuite role's Setup permissions
If you’re sending data, also confirm the role has sufficient permissions to create and/or update the specific objects you’re sending. Set the relevant permission’s access level to Full. For example, creating and updating sales orders requires: Transactions > Sales Orders > Full Access.
Permission level dropdown on a NetSuite role, with Full selected

Authorizing Pulling Data via SuiteQL

Pulling Data via SuiteQL uses OAuth 2.0 with Authorization Code Grant. This can live on the same NetSuite integration record as the token-based setup above, or on its own, depending on what you’re setting up:
  • Already have the token-based integration set up above, and want to add SuiteQL? Go back to that same integration record (Setup > Integration > Manage Integrations) and additionally enable the OAuth 2.0 settings below on it.
  • Setting up SuiteQL only, from scratch? Create a new integration record (Setup > Integration > Manage Integrations > New) and just check the OAuth 2.0 boxes below. You don’t need Token-Based Authentication checked unless you’re also using Pulling Data via Saved Search or Sending Data.
Either way, the OAuth settings themselves are the same:
1

Enable Authorization Code Grant

Under OAuth 2.0, check Authorization Code Grant.
2

Set the scope

Under Scope, check REST Web Services.
3

Set the Redirect URI

Set the Redirect URI to https://parabola.io/api/auth/netsuite_oauth/callback.
4

Save

Save to generate your Client ID and Client Secret, shown only once.
NetSuite integration record with OAuth 2.0 Authorization Code Grant checked and REST Web Services selected as the scope

Connecting in Prowork

1

Add a Pull from SuiteQL step

Add a Pull from SuiteQL step to your flow.
2

Authorize

Click Authorize and enter your Account ID, Client ID, and Client Secret.
Prowork "Connect your NetSuite account" OAuth form for the Pull from SuiteQL step
The role behind this integration determines what data is accessible. Make sure the role has at least View permission for the NetSuite record types you plan to query.

Authorizing with Client Credentials (Private Key JWT)

NetSuite’s OAuth 2.0 Authorization Code tokens expire after 7 days and can’t be refreshed, so connections that use them need re-authorizing every week. NetSuite’s Client Credentials (Machine to Machine) flow avoids this. Prowork signs each token request with a private key you control and gets a fresh access token on every run, with nothing for anyone to re-authorize. Use this with Prowork’s API steps pointed at NetSuite’s REST API.

Step 1: Generate a certificate and private key

Create an X.509 certificate and matching private key. NetSuite accepts certificates valid for up to 2 years. For example, with OpenSSL:
Keep private-key.pem somewhere secure. You’ll paste it into Prowork in Step 4. You’ll upload certificate.pem to NetSuite in Step 3.

Step 2: Enable Client Credentials on your integration record

Go to Setup > Integration > Manage Integrations and open your integration record, or create a new one.
1
Under OAuth 2.0, check Client Credentials (Machine to Machine) Grant.
2
Under Scope, check REST Web Services.
3
Save, and record the Client ID shown once after saving.

Step 3: Map the certificate in NetSuite

Go to Setup > Integration > OAuth 2.0 Client Credentials (M2M) Setup and click Create New.
1
Select the Entity (the user Prowork should run as), the Role from Creating a NetSuite role, and the Application (your integration record).
2
Upload certificate.pem.
3
Save, and record the Certificate ID.

Step 4: Connect in Prowork

1
Add a Pull from an API, Send to an API, or Enrich with API step and open its settings.
2
Under Authentication, choose Expiring Access Token, then set Authentication Method to Private Key JWT.
3
Set the Authentication Token Request URL to https://<ACCOUNT_ID>.suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token, replacing <ACCOUNT_ID> with your account ID (for sandboxes, use the dash format, for example 1234567-sb1).
4
Enter your Private Key (the contents of private-key.pem), Key ID (the Certificate ID from Step 3), and Client ID (from Step 2). Set Signing Algorithm to PS256 and Scope to rest_webservices.
5
Click Authorize.
The connection doesn’t need re-authorizing, but the certificate itself expires on the date you set in Step 1, at most 2 years out. Before then, generate a new certificate, add it in the M2M setup, and update the private key in Prowork.
For more on the Expiring Access Token form, see Using Expiring Access Tokens in Prowork.

Sharing your NetSuite connection with teammates

You don’t need every teammate to generate their own NetSuite tokens. Once one person has authorized a NetSuite connection in Prowork, that authentication can be shared with specific teammates or the whole team:
1

Open Edit Accounts

On the Pull from NetSuite (or Send to NetSuite) step, click Edit Accounts.
2

Open sharing settings

Find the authorization, click the three dots (…), then Sharing settings.
3

Choose who can use it

Share it with a specific teammate or the whole team, and choose whether they can use it or also edit it.
Flows using a shared authentication stay in sync. If the connection is re-authorized (for example, after rotating tokens in NetSuite), every flow using it picks up the refreshed credentials automatically. See Manage personal credentials for the full walkthrough on sharing authentications across your team. If you’d rather each teammate authenticate independently (for per-person auditability on the NetSuite side), have each person create their own access token against their own NetSuite user, using the same web services only role from Creating a NetSuite role above.

Helpful tips

  • Token-based and OAuth 2.0 connections expire. When one lapses, steps on that connection tell you to reconnect the account. Open the step, click Edit accounts, and re-enter the credentials. This is expected NetSuite behavior, not a failure in your flow. If you’re connecting through Prowork’s API steps and want to avoid re-authorizing, use Client Credentials with Private Key JWT instead.

Troubleshooting authorization

Authentication fails / connection won’t authorize (token-based: Pulling Data via Saved Search, Sending Data)
  • Confirm the role has Log in using Access Tokens and SOAP Web Services set to Full.
  • If connecting to a Sandbox account, use the Sandbox account ID and confirm it exactly matches the URL you see when logging in to NetSuite (e.g. 12345-sb1).
For OAuth-based authorization failures (Pulling Data via SuiteQL), Log in using Access Tokens doesn’t apply. Check the REST Web Services scope instead, per Authorizing Pulling Data via SuiteQL above.
Example: “Settings error” with a getaddrinfo ENOTFOUND message
Prowork Settings error showing "getaddrinfo ENOTFOUND fewgr.suitetalk.api.netsuite.com"
This means Prowork couldn’t resolve NetSuite’s API address for the Account ID entered, almost always because the Account ID is mistyped, uses the wrong casing/dash format, or is missing the sandbox suffix (e.g. entering 1234567 instead of 1234567-sb1). Double-check the Account ID against your NetSuite URL and re-authorize.
Last modified on September 22, 2026