NCR Counterpoint to iPaaS.com Product Variant Inventory Mapping Documentation
Summary
This mapping collection brings a product variant's stock figures from NCR Counterpoint into iPaaS.com for the first time, creating the inventory record that ties a variant to the location its stock sits at. It carries the quantity available for that variant, the quantity on hand, a cost figure, the location itself, and the link to the product variant the inventory belongs to.
ID Format
Manual Sync id: the item number, the location id, and the item's first, second, and third grid dimension values, joined by pipes in that order. This collection reads inbound from Counterpoint, so the id entered on the Manual Sync page is built from Counterpoint-side values, not iPaaS.com values.
External ID saved after transfer: once a variant inventory record has been transferred, iPaaS.com records those same joined Counterpoint values as the external ID on a dedicated platform-managed external-ID record. That record — not any field on the inventory record itself — is the primary match that routes subsequent transfers of the same variant-and-location combination to Update NCR Counterpoint Product Variant Inventory TO iPaaS.com rather than adding it a second time. The LocationId mapping writes the resolved iPaaS.com location onto the inventory record itself, which gives subscribers visibility of where the stock sits and serves as a fallback collision key alongside the variant link where no external-ID record exists yet.
Deleted Record Support
This family does not itself carry deletions. Where a separate Delete collection exists for this entity it handles removals from Counterpoint to iPaaS.com; otherwise a removal in Counterpoint is not propagated. See NCR Counterpoint Known Limitations.
Mapping Collection Status
Status: Enabled. A mapping filter is applied, which narrows which variant inventory records this collection processes.
Trigger Events: see Transfer Methods in the collection description; automatic transfers require the relevant Outbound/Inbound Data Flow subscriptions to be enabled.
Duplicate or Conflicting Mappings
Update NCR Counterpoint Product Variant Inventory TO iPaaS.com: carries later changes to a variant inventory record this collection has already created — principally the quantity figures. It is the complement of this collection, not an alternative, and the two are normally enabled together.
Add/Update NCR Counterpoint Product Variant Inventory TO iPaaS.com: operates on the same entity, but is dispatched as part of the transfer of its parent collection Add NCR Counterpoint Product Variant TO iPaaS.com rather than by a trigger of its own.
Important: these collections operate on the same NCR Counterpoint variant inventory records. This collection and Update NCR Counterpoint Product Variant Inventory TO iPaaS.com share the same trigger set, and routing between them is decided by the external-ID link rather than by which trigger fired, so enabling both is the normal configuration. Add/Update NCR Counterpoint Product Variant Inventory TO iPaaS.com reaches the same records by a different route, as part of a variant transfer. Subscribers or their MiSP should review all three collections' filters and Add/Update settings before enabling any of them, and should treat NCR Counterpoint as the source of truth for stock figures where the same variants are also maintained in another connected system.
System Caveats
NCR Counterpoint Caveats
NCR Counterpoint does not cost variants individually: a gridded item carries one cost at the item level, not a separate cost per colour or size, and the variant inventory record the integration reads carries no cost of its own. Every variant of an item therefore reports the same cost. This is a constraint of the source data rather than a mapping that could be improved.
The cost figure comes from the configured stocking location: the cost mapping reads the item's rolling average cost held at the stocking location configured for the integration. Two things follow. That stocking location must be configured, and the item must actually hold an inventory record there — where it does not, no cost is carried and, because the field is optional, that is a silent gap rather than a failed transfer. And the cost reported against a variant is the cost at the stocking location, not at the location the inventory record itself describes. Subscribers for whom a single item-level cost applied to every variant is misleading can remove the mapping.
Available quantity can be negative: NCR Counterpoint allows commitments to exceed stock on hand, and the figure is passed on as-is rather than corrected in transit. Subscribers whose downstream systems cannot accept a negative availability should apply a formula that floors the value at zero rather than assuming it never occurs.
Over-length values are truncated: where a Counterpoint value is longer than the field it is written to, it is silently shortened rather than rejected, so the transfer succeeds carrying a shortened value.
iPaaS.com Caveats
Locations must exist in iPaaS.com first: the location named on the Counterpoint inventory record must exist as a location in iPaaS.com before the first transfer of variant inventory from that location. If it does not, the location cannot be resolved and the transfer of that inventory record fails, because the location is required. Subscribers or their MiSP must do one of two things before enabling this collection: EITHER transfer Counterpoint's locations to iPaaS.com so that a matching location exists for every location that holds stock, OR create those locations in iPaaS.com by hand with names matching the Counterpoint location names. One of the two must be done at install time. Errors surface at Dashboard / Integration Monitoring / Error Logs.
Locations are matched by name: subscribers whose iPaaS.com locations are named differently from their Counterpoint locations should apply a Lookup Translation that maps each Counterpoint location name to the correct iPaaS.com location, rather than renaming records in either system.
Integration Flow
No records are transferred as prerequisites for this collection. The records it references are expected to exist already.
The record is sent to iPaaS.com, where subsequent transfers are routed by the external ID recorded on transfer.
Mappings
Add NCR Counterpoint Product Variant Inventory TO iPaaS.com
Mapping Filter
string sku = (ITEM_NO + "|" + DIM_1_UPR + (DIM_2_UPR == "*" ? "" : "|" + DIM_2_UPR) + (DIM_3_UPR == "*" ? "" : "|" + DIM_3_UPR));
var external = await GetSpaceportIdAsync(sku, "Product Variant", SpaceportSystemId);
if (IsEmpty(external)){return false;} else {return true;}
Filter Description.
The filter first assembles the variant's SKU, then looks that SKU up against the product variants already transferred into iPaaS.com. Where no matching variant is found the filter returns false and the inventory record is skipped; where a match is found it returns true and the record transfers.
The SKU is assembled from the item number and the item's grid dimensions, joined with pipe characters. The first dimension is always included. The second and third are included only where they hold a value other than an asterisk — NCR Counterpoint uses an asterisk to mean that dimension is not in use for that item. So a two-dimension item such as a shirt sized by colour and size produces a SKU of item number, colour, and size, while a one-dimension item produces a SKU of item number and that single dimension only.
This same construction is repeated in the ParentId mapping in this collection, and the two must agree. Subscribers or their MiSP who change how the SKU is built in one place must make the identical change in the other, or the filter will admit records that ParentId cannot then resolve.
Mapping Type | Source Field (NCR Counterpoint) | Destination Field (iPaaS.com) | Description |
Field |
| QtyAvailable | Recommended. . |
Field |
| QtyOnHand | Recommended. . |
Dynamic Formula |
| Cost | Optional. . |
Dynamic Formula |
| LocationId | Required. IPaaS.com rejects the inventory record without it, and the value must be a valid iPaaS.com location id. |
Dynamic Formula |
| ParentId | Required. IPaaS.com rejects the inventory record without it, and the value must be greater than zero. |
QtyAvailable — Field
Source: QTY_AVAIL · Destination: QtyAvailable
This is a recommended field. The endpoint description for variant inventory does not list it as required, so iPaaS.com accepts an inventory record without it, but available quantity is the figure most downstream systems read to decide what can be sold, so it should be mapped for any meaningful inventory sync.
The quantity available for this variant at this location as NCR Counterpoint calculates it — on-hand stock less amounts already committed to orders. It is carried across unchanged as a decimal. This is a point-in-time figure that reflects the value when the transfer ran; subsequent movements arrive through the sibling Update NCR Counterpoint Product Variant Inventory TO iPaaS.com collection.
Available quantity can legitimately be negative in NCR Counterpoint where commitments exceed stock on hand. The endpoint description records this field as a decimal and documents no floor at zero, so a negative figure is passed on as-is rather than being corrected in transit. Subscribers whose downstream systems cannot accept a negative availability should apply a formula that floors the value at zero rather than assuming it never occurs.
QtyOnHand — Field
Source: QTY_ON_HND · Destination: QtyOnHand
This is a recommended field. The endpoint description for variant inventory does not list it as required, so iPaaS.com accepts an inventory record without it, but it should be mapped for any meaningful inventory sync.
The physical stock held for this variant at this location as recorded in NCR Counterpoint, carried across unchanged as a decimal. This differs from QtyAvailable in the same collection: on-hand is what is present, available is what is left once commitments are taken into account.
Cost — Dynamic Formula
Source: return await AverageCostFromSettingsAsync(ITEM_NO); · Destination: Cost
This is an optional field. The endpoint description for variant inventory does not list it as required, and iPaaS.com accepts an inventory record without it.
This mapping needs more explanation than its product-level counterpart, because NCR Counterpoint does not cost variants individually. A gridded item carries one cost at the item level, not a separate cost per colour or size, and the variant inventory record the integration reads does not carry a cost of its own or a route back to the parent item's cost. Every variant of an item therefore reports the same cost, and that is a limitation of the source data rather than a mapping that could be improved.
The formula works around this by reading the cost from the item's inventory at the stocking location configured for the integration. It fetches the item's inventory records and returns the rolling average cost held at that one location.
Two consequences follow, and subscribers and their MiSP should be aware of both. The stocking location must be configured for the integration, and the item must actually hold an inventory record at that location — if it does not, the formula returns nothing and the variant inventory transfers with no cost. Because the field is optional, that is a silent gap rather than a failed transfer. And the cost reported against a variant is the cost at the stocking location, not at the location the inventory record itself describes. A variant whose stock sits at a location with a different average cost still reports the stocking location's figure.
Subscribers who do not want cost figures leaving Counterpoint, or for whom a single item-level cost applied to every variant is misleading, can remove this mapping; the inventory record still transfers without it.
LocationId — Dynamic Formula
Source: return await LocationIdFromNameAsync(LOC_ID); · Destination: LocationId
This is a required field — iPaaS.com rejects the inventory record without it, and the value must be a valid iPaaS.com location id.
NCR Counterpoint identifies its locations by name; iPaaS.com identifies them by id. The formula takes the Counterpoint location name from the variant inventory record and resolves it to the matching iPaaS.com location id.
The location named on the Counterpoint inventory record MUST exist as a location in iPaaS.com before the first transfer of variant inventory from that location. If it does not, the formula resolves to nothing and the transfer of that inventory record fails, because the location is required. This is a hard prerequisite, not a preference. Subscribers and their MiSP must do one of two things before enabling this collection: EITHER (a) transfer Counterpoint's locations to iPaaS.com so that a matching location exists for every location that holds stock, OR (b) create the locations in iPaaS.com by hand with names matching the Counterpoint location names. One of the two MUST be done at install time.
Locations are matched by name. Subscribers whose iPaaS.com locations are named differently from their Counterpoint locations should replace this mapping with a Lookup Translation that maps each Counterpoint location name to the correct iPaaS.com location.
ParentId — Dynamic Formula
Source:
string sku = (ITEM_NO + "|" + DIM_1_UPR + (DIM_2_UPR == "*" ? "" : "|" + DIM_2_UPR) + (DIM_3_UPR == "*" ? "" : "|" + DIM_3_UPR)); return await GetSpaceportIdAsync(sku, "Product Variant", SpaceportSystemId);
Destination: ParentId
This is a required field — iPaaS.com rejects the inventory record without it, and the value must be greater than zero. It identifies the product variant the inventory belongs to.
The formula builds the variant's SKU from the item number and its grid dimensions, then looks that SKU up against the product variants already transferred into iPaaS.com and returns the matching variant's iPaaS.com id. The SKU is assembled exactly as described in the collection filter above: item number, first dimension, then the second and third dimensions only where they are in use. Because the filter performs the same lookup before any mapping in this collection runs, the product variant is known to exist by the time this formula evaluates, and the lookup succeeds.
Subscribers or their MiSP who change the SKU construction here must make the identical change in the collection filter. The two are separate pieces of the same rule, and if they disagree, records the filter admits will fail here for want of a parent.
This mapping appears only in this collection and not in the sibling Update NCR Counterpoint Product Variant Inventory TO iPaaS.com, because resolving the variant requires a lookup against iPaaS.com on every record and variant inventory changes far more often than variants do. The Update collection identifies the existing inventory record directly instead.
The value is supplied automatically by the lookup. Subscribers should not replace it with a fixed value — a hardcoded or zero variant id causes the transfer to be rejected.
Update NCR Counterpoint Product Variant Inventory TO iPaaS.com
Mapping Type | Source Field (NCR Counterpoint) | Destination Field (iPaaS.com) | Description |
Field |
| QtyAvailable | Recommended. . |
Field |
| QtyOnHand | Recommended. . |
Dynamic Formula |
| Cost | Optional. . |
Dynamic Formula |
| LocationId | Required. IPaaS.com rejects the update without it, and the value must be a valid iPaaS.com location id. |
QtyAvailable — Field
Source: QTY_AVAIL · Destination: QtyAvailable
This is a recommended field. The endpoint description for variant inventory does not list it as required, so iPaaS.com accepts the update without it, but available quantity is the figure most downstream systems read to decide what can be sold, and keeping it current is the main reason this collection runs.
The quantity available for this variant at this location as NCR Counterpoint calculates it — on-hand stock less amounts already committed to orders. It is carried across unchanged as a decimal, and reflects the value at the moment the transfer ran.
Available quantity can legitimately be negative in NCR Counterpoint where commitments exceed stock on hand. The endpoint description records this field as a decimal and documents no floor at zero, so a negative figure is passed on as-is rather than being corrected in transit. Subscribers whose downstream systems cannot accept a negative availability should apply a formula that floors the value at zero rather than assuming it never occurs.
QtyOnHand — Field
Source: QTY_ON_HND · Destination: QtyOnHand
This is a recommended field. The endpoint description for variant inventory does not list it as required, so iPaaS.com accepts the update without it, but it should be mapped for any meaningful inventory sync.
The physical stock held for this variant at this location as recorded in NCR Counterpoint, carried across unchanged as a decimal. This differs from QtyAvailable in the same collection: on-hand is what is present, available is what is left once commitments are taken into account.
Cost — Dynamic Formula
Source: return await AverageCostFromSettingsAsync(ITEM_NO); · Destination: Cost
This is an optional field. The endpoint description for variant inventory does not list it as required, and iPaaS.com accepts the update without it.
This mapping needs more explanation than its product-level counterpart, because NCR Counterpoint does not cost variants individually. A gridded item carries one cost at the item level, not a separate cost per colour or size, and the variant inventory record the integration reads does not carry a cost of its own or a route back to the parent item's cost. Every variant of an item therefore reports the same cost, and that is a limitation of the source data rather than a mapping that could be improved.
The formula works around this by reading the cost from the item's inventory at the stocking location configured for the integration. It fetches the item's inventory records and returns the rolling average cost held at that one location.
Two consequences follow, and subscribers and their MiSP should be aware of both. The stocking location must be configured for the integration, and the item must actually hold an inventory record at that location — if it does not, the formula returns nothing and the update carries no cost. Because the field is optional, that is a silent gap rather than a failed transfer. And the cost reported against a variant is the cost at the stocking location, not at the location the inventory record itself describes. A variant whose stock sits at a location with a different average cost still reports the stocking location's figure.
Subscribers who do not want cost figures leaving Counterpoint, or for whom a single item-level cost applied to every variant is misleading, can remove this mapping; the update still transfers without it. Any such change should be made identically in the sibling Add NCR Counterpoint Product Variant Inventory TO iPaaS.com collection.
LocationId — Dynamic Formula
Source: return await LocationIdFromNameAsync(LOC_ID); · Destination: LocationId
This is a required field — iPaaS.com rejects the update without it, and the value must be a valid iPaaS.com location id.
An inventory record states how much stock exists at a particular place, so the place has to be identified on an update as well as on a create. NCR Counterpoint identifies its locations by name; iPaaS.com identifies them by id. The formula takes the Counterpoint location name from the variant inventory record and resolves it to the matching iPaaS.com location id.
The location named on the Counterpoint inventory record MUST exist as a location in iPaaS.com before the first transfer of variant inventory from that location. If it does not, the formula resolves to nothing and the transfer of that inventory record fails, because the location is required. This is a hard prerequisite, not a preference. Subscribers and their MiSP must do one of two things before enabling this collection: EITHER (a) transfer Counterpoint's locations to iPaaS.com so that a matching location exists for every location that holds stock, OR (b) create the locations in iPaaS.com by hand with names matching the Counterpoint location names. One of the two MUST be done at install time.
Locations are matched by name, so the names must correspond between the two systems. Subscribers whose iPaaS.com locations are named differently from their Counterpoint locations should replace this mapping with a Lookup Translation that maps each Counterpoint location name to the correct iPaaS.com location. Any such replacement should be made identically in the sibling Add NCR Counterpoint Product Variant Inventory TO iPaaS.com collection, so that updates resolve to the same location the record was created against.
Error Handling
Errors raised while transferring these records surface at Dashboard / Integration Monitoring / Error Logs. The specific messages, their causes and their resolutions are documented in NCR Counterpoint Error Messages. A record stopped by an error is not retried automatically; it must be resolved manually.
Testing & Validation
Replace every placeholder value called out above with one from the target Counterpoint installation, and confirm each exists in Counterpoint.
Transfer a single record through Manual Sync and confirm it appears in Counterpoint as expected.
Confirm any child records transferred with the parent.
Enable the relevant triggers and confirm a new record transfers automatically, and that a change updates the same Counterpoint record rather than creating a second one.
Attempt a transfer with a missing required field and confirm the expected error appears at Dashboard / Integration Monitoring / Error Logs.
Additional Notes
Stock figures are point-in-time: at the time this documentation was written, the quantities transferred reflect the values at the moment the transfer ran, not live values. Movements made afterwards arrive on the next update of the inventory record.
These and other runtime behaviors are documented in NCR Counterpoint Known Limitations.
Related Documents
NCR Counterpoint Connections and Settings: the credentials and subscription settings that connect iPaaS.com to Counterpoint.
NCR Counterpoint Installation Instructions: installing CPHive and CPWebhooks on the Counterpoint server.
NCR Counterpoint Known Limitations: what the integration does not do, and the values to replace before go-live.
NCR Counterpoint Error Messages: the errors a transfer can raise, what causes them, and how to resolve them.
NCR Counterpoint API Endpoints: the CPHive endpoints the integration calls.
