Oracle NetSuite

Oracle NetSuite is a cloud ERP platform for financials, order management, inventory, procurement, CRM, and analytics. Sim connects through SuiteTalk REST Web Services using NetSuite's OAuth 2.0 client-credentials flow; it does not require a RESTlet or a user-interactive login.

Before you connect

  1. In Setup → Company → Enable Features, enable REST Web Services and OAuth 2.0. Enable SuiteAnalytics Workbook if you will list or execute datasets.
  2. Use a dedicated integration role. Grant it REST Web Services and Log in using OAuth 2.0 Access Tokens, plus the record, transaction, and subsidiary permissions needed by your workflows. Dataset access also requires SuiteAnalytics Workbook permission and access to the selected datasets. Oracle recommends a purpose-built role instead of Administrator. See Set Up OAuth 2.0 Roles and Prerequisites and Setup for REST Web Services.
  3. Create or edit an integration record under Setup → Integration → Manage Integrations. Enable Client Credentials (Machine to Machine) Grant and the REST Web Services OAuth 2.0 scope, then save the Client ID. See Create Integration Records for Applications to Use OAuth 2.0.
  4. Create either a 3072- or 4096-bit RSA key pair or a P-256, P-384, or P-521 EC key pair and certificate using your organization's certificate process. Sim signs RSA assertions with PS256 and selects ES256, ES384, or ES512 for the corresponding EC curve. Keep the PEM private key secure; upload only the public certificate to NetSuite, and plan renewal because NetSuite limits certificate validity to two years. See OAuth 2.0 Client Credentials Certificate Conditions.
  5. Go to Setup → Integration → Manage Authentication → OAuth 2.0 Client Credentials (M2M) Setup. Create a mapping for the integration's entity, role, application, and public certificate, then save the generated Certificate ID. Oracle requires this mapping separately in production, sandbox, and Release Preview, and a sandbox refresh clears it. See OAuth 2.0 Client Credentials Setup.
  6. In Setup → Company → Company Information → Company URLs, copy the SuiteTalk (SOAP and REST Web Services) URL for the current environment. Production, sandbox, and Release Preview environments each have their own authoritative URL.
  7. Add a NetSuite block, open NetSuite Account, and create a reusable credential with the SuiteTalk URL, Client ID, Certificate ID, and matching private key. See Oracle NetSuite service-account setup for the complete setup and rotation workflow.

Usage notes

  • Record fields and supported actions vary by account, enabled features, custom records, forms, role, and permissions. Use List Record Types and Get Record Metadata before constructing create, update, upsert, action, or transform bodies. Sim intentionally accepts JSON for these dynamic record shapes instead of guessing a fixed schema.
  • Select the stored NetSuite account once per block. Record Type and known-job Async Task fields use account-backed pickers; switch a field to Advanced mode to type or reference an identifier that is not present in the bounded picker result. Enter SuiteAnalytics dataset IDs manually after finding them with List SuiteAnalytics Datasets.
  • Create Record without replace returns NetSuite's HTTP 204 response with no body; with replace, it returns HTTP 201 and the created record object. Both cases expose the validated location returned by NetSuite. The replace option applies to create and update, not upsert.
  • Paged operations return one page only. The default limit is 100, the maximum is 1,000, and the offset must be a non-negative multiple of the limit. Sim never fetches later pages automatically. Requests must stay within NetSuite's first 100,000 results and first 1,000 pages.
  • Homogeneous batch operations accept 1–100 records of one record type and always run asynchronously. NetSuite processes records in parallel, and individual tasks can fail independently; submission is not an all-or-none transaction. Preserve the returned location or jobId, use Get Async Status with Job Status until the job completes, choose List Tasks to collect task IDs, check each ID with Task Status, then use completed IDs with Get Async Operation Result. Canceling or timing out the local Sim request does not cancel a batch that NetSuite has already accepted.
  • Sim gives the OAuth token exchange and each SuiteTalk request up to 30 seconds. A timed-out request fails locally, but a mutation that NetSuite already accepted may still finish remotely.
  • Sim limits each materialized request body and successful SuiteTalk response to 16 MiB. Request JSON is also limited to 100 levels of nesting and 100,000 JSON values. Split work into smaller pages or batches when a request or response would exceed these ceilings, even if NetSuite would otherwise accept the payload.
  • When attaching a contact with a role, provide either the role's internal ID or external ID, not both. File attachments do not use a contact role.
  • Attach/Detach, homogeneous batch operations, Get Record Form, and Get Select Options require a NetSuite 2026.1-compatible account. Oracle introduced these SuiteTalk REST capabilities in NetSuite 2026.1.
  • Get Governance Limits returns data only for roles allowed by NetSuite; Oracle documents Administrator access for that operation.
  • This integration does not include a trigger. SuiteTalk has no generic API for registering record-change webhooks; polling or customer-deployed SuiteScript requires a separate design.

