ERP & Enterprise Systems

NetSuite connector

Create, update, and transform NetSuite records from any Neblex workflow or agent, from a single customer lookup to a full order-to-cash chain, with SuiteQL and SuiteAnalytics reads and RESTlet calls for your own logic.
OAuth 2.0 with a certificate
Authentication
REST, SuiteQL, RESTlet
API surface
All standard plus custom records
Records supported
1 polled trigger
Change events

Overview

The NetSuite connector gives a Neblex workflow or agent access to a NetSuite account through SuiteTalk REST: read records with SuiteQL and SuiteAnalytics datasets, write and update any record type the role permits, and use NetSuite's own record transformation to turn a sales order into an invoice or an item fulfillment without rebuilding the record by hand.

  • Works against production, sandbox, and Release Preview accounts, one connection each
  • Describe a record type and List record types read the metadata on demand, including custom records and custom fields
  • Upsert by external ID makes a write safe to repeat: a re-fired trigger updates the record instead of creating a second one
  • One connector powers deterministic workflows, agent tool calls, and scheduled sync jobs, all in the same run history

Why teams use the NetSuite connector

The three jobs this connector is picked for most often, and what each one gets you.

  • Run order-to-cash without rekeying. A won deal or a paid order becomes a NetSuite customer, sales order, and invoice, with large orders approved by a person first.
  • Get NetSuite data out on a schedule. SuiteQL queries load transactions and balances into a warehouse incrementally, on the last modified date.
  • Give finance an assistant with guardrails. An AI agent answers questions from SuiteQL reads, while anything that writes waits for a person to approve it.

Worked example

A real flow finance teams turn on early, with the actual step-level detail.

Approved CRM opportunity to a posted NetSuite invoice, with a value gate

A closed-won opportunity in the CRM becomes a NetSuite customer, sales order, and invoice. Orders above a threshold pause for controller approval before anything posts.

  1. Trigger: the CRM opportunity trigger fires on a new or changed opportunity, and a Filter continues only when it is Closed Won.
  2. Customer: Upsert a customer keyed on an external ID from the CRM account, mapping account.name → companyName, account.billing_country → addressbook.country, account.terms → terms, account.subsidiary_code → subsidiary.
  3. Gate: if Amount is 50,000 or more, a Wait for form step sends the controller an approval task with the order summary. On reject, stop and post the reason back to the opportunity.
  4. Order: Upsert a sales order keyed on the opportunity ID, mapping entity from the customer, otherRefNum → PO number, and each opportunity line to an item line with line.sku → item, line.quantity → quantity, line.unit_price → rate.
  5. Invoice: Transform a record from the sales order to invoice, so NetSuite carries the lines and tax forward under its own rules.
  6. Close the loop: write the NetSuite invoice internal ID and number back to the opportunity, and post the invoice link to the deal channel in Slack.

Example flows

Common patterns other teams start from with this connector.

  • Quote-to-cash sync. Closed-won opportunities flow from the CRM to CPQ to NetSuite billing, with no rekeying between systems. (Sales and RevOps)
  • Store order to ERP. Paid Shopify orders become NetSuite sales orders, with new shoppers created as customers and fulfillment status flowing back to the store. (E-commerce ops)
  • Payment reconciliation. Every paid Stripe invoice is matched to its open NetSuite invoice and recorded as a customer payment, with unmatched items sent to a person for review. (Finance)
  • ERP to warehouse. Transactions, balances, and custom records sync into Snowflake on a schedule, with an incremental filter on the last modified date. (Data)

Supported objects

All standard record types the connected role can access are supported, through typed operations for the common records and generic record operations for the rest.

Commonly used standard records

Customer, Contact, Vendor, Sales Order, Invoice, Cash Sale, Estimate, Item Fulfillment, Purchase Order, Vendor Bill, Credit Memo, Customer Payment, Journal Entry, Inventory Item, Non-Inventory Item, Assembly Item, Subsidiary, Employee

Custom records (any customrecord type) and custom fields work through the generic record operations, SuiteQL joins, and the transform operation where NetSuite defines a transformation.

Security and access

The connection runs as a NetSuite integration role, so access is exactly what that role's permissions and restrictions allow, and no more.

  • OAuth 2.0 machine to machine. The connection uses your account ID, the integration's client ID, and a certificate ID with its private key. No password is stored.
  • Role and restriction aware. Reads and writes respect the role's permission level per record type, plus subsidiary, department, and class restrictions.
  • Encrypted credentials. The private key is stored encrypted and never shown again after you save the connection.
  • Run history. Every run shows each step's status and errors; record data from successful runs is kept when the flow is set to keep run data for replay.

Limits, as NetSuite publishes them

The shape of NetSuite's limits, as published at the time of writing. Verify the exact figures for your account; they change without notice.

  • Concurrent requests are capped by your account's concurrency governance, which varies by service tier and SuiteCloud licenses. Use Process in chunks for large loads, and turn on Retry on failure so a step rejected for concurrency tries again with backoff
  • SuiteQL reads return up to 1,000 rows per page before pagination
  • RESTlet calls are bounded by SuiteScript governance units per script execution
  • File attachments through REST are capped around 10 MB

What a flow can do in NetSuite

Create, update, and upsert customers, sales orders, invoices, and purchase orders, run SuiteQL queries and SuiteAnalytics datasets, batch create, update, upsert, and delete records, transform an estimate into a sales order, bill purchase orders and fulfil orders, call RESTlets for custom logic, and many more.

The connector has 271 operations, and 0% of them describe their output so later steps can map fields directly. Sign-in method: Connection details.

Every operation, with its inputs and outputs, is listed in the NetSuite connector reference.

How flows react to changes in NetSuite

The NetSuite connector has 1 ready-made trigger, checked by polling on the schedule you set, from every minute upward. A flow that starts from one of them runs with the changed record already in hand.

Frequently asked questions

Does the NetSuite connector support custom records and fields?

Yes. Custom records and custom fields work through the generic record operations and SuiteQL, and Describe a record type shows their fields.

Can it react to changes as they happen?

The connector has one polled trigger, Record Created or Changed, which checks a SuiteQL table on the schedule you set, from every minute upward, so a flow starts with the changed row in hand. For an immediate start, a script in your NetSuite account can call a Neblex Webhook trigger.

How does it handle NetSuite's record transformation model?

Transform a record calls NetSuite's own transformation, so a Sales Order becomes an Invoice or an Item Fulfillment under NetSuite's rules, with lines and tax carried forward rather than rebuilt.

Will a large sync trip governance for the rest of the account?

Keep large loads within your concurrency limit by processing them in chunks and scheduling them outside peak hours. With Retry on failure turned on, a step that NetSuite rejects for concurrency waits and tries again.

Does it work with sandbox accounts?

Yes. Each connection targets a production, sandbox, or Release Preview account, so you can build and test against a sandbox and promote the same flow to production through environments.

See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.