NetSuite Inventory Product From iPaaS.com Mapping Documentation
An inventory item can be created and updated in NetSuite from an iPaaS.com product. The integration maps the product SKU to the NetSuite Item ID along with the item name, units of measure, descriptions, pricing, and subsidiary, and — through its child collections — the item's options, option values, variants (matrix children), and per-location inventory quantities. Kit/Package and Assembly items are excluded (Assembly items have their own capture collections). Products transfer on demand from the Manual Sync page or automatically when product outbound triggers are enabled.
ID Format
Manual Sync ID Format
Enter the iPaaS.com record ID of the product on the Manual Sync page.
External ID Format
On a successful transfer, the NetSuite item's internal ID is recorded as the external-ID link, so subsequent transfers update the existing item. The product SKU is written to the NetSuite Item ID (the item's primary identifier).
Deleted Record Support
Outbound delete is not provided for products from iPaaS.com — there is no Product delete collection in this direction, so deleting a product in iPaaS.com does not remove the NetSuite item. (The reverse, removing an iPaaS.com product when the NetSuite item is deleted, is handled by the capture-side Delete NetSuite Product TO iPaaS.com collection.)
Custom Field Support
The integration writes NetSuite List/Record and Multi-Select custom fields using the FormatCustomFields conversion (the example mappings custitemmultiselectproduct and custitemlist demonstrate it). Several standard NetSuite item attributes are also supplied from iPaaS.com custom fields named NetSuite … (units, descriptions, manufacturer, UPC, subsidiary, price level). To use a custom field:
In NetSuite — create the field under Customization → Lists, Records & Fields (Item Fields), type List/Record or Multi-Select where applicable.
In iPaaS.com — create a matching custom field with the same NetSuite Field ID.
List/Record and Multi-Select values are supplied as "id" or "id|RefName"; supplying Multi-Select values replaces the existing set (the conversion cannot clear a field to empty).
Mapping Collection Status
Status: Enabled. Add and Update collections cover create and update for the item and each child.
Trigger Events: Create and Update, on the iPaaS.com product outbound triggers subscribed in Outbound Data Flows (in the iPaaS.com subscription configuration). Manual Sync is always available.
Duplicate or Conflicting Mappings
Update NetSuite Inventory Product FROM iPaaS.com — the Update variant of this write flow.
Assembly Items / Non-Inventory Items / Service Items capture collections (TO iPaaS.com) — these document the other NetSuite item types; this collection writes inventory items only (Kit/Package and Assembly are filtered out).
Collision handling
Matching uses the external-ID link plus the SKU written to the NetSuite Item ID. No iPaaS.com collision-handling method is configured for these collections.
Supported Child Collections
For a matrix (variant) product, the children build the matrix in this order:
Inventory Product Option FROM iPaaS.com and Inventory Product Option Value FROM iPaaS.com — the matrix option names and their values.
Inventory Product Variant FROM iPaaS.com — the variants (matrix children), each with its own Variant Option and Variant Inventory children.
Inventory Product Inventory FROM iPaaS.com — the item's per-location inventory quantities. Inventory can also be transferred on its own through Add/Update NetSuite Product Inventory FROM iPaaS.com Standalone (and …Product Variant Inventory FROM iPaaS.com Standalone for variants).
System Caveats
NetSuite Caveats
Item ID (SKU) is required. The transfer fails with an "Item Id is required" error if the SKU is not provided.
Units type must resolve.
UnitsType_Idmust map to a valid NetSuite units type, or the transfer errors.Subsidiary is required on OneWorld accounts, resolved from the NetSuite Subsidiary custom field.
Matrix items. For products that track variants,
MatrixType_Idcreates the NetSuite item as a matrix parent; the variants are sent through the variant child collection as matrix children.Matrix options and values must already exist in NetSuite. The Option, Option Value, and Variant Option collections resolve the option/value against the item's existing NetSuite matrix options and throw if it does not exist (e.g. "… matrix option name does not exist in NetSuite") — they link to existing matrix options rather than creating new option definitions.
Integration-Specific Caveats
Standalone inventory transfers create the parent product if needed. When the standalone Product Inventory or Product Variant Inventory collection runs for a product that is not yet linked, the integration matches it by SKU or attempts to create the parent product as a prerequisite ("Unable to create the product for inventory…" if that fails). This is distinct from the Locations prerequisite below, which must be synced first and is not auto-created.
Only the first/default price level is transferred. NetSuite supports multiple price levels, but this integration transfers a single level:
Price_ItemPriceLevelIdandPrice_ItemPriceCurrencyPageIddefault to level 1, andPrice_ItemPricesets that level's amount.Inventory adjustments post to an adjustment account. The inventory collections write to a NetSuite GL account via
Account_Id— see the placeholder note in Setup Requirements.Locations must be established in iPaaS.com before inventory transfers. The inventory collections resolve the NetSuite location and its subsidiary from the location's external-ID link. A location must already have been transferred to iPaaS.com — establishing that external ID — for
Location_IdandSubsidiary_Idto resolve; otherwise the inventory adjustment cannot match its location and the transfer fails.Custom-field multi-select replaces the set. Supplying Multi-Select values replaces the existing values; the conversion cannot clear a field to empty (add/update only).
Setup Requirements
Control Fields and Required Configuration
Mapping | Applies to | Action | Required? |
ItemId | Product / Variant | Provide the product SKU; written to the NetSuite Item ID. | Required |
UnitsType_Id | Product / Variant | Map a value that resolves to a valid NetSuite units type. | Required |
MatrixType_Id | Product / Variant | Drives matrix parent/child creation for variant products. | Required for matrix items |
Subsidiary | Product | Resolved from the NetSuite Subsidiary custom field. | Required on OneWorld |
Account_Id | Inventory collections | The NetSuite adjustment GL account. Placeholder — replace: the inventory children hardcode the account name | Required for inventory |
trandate | Variant Inventory child | Placeholder — replace: ships as the hardcoded example date | Control (defaulted) |
Transfer Locations first. Before transferring product inventory, sync your NetSuite locations to iPaaS.com so their external-ID links are established — the inventory collections look up the location (and its subsidiary) by external ID, and inventory transfers fail for any location that has not been established in iPaaS.com.
Matrix options: create the matrix options and option values on the NetSuite item before transferring options/variants (the option collections link to existing NetSuite matrix options and reject unknown ones).
Custom fields: create the NetSuite … custom fields you use (units, descriptions, manufacturer, UPC, subsidiary, price level) and the example custitem* fields, in both NetSuite and iPaaS.com.
Subscription settings: enable the iPaaS.com product create/update triggers in Outbound Data Flows for automatic transfers.
Authentication
The integration authenticates to NetSuite using the connection configured for the integration; see NetSuite Connections and Settings.
Integration Flow
An iPaaS.com product transfers — on demand (product record ID) or automatically on the product outbound triggers in Outbound Data Flows.
The filter admits only inventory items (Kit/Package and Assembly types are skipped).
The integration creates or updates the NetSuite item (SKU → Item ID, units, descriptions, subsidiary, default price level). For a variant product, it creates the item as a matrix parent.
For matrix products, the children build the matrix: option names and values, then variants (matrix children) with their option values, then per-location inventory quantities.
The NetSuite item internal ID is stored back on the iPaaS.com product as its external ID.
Mappings
Each item and child has separate Add and Update collections that share the same field mappings (any difference is noted). Fields marked Control gate behavior; Placeholder values must be replaced (see Setup Requirements).
Add / Update NetSuite Inventory Product FROM iPaaS.com
iPaaS.com data type: Product
Mapping Filter
Type != "Kit/Package Items" && Type != "Assembly Items"
Filter Description. Only inventory items are written by this collection. Products whose Type is Kit/Package Items or Assembly Items are skipped (handled by their own collections); everything else passes through.
Creates or updates a NetSuite inventory item from an iPaaS.com product — identity, units of measure, descriptions, subsidiary, the default price level, and example custom-field mappings. (The Add and Update collections share these mappings.)
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Field | Sku | ItemId | Required. Maps the product SKU to the NetSuite Item ID (the item's primary identifier); the transfer fails without it. |
Field | NetSuite Units Type Id | UnitsType_Id | Required. Sets the NetSuite units type; the value must resolve to a valid units type or the transfer errors. |
Dynamic Formula |
| MatrixType_Id | Required for matrix items. When the product tracks variants, creates the item as a matrix parent so it can hold variants; null for simple items. |
Dynamic Formula |
| Subsidiary | Required on OneWorld. Resolves the NetSuite subsidiary from the NetSuite Subsidiary custom field. |
Field | Name | DisplayName | Recommended. The product name → NetSuite Display Name. |
Field | Description | SalesDescription | Recommended. The product description → NetSuite Sales Description. |
Field | NetSuite Description | Description | Optional. From the iPaaS.com NetSuite Description custom field. |
Field | NetSuite Featured Description | FeaturedDescription | Optional. From the NetSuite Featured Description custom field. |
Field | NetSuite Base Unit Id | BaseUnit | Recommended. Base unit of measure (NetSuite … custom field). |
Field | NetSuite Purchase Unit Id | PurchaseUnit | Recommended. Purchase unit (custom field). |
Field | NetSuite Stock Unit Id | SaleUnit | Recommended. Sale unit (custom field). |
Field | NetSuite Stock Unit Id | StockUnit | Recommended. Stock unit (custom field). |
Field | NetSuite Include Children | IncludeChildren | Optional. Whether child items are included (custom field). |
Dynamic Formula |
| IsInactive | Control. Marks the item inactive when the iPaaS.com product is disabled; a disabled product that still has variants throws (remove/reassign variants first). |
Field | NetSuite Manufacturer | Manufacturer | Optional. From the NetSuite Manufacturer custom field. |
Field | NetSuite Manufacturer | VendorName | Optional. Manufacturer/vendor name (custom field). |
Field | NetSuite UPC Code | UpcCode | Optional. From the NetSuite UPC Code custom field. |
Field | Weight | Weight | Optional. The product weight. |
Field | DefaultPrice | Price_ItemPrice | Recommended. The amount for the transferred (first/default) price level. |
Dynamic Formula |
| Price_ItemQuantityValue | Optional. The price quantity; defaults to 0 for new products. |
Dynamic Formula |
| Price_ItemPriceLevelId | Optional. The price level; defaults to level 1 — only the first/default level is transferred. |
Dynamic Formula |
| Price_ItemPriceCurrencyPageId | Optional. The currency page; defaults to 1. |
Dynamic Formula |
| custitemmultiselectproduct | Optional. Example Multi-Select custom-field mapping (FormatCustomFields); adapt or remove. |
Dynamic Formula |
| custitemlist | Optional. Example List/Record custom-field mapping; adapt or remove. |
Add / Update NetSuite Inventory Product Option FROM iPaaS.com
iPaaS.com data type: Product Option
Mapping Filter
var matrixOptionId = await GetMatrixOptionIdByName(OptionName);
if(matrixOptionId != null && matrixOptionId != "")
return true;
throw new Exception(OptionName + " matrix option name does not exist in NetSuite");Filter Description. Resolves the option name against the matrix options already defined on the NetSuite item. If no match is found, it throws "[OptionName] matrix option name does not exist in NetSuite" — the matrix option must already exist; this collection links to it rather than creating a new option.
Links an iPaaS.com product option to an existing NetSuite matrix option.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Field | OptionName | Name | Required. The matrix option name; must already exist as a matrix option in NetSuite. |
Add / Update NetSuite Inventory Product Option Value FROM iPaaS.com
iPaaS.com data type: Product Option Value
Mapping Filter
var matrixOptionValueId = await GetMatrixOptionValueIdByValue(Parent.OptionName,Value);
if(matrixOptionValueId != null && matrixOptionValueId != "")
return true;
throw new Exception(Value + " matrix option value does not exist in NetSuite");Filter Description. Resolves the value against the existing matrix option values under the parent option. If no match is found, it throws "[Value] matrix option value does not exist in NetSuite" — the value must already exist in NetSuite under the parent option.
Links an iPaaS.com option value to an existing NetSuite matrix option value.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Field | Value | RefName | Required. The matrix option value (→ NetSuite option-value reference name); must already exist under the parent option. |
Add / Update NetSuite Inventory Product Variant FROM iPaaS.com
iPaaS.com data type: Product Variant
Mapping Filter
Parent.Status == "Disabled" ? false : true;
Filter Description. A variant is written unless its parent product is Disabled (in which case it is skipped).
Creates or updates a NetSuite item variant (matrix child) from an iPaaS.com product variant.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Field | Sku | ItemId | Required. Maps the variant SKU to the NetSuite Item ID. |
Dynamic Formula |
| MatrixType_Id | Required. Creates/links the variant as a NetSuite matrix child when it has options. |
Field | NetSuite Base Unit Id | BaseUnit | Recommended. Base unit (custom field). |
Field | NetSuite Purchase Unit Id | PurchaseUnit | Recommended. Purchase unit (custom field). |
Field | NetSuite Sale Unit Id | SaleUnit | Recommended. Sale unit (custom field). |
Field | NetSuite Stock Unit Id | StockUnit | Recommended. Stock unit (custom field). |
Field | NetSuite Units Type Id | UnitsType_Id | Required. The NetSuite units type; must resolve. |
Field | NetSuite Description | Description | Recommended. The variant description (custom field). |
Field | NetSuite Store Display Name | StoreDisplayName | Recommended. The variant store display name (custom field). |
Field | DefaultPrice | Price_ItemPrice | Recommended. The amount for the transferred (first/default) price level. |
Dynamic Formula |
| Price_ItemQuantityValue | Optional. Price quantity; defaults to 0 for new variants. |
Dynamic Formula |
| Price_ItemPriceLevelId | Optional. Price level; defaults to 1 — only the first/default level is transferred. |
Dynamic Formula |
| Price_ItemPriceCurrencyPageId | Optional. Currency page; defaults to 1. |
Add / Update NetSuite Inventory Product Variant Option FROM iPaaS.com
iPaaS.com data type: Product Variant Option
Mapping Filter
var matrixOptionValueId = await GetMatrixOptionValueIdByValue(OptionName,Value);
if(matrixOptionValueId != null && matrixOptionValueId != "")
return true;
throw new Exception(Value + " matrix option value does not exist in NetSuite");Filter Description. Resolves the value against the existing matrix option values for the named option. If no match is found, it throws "[Value] matrix option value does not exist in NetSuite" — the variant's option name and value must already exist in NetSuite.
Links an iPaaS.com variant option to an existing NetSuite matrix option value.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Field | Value | Value | Required. The variant's option value; must already exist in NetSuite under the named option. |
Field | OptionName | OptionName | Required. The matrix option this value belongs to, used with Value to resolve the existing NetSuite matrix option value. |
Add / Update NetSuite Inventory Product Variant Inventory FROM iPaaS.com
iPaaS.com data type: Product Variant Inventory
Sets a NetSuite inventory adjustment for a variant at a location. (Add and Update share these mappings; the Add collection ships a hardcoded trandate placeholder, the Update collection defaults it to the current date.)
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Static |
| trandate | Control (defaulted). The adjustment date. Placeholder value — replace during implementation: a hardcoded example date on the Add collection; map it to the current date (the Update collection defaults to today). |
Dynamic Formula |
| Location_Id | Required. Resolves the NetSuite location for the adjustment. |
Field | QtyAvailable | QuantityAvailable | Required. The quantity to set at the location. |
Field | Cost | Cost | Optional. The unit cost applied with the adjustment. |
Dynamic Formula |
| Account_Id | Required. The NetSuite adjustment GL account. Placeholder value — replace during implementation: |
Dynamic Formula |
| Subsidiary_Id | Required on OneWorld. Resolves the subsidiary from the inventory location's External ID. |
Add / Update NetSuite Inventory Product Inventory FROM iPaaS.com
iPaaS.com data type: Product Inventory
Sets a NetSuite inventory adjustment for the item at a location. (Add and Update share these mappings; the Add collection includes Trandate, defaulted to today; the Update collection omits it.)
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Dynamic Formula |
| Trandate | Control (defaulted). The adjustment date; defaults to today. (Add collection only.) |
Field | QtyAvailable | QuantityAvailable | Required. The quantity to set at the location. |
Dynamic Formula |
| Location_Id | Required. Resolves the NetSuite location for the adjustment. |
Field | Cost | Cost | Optional. The unit cost applied with the adjustment. |
Dynamic Formula |
| Account_Id | Required. The NetSuite adjustment GL account. Placeholder value — replace during implementation: |
Dynamic Formula |
| Subsidiary_Id | Required on OneWorld. Resolves the subsidiary from the inventory location's External ID. |
Add/Update NetSuite Product Inventory FROM iPaaS.com Standalone
iPaaS.com data type: Product Inventory
Mapping Filter
var productType = await GetiPaaSProductType(Id.Split("|")[0]);
if(!string.IsNullOrWhiteSpace(productType) && productType != "Assembly Items")
return true;
return false;Filter Description. A standalone inventory adjustment is written for any product whose iPaaS.com type resolves and is not Assembly Items; products with no resolvable type or of type Assembly Items are skipped.
Sets a NetSuite inventory adjustment for an item at a location, synced on its own (not as part of a product transfer).
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Field | QtyAvailable | QuantityAvailable | Required. The quantity to set at the location. |
Dynamic Formula |
| Location_Id | Required. Resolves the NetSuite location for the adjustment. |
Field | Cost | Cost | Optional. The unit cost applied with the adjustment. |
Dynamic Formula |
| ProductId | Required. Links the standalone adjustment to the NetSuite product. |
Dynamic Formula |
| Account_Id | Required. The NetSuite adjustment GL account, read from the NetSuite Account Name custom field. Placeholder value — replace during implementation: populate that custom field with your adjustment account, or |
Dynamic Formula |
| Subsidiary_Id | Required on OneWorld. Resolves the subsidiary from the location's External ID. |
Add/Update NetSuite Product Variant Inventory FROM iPaaS.com Standalone
iPaaS.com data type: Product Variant Inventory
Sets a NetSuite inventory adjustment for a variant at a location, synced on its own.
Mapping Type | Source Field (iPaaS.com) | Destination Field (NetSuite) | Description |
Dynamic Formula |
| Location_Id | Required. Resolves the NetSuite location for the adjustment. |
Field | QtyAvailable | QuantityAvailable | Required. The quantity to set at the location. |
Dynamic Formula |
| ParentVariantId | Required. Links the standalone adjustment to the NetSuite variant. |
Field | Cost | Cost | Optional. The unit cost applied with the adjustment. |
Dynamic Formula |
| Account_Id | Required. The NetSuite adjustment GL account (from the NetSuite Account Name custom field). Placeholder value — replace during implementation: |
Dynamic Formula |
| Subsidiary_Id | Required on OneWorld. Resolves the subsidiary from the location's External ID. |
Error Handling
"Item Id is required" — the product SKU was not provided. Resolution: ensure the product has a SKU mapped to ItemId.
"[OptionName] matrix option name does not exist in NetSuite" / "[Value] matrix option value does not exist in NetSuite" — an option or value does not exist as a matrix option/value on the NetSuite item. Resolution: create the matrix options and values in NetSuite first.
Units type does not resolve —
UnitsType_Iddid not map to a valid NetSuite units type. Resolution: confirm the units type value.Disabled product with variants — disabling a product that still has variants throws. Resolution: remove or reassign the variants before disabling.
Inventory adjustment account not found —
Account_Idresolves to a NetSuite GL account that must exist (default nameInventory Adjustment). Resolution: create that account or change the mapping.
Testing & Validation
Test Scenarios
Create a simple item. Sync a non-variant product and confirm a NetSuite inventory item is created with SKU → Item ID, units, description, subsidiary, and the default price.
Create a matrix item. Sync a variant product and confirm the NetSuite item is created as a matrix parent, with options, option values, variants, and variant options linked to existing NetSuite matrix options.
Required-field validation. Sync a product with no SKU and confirm the "Item Id is required" error; sync an option that doesn't exist in NetSuite and confirm the matrix-option error.
Inventory. Confirm inventory quantities post to the correct location and adjustment account (not the placeholder); confirm the variant inventory date is not the hardcoded
2023-09-21.Pricing. Confirm the first/default price level transfers with the intended amount.
Standalone inventory. Confirm a standalone inventory adjustment updates the item/variant on its own.
Validation Checklist
SKU, units type, and (OneWorld) subsidiary are populated and resolve.
Matrix options and values exist in NetSuite before options/variants are sent.
Account_Idis set to your real adjustment account (not theInventory Adjustmentplaceholder), and the variant inventorytrandateis not the hardcoded date.Only the intended (first/default) price level is expected in NetSuite.
Additional Notes
Only the first/default NetSuite price level is transferred — this is a known limitation (see System Caveats). NetSuite multi-price-level support is not used by this integration.
Assembly, Non-Inventory, Non-Inventory Resale, and Service items are captured from NetSuite by their own TO-iPaaS.com collections (documented separately); this collection writes inventory items to NetSuite.
Known limitations affecting products will be collected in NetSuite Known Limitations.