Usage Instructions

Connect a reusable Oracle NetSuite service-account credential to SuiteTalk REST Web Services. Read and write account-specific records, execute SuiteQL and SuiteAnalytics datasets, run asynchronous record batches, inspect metadata, and monitor async jobs.

Actions

NetSuite List/Search Records

List one page of a NetSuite record collection, optionally filtered with a q expression.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
qstringNoNetSuite record collection filter expression
limitnumberNoResults to return in this page (1-1000; default 100)
offsetnumberNoZero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonOne documented NetSuite collection page
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target
itemsarrayMatching record references in this page
idstringNetSuite record ID
linksarrayOracle HATEOAS links for the record
relstringLink relationship
hrefstringLink target
countnumberNumber of items in this page
hasMorebooleanWhether another page is available
offsetnumberOffset of this page
totalResultsnumberTotal number of matching items

NetSuite Get Record

Retrieve one NetSuite record by internal or external ID.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
fieldsstringNoComma-separated record fields to return
expandstringNoComma-separated resources to expand when supported by the record metadata
expandSubResourcesbooleanNoWhether to expand sublists and subrecords in the response

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonNetSuite response body; record fields are account-specific and dynamic

NetSuite Create Record

Create a NetSuite record using the account-specific record metadata schema.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
bodyjsonYesRecord fields matching the account-specific NetSuite metadata schema
replacestringNoComma-separated sublists whose default lines should be replaced

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for standard HTTP 204 creation; replacement creation can return the documented HTTP 201 post-state object
locationstringNewly created record URL from the Location response header

NetSuite Update Record

Update fields on an existing NetSuite record with PATCH.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
bodyjsonYesRecord fields matching the account-specific NetSuite metadata schema
replacestringNoComma-separated sublists whose existing lines should be replaced

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 204 No Content response
locationstringUpdated record URL from the Location response header

NetSuite Upsert Record

Create or update a NetSuite record by external ID with PUT.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
externalIdstringYesExternal ID without the eid: prefix
bodyjsonYesRecord fields matching the account-specific NetSuite metadata schema

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 204 No Content response
locationstringURL of the created or updated record, when NetSuite returns a Location header

NetSuite Delete Record

Delete one NetSuite record by internal or external ID.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 204 No Content response

NetSuite Get Subresource

Retrieve a record sublist, subrecord, referenced record, or nested subresource.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
subresourcePathstringYesSlash-separated subresource path, such as item or item/1/inventoryDetail

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonNetSuite response body; record fields are account-specific and dynamic

NetSuite Get Record Form

Return a prepopulated create form, or an edit form when a record ID is supplied.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringNoExisting record ID; omit to request a create form
bodyjsonNoRecord fields matching the account-specific NetSuite metadata schema
fieldsstringNoComma-separated record fields to return
expandstringNoComma-separated resources to expand when supported by the record metadata
expandSubResourcesbooleanNoWhether to expand sublists and subrecords in the response

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonNetSuite response body; record fields are account-specific and dynamic

NetSuite Get Select Options

Retrieve valid select values for one or more fields on a new or existing record.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringNoExisting record ID; omit to evaluate options for a new record
fieldsstringYesComma-separated select field IDs
qstringNoOptional select-option filter using CONTAIN, IS, or START_WITH
bodyjsonNoRecord fields matching the account-specific NetSuite metadata schema
limitnumberNoResults to return in this page (1-1000; default 100)
offsetnumberNoZero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonSelect-options response keyed by requested field ID; each dynamic field contains an _selectOptions object with links, items, count, offset, hasMore, and totalResults
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target

