See what the NetSuite integration can do →
Integrate iPaaS.com with NetSuite to enable seamless data synchronization for customers, products and inventory, transactions, and related records. This article is the ongoing reference for the connection — what each setting does, how authentication works, and what is required. For the first-time, step-by-step setup (including the NetSuite bundle, certificate generation, and the supporting customizations), see NetSuite Installation Instructions.
How to Connect
Prerequisites
Before you can connect to NetSuite, the prerequisite IPaaS webhooks bundle must be installed in your NetSuite account — see The NetSuite iPaaS.com Bundle. The bundle provisions the webhook scripts, custom fields, and custom records the integration relies on.
Configuration Details
You will need the following to connect (all are produced during the NetSuite setup described in NetSuite Installation Instructions):
Account ID: your NetSuite account identifier, taken from your NetSuite dashboard URL.
API URL: the base URL for NetSuite REST access, in the format
https://{AccountID}.suitetalk.api.netsuite.com/services/rest/record/v1.Consumer ID: generated during NetSuite OAuth 2.0 Machine-to-Machine (M2M) authentication setup.
Certificate ID: generated when you create and upload your OpenSSL certificate in NetSuite.
Certificate Private Key: the private key from your OpenSSL certificate.
Environment: only Production is supported.
Configure Subscription Settings
Configure your subscription in iPaaS.com using the fields below. The connection fields at the top are required to establish the NetSuite connection. The remaining fields are optional operational presets — they ship with the integration and only need to be set (or changed from their shipped value) when you use the feature each one controls. Fields are grouped by area: connection, inventory, product and pricing, transactions, and gift certificates.
Field | Description | Required | Example |
Name | A unique name for the subscription. | Yes | NetSuite - Production |
Versions | Select the latest version from the dropdown. | Yes | v1.0 |
API URL | Base URL for NetSuite REST access. | Yes | |
Account ID | Unique identifier for your NetSuite account. | Yes | td2819981 |
Consumer ID | Client (consumer) ID from NetSuite OAuth 2.0 Machine-to-Machine (M2M) setup. | Yes | Provided after setup |
Certificate ID | ID of the OpenSSL certificate you created and uploaded in NetSuite. | Yes | Provided after setup |
Certificate Private Key | Private key from your OpenSSL certificate. | Yes | Provided after setup |
Environment | Deployment environment. Only Production is currently supported. | No | Production |
Inventory Search Days | Polling window, in days, used when checking NetSuite for inventory updates. | No | 1 |
Inventory SuiteQL Table Name | Name of the NetSuite SuiteQL table the integration queries for inventory balances, for example InventoryBalance or BinInventoryBalance. Standalone inventory updates land each location's total across all of the item's lots and bins. Required if you synchronize inventory — inventory transfers fail with an error when it is blank. | Conditional (required to sync inventory) | InventoryBalance |
Compare With QtyOnHand | Set to true to compare quantities against NetSuite's Quantity On Hand before applying an inventory update. | No | true |
USE BINS (TRUE/FALSE) | Set to true to process bin-level inventory for bin-managed items: each item's per-bin quantities are captured into the NetSuite Bin … custom fields, and each location's inventory quantity is the sum of the item's bins there (the location's quantity when the item has no bins). | No | false |
Poll Time Adjustment | A whole number of hours to shift the inventory polling window back, correcting for a time-zone difference between your NetSuite account and iPaaS.com. iPaaS.com records each inventory poll in UTC, while NetSuite records an item's last inventory-change time in your NetSuite account's time zone; when the two differ, a recent change can fall just outside the window a poll checks and be missed until the item changes again. Set it to the number of hours your NetSuite account time is behind UTC. Leave blank unless inventory updates are being missed. See Correcting missed inventory updates below. | No | 4 |
CATEGORY LIST ID | Script ID of the NetSuite custom list that holds your product categories. Set it to capture product categories (and their parent categories) onto products. Name each list value with its category number and name, for example 3.1-Shirts. | No | customlist_ag_commerce_categories_list |
CHECK PRODUCT DUPLICATION BY | How an incoming product is matched to an existing NetSuite item. Leave blank to match by SKU only; set it to combine SKU and name (for example Sku+Name, or a value beginning with Name+ to match on name first). | No | Sku+Name |
Customer Pricing Source | Controls whether an individual customer's NetSuite pricing group, price level, or one-then-the-other is captured into iPaaS.com customer categories: PRICE_GROUP_ONLY (default) uses the pricing group only; PRICE_LEVEL_ONLY uses the price level only (with the Default Price Level fallback below); GROUP_THEN_LEVEL uses the pricing group, otherwise the price level; LEVEL_THEN_GROUP uses the price level, otherwise the pricing group. See NetSuite Customer To iPaaS.com Mapping Documentation. | No | PRICE_GROUP_ONLY |
Customer Company Pricing Source | The same pricing-source choice, applied to company (organization) customers. | No | GROUP_THEN_LEVEL |
Default Price Level | Price level captured as a fallback when a customer has no specific price level; used with the price-level pricing sources above. | No | Base Price |
Price List Field Separator | Character that separates the fields within a single price entry when price lists are formatted. | No | , |
Price List Record Delimiter | Character that separates one price entry from the next when price lists are formatted. | No | | |
Sales Order Duplicate Matching Field | The NetSuite Sales Order field the integration queries to find an existing order by its transaction number, preventing duplicate orders. Set it to a queryable field such as otherRefNum. Leave blank to rely only on the stored external-ID link. | No | otherRefNum |
Gift Certificate Poll Search Days | How many days back the first gift certificate poll looks, before any poll has been recorded. Later polls continue from the previous poll. Defaults to 5 when left blank. If gift certificate updates are being missed, see Correcting missed gift certificate updates below. | No | 5 |
Exclude RMA lines by Internal Item IDs | No longer used. This setting used to list NetSuite internal item IDs to leave off a Return Merchandise Authorization (RMA) when the integration added the order's non-returned items as zero-quantity lines. The integration now keeps only the returned items on the RMA (on both create and update), so there are no zero-quantity lines to exclude and this value has no effect. It can be left blank. | No | Leave blank |
Sub Customer Type Custom Field Id | The ID of a NetSuite customer custom field that records how each of a company's sub-customers relates to it. When set, a company transferred to iPaaS.com also records each of its sub-customers that has a value in this field as a relationship on the iPaaS.com company, with that value as the relationship type. Leave blank (the default) to not record sub-customers; company transfers then behave exactly as they do without it. Enter only the field's ID (letters, numbers, and underscores); any other value is ignored. See Recording a company's sub-customers below. | No | custentity_web_user_type |
Most of these presets ship with a starter value in the integration template. Review the ones for the features you use — inventory, product categories, pricing, and duplicate matching in particular — and replace any placeholder value with the value for your NetSuite account before go-live. If you are unsure of a setting's effect, consult your MiSP (Managed Integration Service Provider) or implementation partner before changing it on a live subscription.
Correcting missed inventory updates
If inventory changes in NetSuite are not consistently reflected in iPaaS.com, the cause is usually a time-zone difference between your NetSuite account and iPaaS.com. iPaaS.com timestamps each inventory poll in UTC, while NetSuite timestamps an item's last inventory-change in your NetSuite account's time zone. When those clocks differ, a change made shortly before a poll can fall just outside the window the poll checks and be skipped until the item changes again. The Poll Time Adjustment setting corrects this by shifting the polling window back by a fixed number of hours.
To determine and confirm the correct value:
Find your NetSuite time zone. In NetSuite, the account default is under Setup → Company → General Preferences → Time Zone. Each user's own time zone is under Home → Set Preferences → General → Time Zone — inventory-change times are read in the time zone of the user connected to iPaaS.com.
Compare it to UTC. The adjustment is the number of whole hours your NetSuite time is behind UTC — for example, US Eastern is about 4–5 hours and US Pacific about 7–8 hours behind UTC (the exact figure depends on daylight saving time).
Confirm it with your own data (optional). Add a formula mapping to your inventory Update To iPaaS.com mapping collection whose formula returns the current UTC time —
return DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm");— and map it to a field you can view in iPaaS.com. After an inventory sync, compare that UTC value to the same item's Last Quantity Available Change time in NetSuite; the whole-hour difference between them is your Poll Time Adjustment.Set the value in Poll Time Adjustment, then confirm the previously missed changes now transfer.
Because the value is a fixed whole number of hours, revisit it whenever daylight saving time changes your offset from UTC.
Correcting missed gift certificate updates
If gift certificate balances in iPaaS.com fall behind NetSuite — for example, a certificate redeemed in NetSuite still shows its full balance in iPaaS.com — the cause is usually the time zone of the NetSuite user connected to iPaaS.com. iPaaS.com records each gift certificate poll in UTC, and NetSuite reads the date range a poll asks for in that user's time zone. When the user's time zone is behind UTC, a gift certificate that changes within a few hours after a poll falls before the start of the next poll's range and is not captured. A missed certificate stays out of date until it changes again in NetSuite.
Gift certificate polling is corrected with a Filter on the gift certificate polling event, not with the Poll Time Adjustment setting, which applies to inventory only.
Find the time zone of the NetSuite user connected to iPaaS.com. Signed in to NetSuite as that user, open Home → Set Preferences → General → Time Zone, or ask your NetSuite administrator. Use that user's time zone, not your own: the times NetSuite shows you are in your own time zone.
Work out how many whole hours it is behind UTC. For example, US Eastern is 4–5 hours, US Central 5–6 hours, and US Pacific 7–8 hours behind UTC, depending on daylight saving time.
Add the filter to the polling event. In iPaaS.com, go to Dashboard / Integration Monitoring / Events, open the NetSuite gift certificate polling event, and add a Filter rule with the value adjustedHours=5, replacing 5 with your number of hours. Enter it exactly in that form: no spaces, a whole number. A filter in any other form is ignored, and the poll runs without the adjustment.
Confirm the result. Change a gift certificate in NetSuite, for example by redeeming part of its balance, and confirm the new balance reaches iPaaS.com within the next one or two polls.
Each poll then looks that many hours further back and further ahead. The recorded poll time is not changed, so the adjustment does not build up from poll to poll. Because consecutive polls overlap, a certificate can be read more than once; it is updated with the same values each time, which uses some additional NetSuite API calls but changes nothing else. A larger number than needed is safe for the same reason.
The filter only affects changes from the time it is added. A certificate that was missed earlier is captured the next time it changes in NetSuite; to bring it up to date immediately, run a Manual Sync with the gift certificate's internal ID.
Because the value is a fixed whole number of hours, revisit it whenever daylight saving time changes the user's offset from UTC.
Recording a company's sub-customers
In NetSuite, a customer can be a subcustomer of a company: its Parent Company field names the company it belongs to (see Oracle's Creating a Subcustomer Record). The integration can record each of a company's sub-customers on the company in iPaaS.com, labeled with how that sub-customer relates to the company, for example Authorized Buyer, Accounts Payable Contact, or Franchise Location. The label comes from a custom field you add to the NetSuite customer record, and the Sub Customer Type Custom Field Id setting tells the integration which field to read.
To set it up:
Create the custom field in NetSuite. Go to Customization > Lists, Records, & Fields > Entity Fields and create a new field (see Oracle's Creating Custom Entity Fields). Give it a label such as Web User Type and apply it to the Customer record. Set its Type to Free-Form Text to type each label freely, or to List/Record to choose from a fixed list. A Free-Form Text value is recorded exactly as typed; for a List/Record field, the name of the selected list value is recorded.
Copy the field's ID. Open the saved field and copy its ID exactly as NetSuite shows it, for example custentity_web_user_type. Upper or lower case both work.
Enter the ID in iPaaS.com. In the integration's Subscription Settings in iPaaS.com, set Sub Customer Type Custom Field Id to that ID.
Fill in the field on each sub-customer you want recorded. Enter or select the relationship label, such as Authorized Buyer. Sub-customers you leave blank are not recorded as sub-customer relationships.
Transfer the company. The next time the company transfers to iPaaS.com (Manual Sync or an automatic event), its sub-customers appear on the iPaaS.com company as relationships.
Keep these points in mind:
Only a company's direct sub-customers are recorded. A sub-customer's own sub-customers are recorded when that sub-customer is transferred as a company.
Sub-customers are imported for you. A sub-customer that is not yet in iPaaS.com is imported automatically before the company: it is linked to an existing iPaaS.com customer or company with the same email address, or otherwise transferred to iPaaS.com.
A sub-customer iPaaS.com cannot import is skipped. For example, iPaaS.com requires an email address on every customer, so an individual sub-customer without one is not recorded. The reason is written to the company transfer's activity log as a warning (NETS-EXTN-1020), and the company and its other relationships still transfer. Correct the sub-customer in NetSuite, then transfer the company again.
The ID must match a field on the NetSuite customer record. An ID NetSuite does not recognize makes company transfers fail with NETS-EXTN-1018 (see NetSuite Error Messages); correct the setting or clear it, then transfer the company again.
A value that is not a valid field ID is ignored. Entering anything other than letters, numbers, and underscores (for example a label with spaces) has the same effect as leaving the setting blank.
Every sub-customer relationship is marked primary by default, as is the company's parent relationship. Change the IsPrimary mapping on Add/Update NetSuite Company Sub Customer Relationship TO iPaaS.com to fit your implementation, for example to false so only the parent is primary.
The collections involved are described in NetSuite Customer Company To iPaaS.com Mapping Documentation.
Authentication Methods
NetSuite authentication uses OAuth 2.0 Client Credentials (Machine-to-Machine) with a client certificate:
A NetSuite integration record is created with Client Credentials (M2M) Grant, RESTlets, and REST Web Services enabled.
An OpenSSL certificate is generated and uploaded to NetSuite's OAuth 2.0 Client Credentials (M2M) Setup, mapped to the integration application and an Administrator role.
NetSuite returns a Consumer ID, Certificate ID, and Certificate Private Key, which are entered into the iPaaS.com Subscription Settings above. iPaaS.com uses them to obtain an access token for each NetSuite REST call.
The complete, step-by-step certificate generation and upload procedure (with screenshots) is in NetSuite Installation Instructions. To rotate credentials, generate a new certificate, upload it in NetSuite, and update the Certificate ID and Certificate Private Key in the Subscription Settings.
Initialization Support
The following reference data types support initialization and can be transferred in bulk:
Alternate Id Type TO iPaaS.com
Customer Category TO iPaaS.com
Location TO iPaaS.com
Payment Method TO iPaaS.com
Shipping Method TO iPaaS.com
Other record types — customers, products and the other item types, and transactions — are not bulk-initialized; they transfer on demand from the Manual Sync page or on their create/update events. The Alternate Id Type Created and Product Category Created events listed in the subscription's Inbound Data Flows are used by the integration itself: alternate ID types are transferred with the first event during initialization, and a product's category with the second when it is transferred ahead of the product. NetSuite does not send these events, so subscribing to them has no effect. See NetSuite Known Limitations for details.
Throttling
Throttling ensures NetSuite's API is not overwhelmed by excessive API calls, preserving system performance during heavy data transfers. The throttling fields are required, but their values are pre-populated by the integration settings. For more details, see Subscription Configuration – Edit.

