Skip to main content

NetSuite Inventory Product From iPaaS.com Mapping Documentation

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:

  1. In NetSuite — create the field under Customization → Lists, Records & Fields (Item Fields), type List/Record or Multi-Select where applicable.

  2. 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_Id must 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_Id creates 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_ItemPriceLevelId and Price_ItemPriceCurrencyPageId default to level 1, and Price_ItemPrice sets 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_Id and Subsidiary_Id to 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 Inventory Adjustment; the standalones read it from the NetSuite Account Name custom field. Your account must have an adjustment account by that name, or change the mapping.

Required for inventory

trandate

Variant Inventory child

Placeholder — replace: ships as the hardcoded example date 2023-09-21; map it to the current date or a real 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

  1. An iPaaS.com product transfers — on demand (product record ID) or automatically on the product outbound triggers in Outbound Data Flows.

  2. The filter admits only inventory items (Kit/Package and Assembly types are skipped).

  3. 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.

  4. 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.

  5. 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

TrackingMethod == "Variant" ? "PARENT" : null;

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

GetCustomFieldValue(CustomFields, "NetSuite Subsidiary")

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

if(Status == "Disabled") { ... }

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

GetCustomFieldValue(CustomFields, "NetSuite …")

Price_ItemQuantityValue

Optional. The price quantity; defaults to 0 for new products.

Dynamic Formula

GetCustomFieldValue(CustomFields, "NetSuite …")

Price_ItemPriceLevelId

Optional. The price level; defaults to level 1 — only the first/default level is transferred.

Dynamic Formula

GetCustomFieldValue(CustomFields, "NetSuite …")

Price_ItemPriceCurrencyPageId

Optional. The currency page; defaults to 1.

Dynamic Formula

FormatCustomFields("Multi-Select", …)

custitemmultiselectproduct

Optional. Example Multi-Select custom-field mapping (FormatCustomFields); adapt or remove.

Dynamic Formula

FormatCustomFields("List/Record", …)

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

if(Options != null && Options.Count > 0){ ... }

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

GetCustomFieldValue(CustomFields, "NetSuite …")

Price_ItemQuantityValue

Optional. Price quantity; defaults to 0 for new variants.

Dynamic Formula

GetCustomFieldValue(CustomFields, "NetSuite …")

Price_ItemPriceLevelId

Optional. Price level; defaults to 1 — only the first/default level is transferred.

Dynamic Formula

GetCustomFieldValue(CustomFields, "NetSuite …")

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

2023-09-21

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

(GetExternalIdAsync location)

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

GetCustomFieldValue(...); defaults to "Inventory Adjustment"

Account_Id

Required. The NetSuite adjustment GL account. Placeholder value — replace during implementation: Inventory Adjustment — your account must have an account by that name, or change the mapping.

Dynamic Formula

(derived from the location's external id)

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

return DateTime.Today.ToString("yyyy-MM-dd");

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

(GetExternalIdAsync location)

Location_Id

Required. Resolves the NetSuite location for the adjustment.

Field

Cost

Cost

Optional. The unit cost applied with the adjustment.

Dynamic Formula

GetCustomFieldValue(...); defaults to "Inventory Adjustment"

Account_Id

Required. The NetSuite adjustment GL account. Placeholder value — replace during implementation: Inventory Adjustment.

Dynamic Formula

(derived from the location's external id)

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

(GetExternalIdAsync location)

Location_Id

Required. Resolves the NetSuite location for the adjustment.

Field

Cost

Cost

Optional. The unit cost applied with the adjustment.

Dynamic Formula

return await GetExternalIdAsync(Id.Split("|")[0], "Product", ...)

ProductId

Required. Links the standalone adjustment to the NetSuite product.

Dynamic Formula

GetCustomFieldValue("NetSuite Account Name"); defaults to "Inventory Adjustment"

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 Inventory Adjustment.

Dynamic Formula

(derived from the location's external id)

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

(GetExternalIdAsync location)

Location_Id

Required. Resolves the NetSuite location for the adjustment.

Field

QtyAvailable

QuantityAvailable

Required. The quantity to set at the location.

Dynamic Formula

return await GetExternalIdAsync(ParentId, "Product Variant", ...)

ParentVariantId

Required. Links the standalone adjustment to the NetSuite variant.

Field

Cost

Cost

Optional. The unit cost applied with the adjustment.

Dynamic Formula

GetCustomFieldValue("NetSuite Account Name"); defaults to "Inventory Adjustment"

Account_Id

Required. The NetSuite adjustment GL account (from the NetSuite Account Name custom field). Placeholder value — replace during implementation: Inventory Adjustment.

Dynamic Formula

(derived from the location's external id)

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 resolveUnitsType_Id did 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 foundAccount_Id resolves to a NetSuite GL account that must exist (default name Inventory Adjustment). Resolution: create that account or change the mapping.

Testing & Validation

Test Scenarios

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. Pricing. Confirm the first/default price level transfers with the intended amount.

  6. 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_Id is set to your real adjustment account (not the Inventory Adjustment placeholder), and the variant inventory trandate is 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.

Related Documents

Did this answer your question?