NetSuite Attach Record or File

Attach a contact or file to another NetSuite record.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
relatedTypestringYesRelated resource type: contact or file
relatedIdstringYesInternal ID, or external ID prefixed with eid:, of the contact or file
roleIdstringNoOptional contact role internal ID
roleExternalIdstringNoOptional contact role external ID

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 204 No Content response

NetSuite Detach Record or File

Detach a contact or file from another NetSuite record.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
relatedTypestringYesRelated resource type: contact or file
relatedIdstringYesInternal ID, or external ID prefixed with eid:, of the contact or file

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 204 No Content response

NetSuite Execute Record Action

Execute a supported NetSuite record action such as approve, reject, or confirm.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
actionstringYesNetSuite record action ID without the @ prefix
bodyjsonNoParameters accepted by the selected NetSuite record action

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonDocumented NetSuite record-action response
resultbooleanTrue when NetSuite completed the record action

NetSuite Transform Record

Transform a supported source record into another NetSuite record type.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
recordIdstringYesNetSuite internal ID or an external-ID reference beginning with eid:
targetRecordTypestringYesTarget record type supported by the source record metadata
bodyjsonNoRecord fields matching the account-specific NetSuite metadata schema

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 204 No Content response
locationstringURL of the transformed record, when NetSuite returns a Location header

NetSuite Batch Get Records

Submit an asynchronous request to retrieve up to 100 records of one type.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
idsstringYesUp to 100 comma-separated internal IDs or eid: external-ID references
fieldsstringNoComma-separated record fields to return
expandstringNoComma-separated resources to expand when supported by the record metadata
expandSubResourcesbooleanNoWhether to expand sublists and subrecords in the response
idempotencyKeystringNoOptional unique idempotency key for retrying the asynchronous request

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 202 Accepted submission response
locationstringAsynchronous job URL from the Location response header
jobIdstringAsynchronous job ID parsed from the Location header

NetSuite Batch Create Records

Submit an asynchronous batch that creates up to 100 records of one type.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
itemsarrayYesArray of 1-100 records matching the account-specific metadata schema
idempotencyKeystringNoOptional unique idempotency key for retrying the batch

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 202 Accepted submission response
locationstringAsynchronous job URL from the Location response header
jobIdstringAsynchronous job ID parsed from the Location header

NetSuite Batch Update Records

Submit an asynchronous batch that updates up to 100 records of one type.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
itemsarrayYesArray of 1-100 records; every item must include an internal or external ID
idempotencyKeystringNoOptional unique idempotency key for retrying the batch

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 202 Accepted submission response
locationstringAsynchronous job URL from the Location response header
jobIdstringAsynchronous job ID parsed from the Location header

NetSuite Batch Upsert Records

Submit an asynchronous batch that creates or updates up to 100 records by external ID.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
itemsarrayYesArray of 1-100 records; every item must include externalId
idempotencyKeystringNoOptional unique idempotency key for retrying the batch

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 202 Accepted submission response
locationstringAsynchronous job URL from the Location response header
jobIdstringAsynchronous job ID parsed from the Location header

NetSuite Batch Delete Records

Submit an asynchronous request to delete up to 100 records of one type.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
idsstringYesUp to 100 comma-separated internal IDs or eid: external-ID references
idempotencyKeystringNoOptional unique idempotency key for retrying the batch

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonEmpty for the documented HTTP 202 Accepted submission response
locationstringAsynchronous job URL from the Location response header
jobIdstringAsynchronous job ID parsed from the Location header

NetSuite Execute SuiteQL

Execute one page of a SuiteQL query through SuiteTalk REST web services.

Input

ParameterTypeRequiredDescription
querystringYesSuiteQL SELECT query; use a complete unique ORDER BY when retrieving multiple pages
limitnumberNoResults to return in this page (1-1000; default 100)
offsetnumberNoZero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonOne documented NetSuite collection page
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target
itemsarrayItems in this page; item fields depend on the record, query, or dataset
countnumberNumber of items in this page
hasMorebooleanWhether another page is available
offsetnumberOffset of this page
totalResultsnumberTotal number of matching items

NetSuite List SuiteAnalytics Datasets

List one page of SuiteAnalytics Workbook datasets available to the authenticated role.

Input

ParameterTypeRequiredDescription
limitnumberNoResults to return in this page (1-1000; default 100)
offsetnumberNoZero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonOne documented NetSuite collection page
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target
itemsarrayItems in this page; item fields depend on the record, query, or dataset
countnumberNumber of items in this page
hasMorebooleanWhether another page is available
offsetnumberOffset of this page
totalResultsnumberTotal number of matching items

NetSuite Execute SuiteAnalytics Dataset

Execute one page of a standard or custom SuiteAnalytics Workbook dataset.

Input

ParameterTypeRequiredDescription
datasetIdstringYesSuiteAnalytics dataset script ID
limitnumberNoResults to return in this page (1-1000; default 100)
offsetnumberNoZero-based result offset; must be divisible by limit and stay within the first 100,000 results and 1,000 pages

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonOne documented NetSuite collection page
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target
itemsarrayItems in this page; item fields depend on the record, query, or dataset
countnumberNumber of items in this page
hasMorebooleanWhether another page is available
offsetnumberOffset of this page
totalResultsnumberTotal number of matching items

NetSuite List Record Types

List record types exposed to the authenticated role by the REST metadata catalog.

Input

ParameterTypeRequiredDescription

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonNetSuite REST metadata catalog
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target
itemsarrayRecord types exposed to the authenticated role
namestringREST record type script ID
linksarrayOracle HATEOAS links for the response
relstringLink relationship
hrefstringLink target
mediaTypestringMedia type advertised for the linked metadata resource

NetSuite Get Record Metadata

Retrieve account-specific metadata for one NetSuite record type.

Input

ParameterTypeRequiredDescription
recordTypestringYesNetSuite REST record type script ID, such as customer or salesOrder
formatstringNoMetadata representation: default, openapi, or json_schema

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonNetSuite response body; record fields are account-specific and dynamic

NetSuite Get Async Status

Retrieve job status, list job tasks, or retrieve one task status.

Input

ParameterTypeRequiredDescription
jobIdstringYesAsynchronous job ID
viewstringNoRetrieve job status, list tasks for the job, or retrieve one task status
taskIdstringNoTask ID; required when view is task

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonDocumented NetSuite asynchronous job, task collection, or task status
completedbooleanWhether processing has completed
endTimestringTask completion time
idstringAsynchronous job or task ID
progressstringCurrent task progress state
startTimestringTask start time
countnumberNumber of task collection entries returned
itemsarrayCollection entries containing links to one or more asynchronous tasks
linksarrayLinks to individual tasks
relstringLink relationship
hrefstringLink target
linksarrayHATEOAS links for the job or task collection
relstringLink relationship
hrefstringLink target
taskobjectLink container for the tasks belonging to this asynchronous job
linksarrayLinks to the job task collection
relstringLink relationship
hrefstringLink target

NetSuite Get Async Operation Result

Retrieve the provider response for one task within a completed asynchronous job.

Input

ParameterTypeRequiredDescription
jobIdstringYesAsynchronous job ID
taskIdstringYesTask ID within the asynchronous job

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonResult payload for the submitted asynchronous operation; record fields are account-specific and dynamic

NetSuite Get Server Time

Retrieve the current UTC time from the NetSuite server.

Input

ParameterTypeRequiredDescription

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonNetSuite server time response
serverTimestringCurrent NetSuite server time in UTC

NetSuite Get Governance Limits

Retrieve REST web-services concurrency limits for the NetSuite account and integration; NetSuite requires an Administrator role.

Input

ParameterTypeRequiredDescription

Output

ParameterTypeDescription
statusnumberHTTP status returned by NetSuite
datajsonDocumented NetSuite governance limits
accountConcurrencyLimitnumberAccount concurrency limit
accountUnallocatedConcurrencyLimitnumberAccount concurrency not allocated to integrations
integrationConcurrencyLimitnumberConcurrency allocated to this integration
integrationLimitTypestringLimit assignment: integrationSpecific, accountLimit, or internal

On this page