Skip to main content

NCR Counterpoint to iPaaS.com Product Mapping Documentation

Field-level mapping documentation for the NCR Counterpoint Product collections.

Summary

This mapping collection brings items from NCR Counterpoint into iPaaS.com as products. It carries the item's number and its short and long descriptions, its weight, how it is taxed, a single convenience barcode, its category assignments, whether it is a physical or virtual product, whether it is available, whether stock is counted for the item as a whole or per variant, and its standard and current selling prices. It also records whether the item is a kit parent and what the item most recently cost.

ID Format

  • Manual Sync id: the Counterpoint item number — this collection reads inbound from Counterpoint, so the id entered on the Manual Sync page is the item's Counterpoint-side number, not an iPaaS.com value.

  • External ID saved after transfer: once a product has been transferred, iPaaS.com records the Counterpoint item number as the external ID on a dedicated platform-managed external-ID record. That record — not any field on the product itself — is the primary match that routes a later transfer of the same item to the existing iPaaS.com product rather than adding a second one. The Sku mapping also writes the item number onto the iPaaS.com product, which gives subscribers visibility of the product in both systems and serves as a fallback collision key where no external-ID record exists yet. Remapping Sku to a different format is supported, but it disables that fallback link and the child collections build their own keys from the same item number, so the collections that depend on the format need revisiting at the same time.

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 the items this collection transfers.

  • Trigger Events: see Transfer Methods in the collection description; automatic transfers require the relevant Outbound/Inbound Data Flow subscriptions to be enabled.

Supported Child Collections

  • Add NCR Counterpoint Product Variant TO iPaaS.com: carries each grid cell of a grid item as a variant. It contributes nothing for an item whose TrackingMethod is Product. It has children of its own.

  • Add/Update NCR Counterpoint Product Inventory TO iPaaS.com: carries the item's stock and cost at each location.

  • Add NCR Counterpoint Product Stocking Unit TO iPaaS.com: carries the unit the item's stock is counted in.

  • Add NCR Counterpoint Product Alternate Unit 1 TO iPaaS.com: carries the item's first alternate unit of measure, where one is defined.

  • Add NCR Counterpoint Product Alternate Unit 2 TO iPaaS.com: carries the item's second alternate unit of measure, where one is defined.

  • Add NCR Counterpoint Product Alternate Unit 3 TO iPaaS.com: carries the item's third alternate unit of measure, where one is defined.

  • Add NCR Counterpoint Product Alternate Unit 4 TO iPaaS.com: carries the item's fourth alternate unit of measure, where one is defined.

  • Add NCR Counterpoint Product Alternate Unit 5 TO iPaaS.com: carries the item's fifth alternate unit of measure, where one is defined.

  • Add/Update NCR Counterpoint Product Barcode TO iPaaS.com: carries every barcode on the item that identifies the item as a whole, as its own record.

  • Add/Update NCR Counterpoint Product Option TO iPaaS.com: carries the item's option definitions. It has a child of its own.

  • Add/Update NCR Counterpoint Product Substitute Item TO iPaaS.com: carries the item's substitute-item relationships.

System Caveats

NCR Counterpoint Caveats

  • The translation tables cover the values this integration was built for: Type, Status, and TrackingMethod are each produced by translating a Counterpoint code, and each is required. An item whose Counterpoint item type, status, or tracking method has no row in the matching table produces no value and is rejected rather than transferred without one. Subscribers or their MiSP should confirm the tables against the codes their own installation actually uses before enabling this collection, rather than assuming the shipped rows are exhaustive.

  • Two of the four statuses are never produced as shipped: Preorder has no Counterpoint equivalent, and a discontinued Counterpoint item is reported as Disabled rather than Discontinued — which stops the product being sold rather than merely labelling it. Subscribers who want Discontinued instead should confirm first that the receiving system treats it as unavailable.

  • At least one price must be recorded: DefaultPrice is required and reads the item's regular price, falling back to price-1. An item with neither recorded is rejected. SalePrice reads the same two prices in the opposite order, so an item recording only one of them arrives with its default and sale prices equal, which correctly represents no discount.

  • Weight carries no unit of measure: iPaaS.com does not attach one, so the number means whatever the subscriber's Counterpoint installation records it in. Subscribers relying on weight for shipping should confirm the receiving system reads it in the same unit.

  • The Barcode mapping is a single convenience value: it looks only for a barcode of type UPC registered against the stocking unit and not tied to a grid dimension. Barcodes of other types, barcodes on alternate units, and grid-specific barcodes are not considered here. Where a product genuinely has more than one barcode, Add/Update NCR Counterpoint Product Barcode TO iPaaS.com is the collection to rely on.

  • Only ecommerce categories are read: Counterpoint's other category structures are not included, so an item organised solely by those arrives with no category assignments.

iPaaS.com Caveats

  • Categories must already exist in iPaaS.com to be assigned: the Categories mapping matches each of the item's Counterpoint ecommerce categories to a category already in iPaaS.com, and includes only those it can match. A category the subscriber has not yet transferred is left out silently — the product still transfers, simply without that assignment. This mapping does not pull a missing category across on its own, so subscribers or their MiSP should have the product category collection running before this one. This is the most common reason for a product arriving with fewer categories than expected, and it resolves itself once categories are transferring.

Integration Flow

  1. No records are transferred as prerequisites for this collection. The records it references are expected to exist already.

  2. The record is sent to iPaaS.com, where subsequent transfers are routed by the external ID recorded on transfer.

  3. Child records transfer as part of the same transfer — the collections listed under Supported Child Collections above.

Mappings

Add/Update NCR Counterpoint Product TO iPaaS.com

Mapping Filter

IS_ECOMM_ITEM == "Y"

Filter Description.

Only items that NCR Counterpoint flags as ecommerce items are transferred. An item whose ecommerce flag holds anything other than Y is skipped, and because the eleven child collections are dispatched by this one, none of them contributes anything for a skipped item either — no variants, stock, units, barcodes, options, or substitute items arrive by this route. The standalone inventory collections reach the same iPaaS.com stock records by a separate route, but as shipped their Counterpoint-side webhook subscriptions carry their own filter limiting them to ecommerce items too, so a non-ecommerce item's stock does not arrive by that route either. Subscribers or their MiSP who find products missing from iPaaS.com should check this flag on the item in Counterpoint first. Subscribers who want their whole item catalogue in iPaaS.com rather than only their ecommerce items should review this filter before enabling the collection.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

ITEM_NO.toString().TrimEnd()

Sku

Required. IPaaS.com rejects the product without it.

Field

DESCR

Name

Required. IPaaS.com rejects the product without it.

Field

LONG_DESCR

Description

Optional. .

Field

WEIGHT

Weight

Optional. .

Dynamic Formula

IS_TXBL == "N" ? "None" : TAX_CATEG_COD

TaxClass

Optional. .

Dynamic Formula

Dictionary<string, string> barcodeFilter = new Dictionary<string, string>(){ {"ITEM_NO", ITEM_NO}, {"UNIT", "0"}, {"BARCOD_ID", "UPC"}, {"DIM_1_UPR", "*"}, {"DIM_2_UPR", "*"}, {"DIM_3_UPR", "*"} }; var specificBarcode = await ValueFromLookupTableAsync(barcodeFilter,"IM_BARCOD","BARCOD"); if (specificBarcode != null) {return Convert.ToString(specificBarcode);} else {return null;}

Barcode

Optional. .

Dynamic Formula

return await ConvertCategoriesToSpaceportIdsAsync(Categories);

Categories

Optional. .

Lookup Translation

Lookup Translation — **CP Product ITEM_TYP To iPaaS**

Type

Required. IPaaS.com rejects the product without it.

Lookup Translation

Lookup Translation — **CP Product STAT To iPaaS**

Status

Required. IPaaS.com rejects the product without it.

Lookup Translation

Lookup Translation — **CP Product TRK_METH To iPaaS**

TrackingMethod

Required. IPaaS.com rejects the product without it.

Dynamic Formula

CoalesceToDecimal(REG_PRC,PRC_1)

DefaultPrice

Required. IPaaS.com rejects the product without it.

Dynamic Formula

CoalesceToDecimal(PRC_1,REG_PRC)

SalePrice

Optional. .

Sku — Dynamic Formula

Source: ITEM_NO.toString().TrimEnd() · Destination: Sku

This is a required field — iPaaS.com rejects the product without it. The Counterpoint item number, with any trailing spaces removed. Counterpoint stores the item number as text of up to 20 characters and always populates it, so this mapping always produces a value. This is the identifier subscribers or their MiSP use to recognise the product in both systems.

The trailing-space trim matters beyond appearance. The child collections build their own keys from this same item number — the variant SKU format in Add NCR Counterpoint Product Variant TO iPaaS.com is derived from it, and the unit and barcode collections look records up by it. Subscribers who replace this mapping with a different format should expect to revisit those collections as well.

Name — Field

Source: DESCR · Destination: Name

This is a required field — iPaaS.com rejects the product without it. The item's short description in NCR Counterpoint, used as the product name. Counterpoint stores this as text of up to 30 characters and always supplies a value, so a name always arrives and is never longer than 30 characters. Subscribers replacing this mapping with a formula are not held to that limit by iPaaS.com, but short names remain easier to read alongside names that came straight from Counterpoint. Where a longer, richer name is wanted, the item's long description is available and is already mapped to Description.

Description — Field

Source: LONG_DESCR · Destination: Description

This is an optional field. The item's long description in NCR Counterpoint, carried across unchanged. Items saved without a long description transfer with this field empty; iPaaS.com accepts the product either way. This is the field to use for storefront copy, since Name is limited to the item's 30-character short description.

Weight — Field

Source: WEIGHT · Destination: Weight

This is an optional field. The item's weight as recorded in NCR Counterpoint, carried across unchanged. iPaaS.com does not attach a unit of measure to this number, so it means whatever the subscriber's Counterpoint installation records it in — a value of 5 is not inherently pounds or kilograms. Subscribers relying on weight for shipping calculations should confirm that the receiving system reads it in the same unit Counterpoint stores it in. Items with no weight recorded transfer with the field empty.

Variants do not carry their own weight in this integration — Add NCR Counterpoint Product Variant TO iPaaS.com reads this same item-level value for every variant.

TaxClass — Dynamic Formula

Source: IS_TXBL == "N" ? "None" : TAX_CATEG_COD · Destination: TaxClass

This is an optional field. Records how the product is taxed. When the Counterpoint item is flagged as not taxable, the mapping produces None; otherwise it produces the item's Counterpoint tax category code as-is.

The iPaaS.com endpoint does not restrict this field to a fixed list of values, so whatever tax category codes exist in the subscriber's Counterpoint installation arrive unchanged. Because the codes are the subscriber's own, a receiving system that expects its own tax-class names will need those codes either renamed in Counterpoint or translated somewhere downstream. A taxable item with no tax category code recorded transfers with this field empty rather than as None — only the not-taxable flag produces None.

Barcode — Dynamic Formula

Source:

Dictionary<string, string> barcodeFilter =  new Dictionary<string, string>(){ 
{"ITEM_NO", ITEM_NO}, 
{"UNIT", "0"}, 
{"BARCOD_ID", "UPC"}, 
{"DIM_1_UPR", "*"}, 
{"DIM_2_UPR", "*"}, 
{"DIM_3_UPR", "*"} 
}; 
var specificBarcode = await ValueFromLookupTableAsync(barcodeFilter,"IM_BARCOD","BARCOD"); 
if (specificBarcode != null) {return Convert.ToString(specificBarcode);} else {return null;}

Destination: Barcode

This is an optional field. Finds a single barcode to record against the product. The formula searches the subscriber's Counterpoint barcode records for one that belongs to this item, is registered against the stocking unit, carries the barcode type UPC, and is not tied to any specific grid dimension. If such a barcode exists it is used; if none does, the product transfers with no barcode and the transfer still succeeds.

Three points follow from how narrowly that search is defined. Barcodes of any type other than UPC are not considered. Barcodes registered against an alternate unit rather than the stocking unit are not considered here — those are carried by the alternate unit collections instead. And grid-specific barcodes are excluded: a barcode that identifies one particular colour or size does not identify the product as a whole, so those belong to Add/Update NCR Counterpoint Product Variant Barcode TO iPaaS.com.

This is deliberately a single convenience value, not the subscriber's full barcode list. Add/Update NCR Counterpoint Product Barcode TO iPaaS.com carries every barcode on the item as its own record, and is the mapping to rely on where a product genuinely has more than one.

Categories — Dynamic Formula

Source: return await ConvertCategoriesToSpaceportIdsAsync(Categories); · Destination: Categories

This is an optional field. Assigns the product to its categories in iPaaS.com. The formula reads the item's ecommerce category assignments from NCR Counterpoint and converts each one to the matching iPaaS.com category.

Only the ecommerce categories are read. Counterpoint's other category structures are not included, so an item organised solely by those arrives with no category assignments.

The iPaaS.com endpoint requires each category referenced here to be one that already exists in iPaaS.com, and the same category must not be assigned twice. The formula honours that by including only those Counterpoint categories it can match to an existing iPaaS.com category. A category the subscriber has not yet transferred is left out silently — the product still transfers, and it is simply not assigned to that category. This is the most common reason for a product arriving with fewer categories than expected, and it resolves itself once categories are transferring: subscribers or their MiSP should have the product category collection running before this one, since this mapping does not pull a missing category across on its own.

Removing a category assignment later is not handled by this mapping. iPaaS.com treats an update through this collection as adding the categories listed, so a category dropped in Counterpoint is not automatically unassigned in iPaaS.com.

Type — Lookup Translation

Source: Lookup Translation — **CP Product ITEM_TYP To iPaaS** · Destination: Type

This is a required field — iPaaS.com rejects the product without it. Allowed values: Physical and Virtual. Records whether the product is something the subscriber ships or something they do not, by translating the Counterpoint item type.

  • I: Physical — a stocked inventory item.

  • N: Virtual — a non-inventory item.

  • S: Virtual — a service item.

Because Type is required, an item whose Counterpoint item type has no row in this table produces no value and is rejected rather than transferred without one. The three rows above cover the item types this table was built for; subscribers whose Counterpoint installation uses any further item type should add a row for it before enabling this collection, and should confirm the set against their own installation rather than assuming these three are exhaustive. Each row's result must remain either Physical or Virtual — a custom value causes the transfer to fail.

Status — Lookup Translation

Source: Lookup Translation — **CP Product STAT To iPaaS** · Destination: Status

This is a required field — iPaaS.com rejects the product without it. Allowed values: Preorder, Active, Disabled, and Discontinued. Records whether the product is available, by translating the Counterpoint item status.

  • A: Active — the item is active in Counterpoint.

  • D: Disabled — the item is discontinued in Counterpoint.

  • V: Disabled — the item is inactive in Counterpoint.

Two of the four values iPaaS.com accepts are never produced by this table as shipped. Preorder has no Counterpoint equivalent to translate from. Discontinued is not used even though Counterpoint has a discontinued status — the D row deliberately reports it as Disabled, which stops the product being sold rather than merely labelling it. Subscribers who want a discontinued Counterpoint item to arrive as Discontinued can change that row's result, but should confirm first that the receiving system treats Discontinued as unavailable, since the two values can behave differently downstream.

Because Status is required, an item whose Counterpoint status has no row here produces no value and is rejected rather than transferred without one. Each row's result must remain one of the four allowed values.

TrackingMethod — Lookup Translation

Source: Lookup Translation — **CP Product TRK_METH To iPaaS** · Destination: TrackingMethod

This is a required field — iPaaS.com rejects the product without it. Allowed values: Product and Variant. Records whether stock is counted for the product as a whole or separately for each variant, by translating the Counterpoint tracking method.

  • N: Product — the item is not tracked by grid or serial number.

  • A: Product — the item is tracked by an alternate method.

  • S: Product — the item is tracked by serial number.

  • G: Variant — the item is a grid item, tracked per grid cell.

This mapping decides the shape of the whole transfer, so it deserves more care than its two values suggest. iPaaS.com allows variants only where the tracking method is Variant; where it is Product, variants are not accepted in the request at all. Only Counterpoint grid items translate to Variant, which is what makes the child collections behave: for a grid item, Add NCR Counterpoint Product Variant TO iPaaS.com and its own children carry each grid cell, and for every other item they contribute nothing.

Note that serial-numbered items are reported as Product, not Variant — Counterpoint tracks their stock at item level and the serial numbers themselves travel separately, on Add/Update NCR Counterpoint Product Inventory TO iPaaS.com.

Because TrackingMethod is required, an item whose Counterpoint tracking method has no row here produces no value and is rejected rather than transferred without one. Each row's result must remain either Product or Variant. Subscribers should not repoint a grid item away from Variant to flatten it, as the variant collections would then send variants that iPaaS.com does not accept for a product-tracked product.

DefaultPrice — Dynamic Formula

Source: CoalesceToDecimal(REG_PRC,PRC_1) · Destination: DefaultPrice

This is a required field — iPaaS.com rejects the product without it. The product's standard selling price. The formula uses the Counterpoint item's regular price, falling back to its price-1 where no regular price is recorded.

SalePrice in this collection uses the same two prices in the opposite order, so on an item that records both, DefaultPrice reports the regular price and SalePrice reports price-1. On an item that records only one of them, both fields report that same value and the product arrives with no effective discount.

Because the field is required, subscribers should confirm that at least one of the two prices is populated on every item that passes this collection's filter. An item with neither recorded produces no value and is rejected.

SalePrice — Dynamic Formula

Source: CoalesceToDecimal(PRC_1,REG_PRC) · Destination: SalePrice

This is an optional field. The product's current selling price. The formula uses the Counterpoint item's price-1, falling back to its regular price where no price-1 is recorded — the reverse of DefaultPrice in this collection.

Counterpoint supports several price levels, and only price-1 is read here. Subscribers whose storefront pricing lives on a different price level should repoint this mapping at that level rather than relying on price-1.

Note that this mapping reports price-1 as the sale price whether or not the item is actually on sale. Where price-1 is simply the everyday price, DefaultPrice and SalePrice arrive equal, which correctly represents no discount.

Add NCR Counterpoint Product Alternate Unit 1 TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

!(IsEmpty(Parent.ALT_1_UNIT))

Filter Description.

A unit record is produced only for an item that actually defines alternate unit 1. An item that does not is skipped, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

This is the only thing that distinguishes this collection from the other four alternate unit collections, each of which applies the same test to its own slot. Subscribers or their MiSP editing this filter should keep it pointed at slot 1: repointing it at another slot would leave that slot carried twice and slot 1 not carried at all.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Parent.ALT_1_UNIT

Name

Required. IPaaS.com rejects the unit without it.

Dynamic Formula

ConvertToDouble(ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))

Conversion

Recommended. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_1_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_1_REG_PRC))

MSRP

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_1_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_1_PRC_1))

DefaultPrice

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_1_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_1_PRC_1))

SalePrice

Optional. .

Name — Dynamic Formula

Source: Parent.ALT_1_UNIT · Destination: Name

This is a required field — iPaaS.com rejects the unit without it. The name of the item's alternate unit 1 in NCR Counterpoint — something like Case, Box, or Dozen — carried across unchanged.

NCR Counterpoint gives every item a stocking unit and up to five alternate units, numbered 1 to 5. This collection carries alternate unit 1 specifically, and each of the five has its own collection alongside it. The collection's filter means it contributes nothing for an item that has no alternate unit 1 defined, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

The same unit name must not appear twice on one product. Counterpoint does not prevent a subscriber defining the same unit name in two alternate slots on the same item, so where that has happened the second one to transfer is rejected. Subscribers or their MiSP seeing unit records rejected as duplicates should check their items for a unit name repeated across slots.

Unit names are also the link the barcode collections rely on: Add/Update NCR Counterpoint Product Barcode TO iPaaS.com reports each barcode's unit by name, and iPaaS.com requires that name to be a valid unit for the product. A unit that fails to transfer here therefore takes its barcodes with it.

Conversion — Dynamic Formula

Source: ConvertToDouble(ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM)) · Destination: Conversion

This is a recommended field. iPaaS.com accepts the unit without it, but a unit with no conversion factor cannot be related to the stocking unit, so it should be mapped for any meaningful unit sync. Records how many stocking units make up one of this alternate unit.

NCR Counterpoint expresses the relationship as a fraction, and the formula divides the numerator by the denominator to produce a single number. A case of twelve is stored as 12 over 1 and arrives as 12.

A properly configured alternate unit in NCR Counterpoint records both parts of that fraction. Where the denominator is missing or zero the division has no meaningful result, so subscribers or their MiSP should confirm the alternate unit's setup on the item rather than expecting this mapping to compensate for it.

The result is used by MSRP, DefaultPrice, and SalePrice in this collection when a price has to be computed rather than read, so a wrong conversion factor produces wrong prices as well as a wrong quantity.

MSRP — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_1_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_1_REG_PRC)) · Destination: MSRP

This is an optional field. The manufacturer's suggested price for one of this alternate unit.

The formula prefers the regular price recorded against alternate unit 1 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00.

Two aspects of this deserve attention before subscribers rely on the value. The computed fallback is based on the item's price-1 rather than its regular price, even though the value being produced is the alternate unit's regular price — so on an item where the two differ, a computed MSRP is derived from the sale price rather than the list price. And the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit regular price of less than one currency unit can be treated as though it were not set at all, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

DefaultPrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_1_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_1_PRC_1)) · Destination: DefaultPrice

This is an optional field. The standard selling price for one of this alternate unit.

The formula prefers the price-1 recorded against alternate unit 1 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00. The computed fallback assumes no discount for buying the larger unit; subscribers who price a case below twelve singles must record that price against the alternate unit in Counterpoint rather than expecting the calculation to find it.

As with MSRP, the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit price of less than one currency unit can be treated as though it were not set, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

SalePrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_1_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_1_NUMER) / ConvertToDecimal(Parent.ALT_1_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_1_PRC_1)) · Destination: SalePrice

This is an optional field. The current selling price for one of this alternate unit.

This mapping performs exactly the same calculation as DefaultPrice in this collection, reading the same alternate-unit price-1 and falling back to the same computed figure. Alternate units therefore always arrive with their default price and sale price equal, which represents no discount. The pattern the parent collection uses for the item itself — where DefaultPrice reads the regular price and SalePrice reads price-1 — is not repeated here, because Counterpoint holds a single price-1 per alternate unit slot and the unit's regular price is already read by MSRP.

Subscribers or their MiSP who want alternate units to carry a genuine discount need a second price for this mapping to read; repointing it at the alternate unit's regular price would report that price as the sale price rather than producing a discount.

Add NCR Counterpoint Product Alternate Unit 2 TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

!(IsEmpty(Parent.ALT_2_UNIT))

Filter Description.

A unit record is produced only for an item that actually defines alternate unit 2. An item that does not is skipped, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

This is the only thing that distinguishes this collection from the other four alternate unit collections, each of which applies the same test to its own slot. Subscribers or their MiSP editing this filter should keep it pointed at slot 2: repointing it at another slot would leave that slot carried twice and slot 2 not carried at all.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Parent.ALT_2_UNIT

Name

Required. IPaaS.com rejects the unit without it.

Dynamic Formula

ConvertToDouble(ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))

Conversion

Recommended. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_2_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_2_REG_PRC))

MSRP

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_2_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_2_PRC_1))

DefaultPrice

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_2_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_2_PRC_1))

SalePrice

Optional. .

Name — Dynamic Formula

Source: Parent.ALT_2_UNIT · Destination: Name

This is a required field — iPaaS.com rejects the unit without it. The name of the item's alternate unit 2 in NCR Counterpoint — something like Case, Box, or Dozen — carried across unchanged.

NCR Counterpoint gives every item a stocking unit and up to five alternate units, numbered 1 to 5. This collection carries alternate unit 2 specifically, and each of the five has its own collection alongside it. The collection's filter means it contributes nothing for an item that has no alternate unit 2 defined, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

The same unit name must not appear twice on one product. Counterpoint does not prevent a subscriber defining the same unit name in two alternate slots on the same item, so where that has happened the second one to transfer is rejected. Subscribers or their MiSP seeing unit records rejected as duplicates should check their items for a unit name repeated across slots.

Unit names are also the link the barcode collections rely on: Add/Update NCR Counterpoint Product Barcode TO iPaaS.com reports each barcode's unit by name, and iPaaS.com requires that name to be a valid unit for the product. A unit that fails to transfer here therefore takes its barcodes with it.

Conversion — Dynamic Formula

Source: ConvertToDouble(ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM)) · Destination: Conversion

This is a recommended field. iPaaS.com accepts the unit without it, but a unit with no conversion factor cannot be related to the stocking unit, so it should be mapped for any meaningful unit sync. Records how many stocking units make up one of this alternate unit.

NCR Counterpoint expresses the relationship as a fraction, and the formula divides the numerator by the denominator to produce a single number. A case of twelve is stored as 12 over 1 and arrives as 12.

A properly configured alternate unit in NCR Counterpoint records both parts of that fraction. Where the denominator is missing or zero the division has no meaningful result, so subscribers or their MiSP should confirm the alternate unit's setup on the item rather than expecting this mapping to compensate for it.

The result is used by MSRP, DefaultPrice, and SalePrice in this collection when a price has to be computed rather than read, so a wrong conversion factor produces wrong prices as well as a wrong quantity.

MSRP — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_2_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_2_REG_PRC)) · Destination: MSRP

This is an optional field. The manufacturer's suggested price for one of this alternate unit.

The formula prefers the regular price recorded against alternate unit 2 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00.

Two aspects of this deserve attention before subscribers rely on the value. The computed fallback is based on the item's price-1 rather than its regular price, even though the value being produced is the alternate unit's regular price — so on an item where the two differ, a computed MSRP is derived from the sale price rather than the list price. And the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit regular price of less than one currency unit can be treated as though it were not set at all, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

DefaultPrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_2_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_2_PRC_1)) · Destination: DefaultPrice

This is an optional field. The standard selling price for one of this alternate unit.

The formula prefers the price-1 recorded against alternate unit 2 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00. The computed fallback assumes no discount for buying the larger unit; subscribers who price a case below twelve singles must record that price against the alternate unit in Counterpoint rather than expecting the calculation to find it.

As with MSRP, the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit price of less than one currency unit can be treated as though it were not set, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

SalePrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_2_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_2_NUMER) / ConvertToDecimal(Parent.ALT_2_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_2_PRC_1)) · Destination: SalePrice

This is an optional field. The current selling price for one of this alternate unit.

This mapping performs exactly the same calculation as DefaultPrice in this collection, reading the same alternate-unit price-1 and falling back to the same computed figure. Alternate units therefore always arrive with their default price and sale price equal, which represents no discount. The pattern the parent collection uses for the item itself — where DefaultPrice reads the regular price and SalePrice reads price-1 — is not repeated here, because Counterpoint holds a single price-1 per alternate unit slot and the unit's regular price is already read by MSRP.

Subscribers or their MiSP who want alternate units to carry a genuine discount need a second price for this mapping to read; repointing it at the alternate unit's regular price would report that price as the sale price rather than producing a discount.

Add NCR Counterpoint Product Alternate Unit 3 TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

!(IsEmpty(Parent.ALT_3_UNIT))

Filter Description.

A unit record is produced only for an item that actually defines alternate unit 3. An item that does not is skipped, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

This is the only thing that distinguishes this collection from the other four alternate unit collections, each of which applies the same test to its own slot. Subscribers or their MiSP editing this filter should keep it pointed at slot 3: repointing it at another slot would leave that slot carried twice and slot 3 not carried at all.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Parent.ALT_3_UNIT

Name

Required. IPaaS.com rejects the unit without it.

Dynamic Formula

ConvertToDouble(ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))

Conversion

Recommended. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_3_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_3_REG_PRC))

MSRP

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_3_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_3_PRC_1))

DefaultPrice

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_3_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_3_PRC_1))

SalePrice

Optional. .

Name — Dynamic Formula

Source: Parent.ALT_3_UNIT · Destination: Name

This is a required field — iPaaS.com rejects the unit without it. The name of the item's alternate unit 3 in NCR Counterpoint — something like Case, Box, or Dozen — carried across unchanged.

NCR Counterpoint gives every item a stocking unit and up to five alternate units, numbered 1 to 5. This collection carries alternate unit 3 specifically, and each of the five has its own collection alongside it. The collection's filter means it contributes nothing for an item that has no alternate unit 3 defined, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

The same unit name must not appear twice on one product. Counterpoint does not prevent a subscriber defining the same unit name in two alternate slots on the same item, so where that has happened the second one to transfer is rejected. Subscribers or their MiSP seeing unit records rejected as duplicates should check their items for a unit name repeated across slots.

Unit names are also the link the barcode collections rely on: Add/Update NCR Counterpoint Product Barcode TO iPaaS.com reports each barcode's unit by name, and iPaaS.com requires that name to be a valid unit for the product. A unit that fails to transfer here therefore takes its barcodes with it.

Conversion — Dynamic Formula

Source: ConvertToDouble(ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM)) · Destination: Conversion

This is a recommended field. iPaaS.com accepts the unit without it, but a unit with no conversion factor cannot be related to the stocking unit, so it should be mapped for any meaningful unit sync. Records how many stocking units make up one of this alternate unit.

NCR Counterpoint expresses the relationship as a fraction, and the formula divides the numerator by the denominator to produce a single number. A case of twelve is stored as 12 over 1 and arrives as 12.

A properly configured alternate unit in NCR Counterpoint records both parts of that fraction. Where the denominator is missing or zero the division has no meaningful result, so subscribers or their MiSP should confirm the alternate unit's setup on the item rather than expecting this mapping to compensate for it.

The result is used by MSRP, DefaultPrice, and SalePrice in this collection when a price has to be computed rather than read, so a wrong conversion factor produces wrong prices as well as a wrong quantity.

MSRP — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_3_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_3_REG_PRC)) · Destination: MSRP

This is an optional field. The manufacturer's suggested price for one of this alternate unit.

The formula prefers the regular price recorded against alternate unit 3 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00.

Two aspects of this deserve attention before subscribers rely on the value. The computed fallback is based on the item's price-1 rather than its regular price, even though the value being produced is the alternate unit's regular price — so on an item where the two differ, a computed MSRP is derived from the sale price rather than the list price. And the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit regular price of less than one currency unit can be treated as though it were not set at all, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

DefaultPrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_3_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_3_PRC_1)) · Destination: DefaultPrice

This is an optional field. The standard selling price for one of this alternate unit.

The formula prefers the price-1 recorded against alternate unit 3 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00. The computed fallback assumes no discount for buying the larger unit; subscribers who price a case below twelve singles must record that price against the alternate unit in Counterpoint rather than expecting the calculation to find it.

As with MSRP, the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit price of less than one currency unit can be treated as though it were not set, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

SalePrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_3_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_3_NUMER) / ConvertToDecimal(Parent.ALT_3_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_3_PRC_1)) · Destination: SalePrice

This is an optional field. The current selling price for one of this alternate unit.

This mapping performs exactly the same calculation as DefaultPrice in this collection, reading the same alternate-unit price-1 and falling back to the same computed figure. Alternate units therefore always arrive with their default price and sale price equal, which represents no discount. The pattern the parent collection uses for the item itself — where DefaultPrice reads the regular price and SalePrice reads price-1 — is not repeated here, because Counterpoint holds a single price-1 per alternate unit slot and the unit's regular price is already read by MSRP.

Subscribers or their MiSP who want alternate units to carry a genuine discount need a second price for this mapping to read; repointing it at the alternate unit's regular price would report that price as the sale price rather than producing a discount.

Add NCR Counterpoint Product Alternate Unit 4 TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

!(IsEmpty(Parent.ALT_4_UNIT))

Filter Description.

A unit record is produced only for an item that actually defines alternate unit 4. An item that does not is skipped, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

This is the only thing that distinguishes this collection from the other four alternate unit collections, each of which applies the same test to its own slot. Subscribers or their MiSP editing this filter should keep it pointed at slot 4: repointing it at another slot would leave that slot carried twice and slot 4 not carried at all.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Parent.ALT_4_UNIT

Name

Required. IPaaS.com rejects the unit without it.

Dynamic Formula

ConvertToDouble(ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))

Conversion

Recommended. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_4_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_4_REG_PRC))

MSRP

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_4_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_4_PRC_1))

DefaultPrice

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_4_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_4_PRC_1))

SalePrice

Optional. .

Name — Dynamic Formula

Source: Parent.ALT_4_UNIT · Destination: Name

This is a required field — iPaaS.com rejects the unit without it. The name of the item's alternate unit 4 in NCR Counterpoint — something like Case, Box, or Dozen — carried across unchanged.

NCR Counterpoint gives every item a stocking unit and up to five alternate units, numbered 1 to 5. This collection carries alternate unit 4 specifically, and each of the five has its own collection alongside it. The collection's filter means it contributes nothing for an item that has no alternate unit 4 defined, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

The same unit name must not appear twice on one product. Counterpoint does not prevent a subscriber defining the same unit name in two alternate slots on the same item, so where that has happened the second one to transfer is rejected. Subscribers or their MiSP seeing unit records rejected as duplicates should check their items for a unit name repeated across slots.

Unit names are also the link the barcode collections rely on: Add/Update NCR Counterpoint Product Barcode TO iPaaS.com reports each barcode's unit by name, and iPaaS.com requires that name to be a valid unit for the product. A unit that fails to transfer here therefore takes its barcodes with it.

Conversion — Dynamic Formula

Source: ConvertToDouble(ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM)) · Destination: Conversion

This is a recommended field. iPaaS.com accepts the unit without it, but a unit with no conversion factor cannot be related to the stocking unit, so it should be mapped for any meaningful unit sync. Records how many stocking units make up one of this alternate unit.

NCR Counterpoint expresses the relationship as a fraction, and the formula divides the numerator by the denominator to produce a single number. A case of twelve is stored as 12 over 1 and arrives as 12.

A properly configured alternate unit in NCR Counterpoint records both parts of that fraction. Where the denominator is missing or zero the division has no meaningful result, so subscribers or their MiSP should confirm the alternate unit's setup on the item rather than expecting this mapping to compensate for it.

The result is used by MSRP, DefaultPrice, and SalePrice in this collection when a price has to be computed rather than read, so a wrong conversion factor produces wrong prices as well as a wrong quantity.

MSRP — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_4_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_4_REG_PRC)) · Destination: MSRP

This is an optional field. The manufacturer's suggested price for one of this alternate unit.

The formula prefers the regular price recorded against alternate unit 4 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00.

Two aspects of this deserve attention before subscribers rely on the value. The computed fallback is based on the item's price-1 rather than its regular price, even though the value being produced is the alternate unit's regular price — so on an item where the two differ, a computed MSRP is derived from the sale price rather than the list price. And the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit regular price of less than one currency unit can be treated as though it were not set at all, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

DefaultPrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_4_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_4_PRC_1)) · Destination: DefaultPrice

This is an optional field. The standard selling price for one of this alternate unit.

The formula prefers the price-1 recorded against alternate unit 4 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00. The computed fallback assumes no discount for buying the larger unit; subscribers who price a case below twelve singles must record that price against the alternate unit in Counterpoint rather than expecting the calculation to find it.

As with MSRP, the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit price of less than one currency unit can be treated as though it were not set, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

SalePrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_4_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_4_NUMER) / ConvertToDecimal(Parent.ALT_4_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_4_PRC_1)) · Destination: SalePrice

This is an optional field. The current selling price for one of this alternate unit.

This mapping performs exactly the same calculation as DefaultPrice in this collection, reading the same alternate-unit price-1 and falling back to the same computed figure. Alternate units therefore always arrive with their default price and sale price equal, which represents no discount. The pattern the parent collection uses for the item itself — where DefaultPrice reads the regular price and SalePrice reads price-1 — is not repeated here, because Counterpoint holds a single price-1 per alternate unit slot and the unit's regular price is already read by MSRP.

Subscribers or their MiSP who want alternate units to carry a genuine discount need a second price for this mapping to read; repointing it at the alternate unit's regular price would report that price as the sale price rather than producing a discount.

Add NCR Counterpoint Product Alternate Unit 5 TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

!(IsEmpty(Parent.ALT_5_UNIT))

Filter Description.

A unit record is produced only for an item that actually defines alternate unit 5. An item that does not is skipped, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

This is the only thing that distinguishes this collection from the other four alternate unit collections, each of which applies the same test to its own slot. Subscribers or their MiSP editing this filter should keep it pointed at slot 5: repointing it at another slot would leave that slot carried twice and slot 5 not carried at all.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Parent.ALT_5_UNIT

Name

Required. IPaaS.com rejects the unit without it.

Dynamic Formula

ConvertToDouble(ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))

Conversion

Recommended. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_5_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_5_REG_PRC))

MSRP

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_5_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_5_PRC_1))

DefaultPrice

Optional. .

Dynamic Formula

(CoalesceToInt(Parent.ALT_5_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_5_PRC_1))

SalePrice

Optional. .

Name — Dynamic Formula

Source: Parent.ALT_5_UNIT · Destination: Name

This is a required field — iPaaS.com rejects the unit without it. The name of the item's alternate unit 5 in NCR Counterpoint — something like Case, Box, or Dozen — carried across unchanged.

NCR Counterpoint gives every item a stocking unit and up to five alternate units, numbered 1 to 5. This collection carries alternate unit 5 specifically, and each of the five has its own collection alongside it. The collection's filter means it contributes nothing for an item that has no alternate unit 5 defined, so items using fewer than five alternate units produce fewer unit records rather than empty ones.

The same unit name must not appear twice on one product. Counterpoint does not prevent a subscriber defining the same unit name in two alternate slots on the same item, so where that has happened the second one to transfer is rejected. Subscribers or their MiSP seeing unit records rejected as duplicates should check their items for a unit name repeated across slots.

Unit names are also the link the barcode collections rely on: Add/Update NCR Counterpoint Product Barcode TO iPaaS.com reports each barcode's unit by name, and iPaaS.com requires that name to be a valid unit for the product. A unit that fails to transfer here therefore takes its barcodes with it.

Conversion — Dynamic Formula

Source: ConvertToDouble(ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM)) · Destination: Conversion

This is a recommended field. iPaaS.com accepts the unit without it, but a unit with no conversion factor cannot be related to the stocking unit, so it should be mapped for any meaningful unit sync. Records how many stocking units make up one of this alternate unit.

NCR Counterpoint expresses the relationship as a fraction, and the formula divides the numerator by the denominator to produce a single number. A case of twelve is stored as 12 over 1 and arrives as 12.

A properly configured alternate unit in NCR Counterpoint records both parts of that fraction. Where the denominator is missing or zero the division has no meaningful result, so subscribers or their MiSP should confirm the alternate unit's setup on the item rather than expecting this mapping to compensate for it.

The result is used by MSRP, DefaultPrice, and SalePrice in this collection when a price has to be computed rather than read, so a wrong conversion factor produces wrong prices as well as a wrong quantity.

MSRP — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_5_REG_PRC,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_5_REG_PRC)) · Destination: MSRP

This is an optional field. The manufacturer's suggested price for one of this alternate unit.

The formula prefers the regular price recorded against alternate unit 5 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00.

Two aspects of this deserve attention before subscribers rely on the value. The computed fallback is based on the item's price-1 rather than its regular price, even though the value being produced is the alternate unit's regular price — so on an item where the two differ, a computed MSRP is derived from the sale price rather than the list price. And the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit regular price of less than one currency unit can be treated as though it were not set at all, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

DefaultPrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_5_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_5_PRC_1)) · Destination: DefaultPrice

This is an optional field. The standard selling price for one of this alternate unit.

The formula prefers the price-1 recorded against alternate unit 5 on the item. Where no such price is set, it computes one instead: it multiplies the unit's conversion factor by the item's price-1 and rounds the result to two decimal places — so a case of twelve on an item priced at 2.50 produces 30.00. The computed fallback assumes no discount for buying the larger unit; subscribers who price a case below twelve singles must record that price against the alternate unit in Counterpoint rather than expecting the calculation to find it.

As with MSRP, the test for whether a price is set converts it to a whole number before comparing it to zero, so an alternate-unit price of less than one currency unit can be treated as though it were not set, and the computed price used in preference to it. Subscribers or their MiSP whose alternate units are priced below one currency unit should validate the results in a staging environment before relying on them in production.

SalePrice — Dynamic Formula

Source: (CoalesceToInt(Parent.ALT_5_PRC_1,0) <= 0 ? Round(ConvertToDouble(((ConvertToDecimal(Parent.ALT_5_NUMER) / ConvertToDecimal(Parent.ALT_5_DENOM))* ConvertToDecimal(Parent.PRC_1))),2) : ConvertToDouble(Parent.ALT_5_PRC_1)) · Destination: SalePrice

This is an optional field. The current selling price for one of this alternate unit.

This mapping performs exactly the same calculation as DefaultPrice in this collection, reading the same alternate-unit price-1 and falling back to the same computed figure. Alternate units therefore always arrive with their default price and sale price equal, which represents no discount. The pattern the parent collection uses for the item itself — where DefaultPrice reads the regular price and SalePrice reads price-1 — is not repeated here, because Counterpoint holds a single price-1 per alternate unit slot and the unit's regular price is already read by MSRP.

Subscribers or their MiSP who want alternate units to carry a genuine discount need a second price for this mapping to read; repointing it at the alternate unit's regular price would report that price as the sale price rather than producing a discount.

Add/Update NCR Counterpoint Product Barcode TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

if (DIM_1_UPR != "*"){return false;}
else {return true;}

Filter Description.

Only barcodes that are not tied to a specific grid dimension are transferred. NCR Counterpoint marks an unused grid dimension with an asterisk, and this filter passes a barcode only where its first grid dimension carries that marker — that is, where the barcode identifies the item as a whole rather than one particular colour or size.

Grid-specific barcodes are excluded here and carried instead by Add/Update NCR Counterpoint Product Variant Barcode TO iPaaS.com, whose filter is the exact inverse of this one. Between the two collections, every barcode on the item is transferred exactly once. Subscribers or their MiSP editing either filter should edit both, or the two will begin to overlap or to leave barcodes behind.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

`if (UNIT == "0"){return Parent.STK_UNIT;}

else if (UNIT == "!"){return "";}

else if (UNIT == "1"){return Parent.ALT_1_UNIT;}

else if (UNIT == "2"){return Parent.ALT_2_UNIT;}

else if (UNIT == "3"){return Parent.ALT_3_UNIT;}

else if (UNIT== "4"){return Parent.ALT_4_UNIT;}

else if (UNIT == "5"){return Parent.ALT_5_UNIT;}`

Unit

Optional. Reports which of the item's units this barcode identifies.

Dynamic Formula

return await GetSpaceportIdAsync(BARCOD_ID, "Alternate Id Type", SpaceportSystemId);

AlternateIdTypeId

Required. IPaaS.com rejects the barcode without it, and the value must be an alternate id type that already exists in iPaaS.com.

Field

BARCOD

AlternateId

Required. IPaaS.com rejects the barcode without it.

Unit — Dynamic Formula

Source:

if (UNIT == "0"){return Parent.STK_UNIT;}else if (UNIT == "!"){return "";}else if (UNIT == "1"){return Parent.ALT_1_UNIT;}else if (UNIT == "2"){return Parent.ALT_2_UNIT;}else if (UNIT == "3"){return Parent.ALT_3_UNIT;}else if (UNIT== "4"){return Parent.ALT_4_UNIT;}else if (UNIT == "5"){return Parent.ALT_5_UNIT;}

Destination: Unit

This is an optional field, but where it is supplied iPaaS.com requires it to be a valid unit name for the product — not a unit id, and not a name the product does not have. Reports which of the item's units this barcode identifies.

NCR Counterpoint records the unit against a barcode as a number rather than a name, and the formula converts it by reading the matching unit name from the parent item: 0 gives the stocking unit, and 1 through 5 give the corresponding alternate unit. A value of an exclamation mark means no particular unit, and produces an empty value.

Because the endpoint validates the name against the product's units, this mapping depends on the unit collections having transferred successfully — Add NCR Counterpoint Product Stocking Unit TO iPaaS.com and the five alternate unit collections between them supply the names this mapping produces. A barcode naming a unit that did not transfer is rejected. Subscribers or their MiSP should have the unit collections running before enabling this one.

The conversion covers the stocking unit, the five alternate units, and the no-unit marker. A Counterpoint unit value outside that set produces no value at all rather than an empty one, so subscribers whose installation records unit values beyond those should validate this mapping's behavior in a staging environment before relying on it in production.

AlternateIdTypeId — Dynamic Formula

Source: return await GetSpaceportIdAsync(BARCOD_ID, "Alternate Id Type", SpaceportSystemId); · Destination: AlternateIdTypeId

This is a required field — iPaaS.com rejects the barcode without it, and the value must be an alternate id type that already exists in iPaaS.com. Records what kind of identifier this is. The formula takes the Counterpoint barcode type and looks up the matching alternate id type in iPaaS.com.

This is the mapping in this collection with a hard prerequisite. Because the endpoint requires a valid type, an iPaaS.com alternate id type matching each Counterpoint barcode type in use MUST exist before the first transfer — the formula does not create one. Where no match is found the mapping produces no value and the barcode is rejected. Subscribers or their MiSP should EITHER (a) transfer their Counterpoint barcode types into iPaaS.com before enabling this collection, OR (b) create the matching alternate id types in iPaaS.com by hand — one MUST be done at install time.

Note that this collection carries barcodes of every type the subscriber uses, not only UPC. That is a deliberate difference from the Barcode convenience mappings on the product and unit collections, which look only for a UPC: those answer "what is this product's barcode", where this collection answers "what identifiers does this product have". The consequence is that every barcode type in the subscriber's installation needs a matching alternate id type, not just UPC.

AlternateId — Field

Source: BARCOD · Destination: AlternateId

This is a required field — iPaaS.com rejects the barcode without it. The barcode itself, as recorded in NCR Counterpoint and carried across unchanged.

iPaaS.com does not allow the same barcode to appear twice on a product, nor the same combination of alternate id type and unit to appear twice. The second constraint is the one subscribers meet in practice: it means a product may carry only one barcode of a given type per unit, so an item with two UPC barcodes both registered against the stocking unit has one of them rejected. Where that occurs, the item's barcode setup in Counterpoint is the place to resolve it.

Add/Update NCR Counterpoint Product Inventory TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Field

AVG_COST

Cost

Optional. .

Field

QTY_AVAIL

QtyAvailable

Optional. The quantity of this item available to sell at this location, as NCR Counterpoint calculates it.

Field

QTY_ON_HND

QtyOnHand

Optional. .

Dynamic Formula

return await LocationIdFromNameAsync(LOC_ID);

LocationId

Required. IPaaS.com rejects the inventory record without it, and the value must be a location that already exists in iPaaS.com.

Cost — Field

Source: AVG_COST · Destination: Cost

This is an optional field. NCR Counterpoint's rolling average cost for this item at this location, carried across unchanged.

Average cost moves as stock is received at different prices, so this is a point-in-time figure — it reflects the cost when the transfer ran, not a live value, and it is refreshed on the next transfer of the item. It is held per location, so the same item can arrive with different costs at different locations, which is expected rather than a fault.

This is a different figure from the Parent Last Cost custom field on Add/Update NCR Counterpoint Product TO iPaaS.com, which reports the price on the most recent receipt rather than a rolling average and is not held per location. Subscribers reporting on margin should be deliberate about which of the two they use.

QtyAvailable — Field

Source: QTY_AVAIL · Destination: QtyAvailable

This is an optional field, but it is the figure a storefront normally uses to decide what can be sold, so it should be mapped for any meaningful inventory sync. The quantity of this item available to sell at this location, as NCR Counterpoint calculates it.

Available quantity is generally lower than QtyOnHand, because Counterpoint reduces it by stock already committed to orders. The gap between the two is normal and is the point of carrying both. This is a point-in-time figure — it reflects the moment the transfer ran, and sales made after that are not reflected until the item transfers again.

QtyOnHand — Field

Source: QTY_ON_HND · Destination: QtyOnHand

This is an optional field. The physical quantity of this item at this location, as counted in NCR Counterpoint.

This is stock on the shelf, including any already committed to orders — which is why it is usually higher than QtyAvailable. It is the right figure for stock-on-hand reporting and the wrong one for deciding what a storefront may sell. Like QtyAvailable, it is a point-in-time figure refreshed on the next transfer of the item.

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 location that already exists in iPaaS.com. Records which location this stock sits at. The formula takes the Counterpoint location id and looks up the matching iPaaS.com location by name.

This is the one mapping in this collection with a hard prerequisite. Because the endpoint requires a valid location, an iPaaS.com location whose name matches the Counterpoint location id MUST exist before the first transfer — the formula does not create one. Where no match is found the mapping produces no value and the inventory record is rejected. Subscribers or their MiSP should EITHER (a) transfer their Counterpoint locations into iPaaS.com before enabling this collection, OR (b) create the matching locations in iPaaS.com by hand — one MUST be done at install time.

The match is by name, so an iPaaS.com location renamed after setup stops matching and its inventory begins to fail. iPaaS.com also rejects the same location appearing twice on one product, which Counterpoint's one-record-per-location structure naturally satisfies.

Add/Update NCR Counterpoint Product Option TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Field

GRID_ENT_ORDER

Order

Optional. .

Field

GRID_DIM_TAG

OptionName

Required. IPaaS.com rejects the option without it.

Order — Field

Source: GRID_ENT_ORDER · Destination: Order

This is an optional field. The position this option occupies among the product's options, taken from the order the grid dimensions are entered in within NCR Counterpoint.

Mapping it keeps the options presenting in the order the subscriber already sees in Counterpoint — colour before size, if that is how the grid was set up — rather than in an arbitrary one. Options transferred without an order are still accepted by iPaaS.com; only their presentation order is left undefined.

OptionName — Field

Source: GRID_DIM_TAG · Destination: OptionName

This is a required field — iPaaS.com rejects the option without it. The name of the grid dimension as labelled in NCR Counterpoint — typically something like Colour or Size — carried across unchanged.

The same option name must not appear twice on one product, which Counterpoint's grid structure naturally satisfies as each dimension is distinct. A grid dimension left unlabelled in Counterpoint produces no value and the option is rejected, so subscribers or their MiSP should confirm every grid dimension in use carries a label before enabling this collection.

This collection describes what options exist on the product; Add/Update NCR Counterpoint Product Option Value TO iPaaS.com carries the values each option can take. The Options mapping on Add NCR Counterpoint Product Variant TO iPaaS.com separately records which of those values a given variant carries, and it reads the same Counterpoint grid labels — so a dimension renamed in Counterpoint changes both.

Add/Update NCR Counterpoint Product Option Value TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product Option TO iPaaS.com.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Field

DIM_UPR

Value

Required. IPaaS.com rejects the option value without it.

Field

DIM_SEQ_NO

Order

Optional. .

Value — Field

Source: DIM_UPR · Destination: Value

This is a required field — iPaaS.com rejects the option value without it. One of the values the parent option can take — Blue, or Large — as recorded against the grid dimension in NCR Counterpoint.

Counterpoint holds these values in upper case, and they transfer unchanged, so they arrive upper case in iPaaS.com. Subscribers whose storefront displays them directly should expect that and handle any presentation casing downstream rather than by editing this mapping, because the same upper-case values are what the Options mapping on Add NCR Counterpoint Product Variant TO iPaaS.com records against each variant. Changing the casing here alone would leave a variant's option value no longer matching the option value defined for the product.

The same value must not appear twice within one option, which Counterpoint's grid structure naturally satisfies.

Order — Field

Source: DIM_SEQ_NO · Destination: Order

This is an optional field. The position this value occupies within its option, taken from the sequence recorded against the grid dimension value in NCR Counterpoint.

Mapping it keeps values presenting in the subscriber's intended order — Small, Medium, Large rather than alphabetically — which matters most for sizes, where alphabetical order is actively misleading. Values transferred without an order are still accepted by iPaaS.com; only their presentation order is left undefined.

Add/Update NCR Counterpoint Product Substitute Item TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Filter

var external = GetSpaceportId(SUBST_ITEM_NO, "Product", SpaceportSystemId);
if (external == null || external == 0) {return false;}
else {return true;}

Filter Description.

A substitute relationship is transferred only where the substitute product has already been transferred into iPaaS.com. The filter takes the Counterpoint substitute item number, looks for a matching product in iPaaS.com, and passes the record only if one is found.

This is what makes the collection safe to enable rather than a source of failures. iPaaS.com requires the related product to be one that already exists, and the filter enforces that up front: a substitute item the subscriber has not yet transferred is skipped silently rather than rejected. The relationship is simply not created, and the parent product transfers normally.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

GetSpaceportId(SUBST_ITEM_NO, "Product", SpaceportSystemId)

RelatedId

Required. IPaaS.com rejects the relationship without it, and the value must identify a product that already exists in iPaaS.com.

Static

Static value — Replacement

RelatedType

Required. IPaaS.com rejects the relationship without it.

RelatedId — Dynamic Formula

Source: GetSpaceportId(SUBST_ITEM_NO, "Product", SpaceportSystemId) · Destination: RelatedId

This is a required field — iPaaS.com rejects the relationship without it, and the value must identify a product that already exists in iPaaS.com. Records which product is the substitute. The formula takes the Counterpoint substitute item number and looks up the matching product in iPaaS.com.

This is the same lookup the collection's filter performs, which is what keeps the two consistent: by the time this mapping runs, the filter has already established that the substitute exists, so the lookup succeeds. The mapping does not transfer the substitute product as a prerequisite — it only finds one already there.

The relationship is recorded against products rather than variants. Counterpoint holds substitutions at item level, so a grid item's substitute applies to the item as a whole and not to any particular colour or size.

iPaaS.com does not allow the same combination of related product and relationship type to appear twice on one product, which Counterpoint's structure naturally satisfies as an item lists a given substitute once.

RelatedType — Static

Source: Static value —Replacement` · Destination: RelatedType

This is a required field — iPaaS.com rejects the relationship without it. Allowed values: Replacement, Similar Item, and Related Product. Records what kind of relationship this is.

Every record from this collection is marked Replacement, which is the value that matches what NCR Counterpoint means by a substitute item: something to sell in place of the original when the original is unavailable. This is a genuine constant rather than a value awaiting configuration, and it correctly describes every record this collection produces.

Subscribers or their MiSP whose storefront distinguishes between a true replacement and a merely similar or complementary product should be aware that Counterpoint's substitute list does not carry that distinction, so this collection cannot infer it — every substitute arrives as a Replacement. Where a finer distinction is wanted, it has to come from somewhere other than the Counterpoint substitute list. Any replacement for this static value must remain one of the three allowed values; a custom relationship type causes the transfer to fail.

Add NCR Counterpoint Product Variant TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

Dictionary<string, string> barcodeFilter = new Dictionary<string, string>(){ {"ITEM_NO", Parent.ITEM_NO}, {"UNIT", "0"}, {"BARCOD_ID", "UPC"}, {"DIM_1_UPR", DIM_1_UPR}, {"DIM_2_UPR", DIM_2_UPR}, {"DIM_3_UPR", DIM_3_UPR} }; var specificBarcode = await ValueFromLookupTableAsync(barcodeFilter,"IM_BARCOD","BARCOD"); if (specificBarcode != null) {return Convert.ToString(specificBarcode);} else {return null;}

Barcode

Optional. .

Dynamic Formula

CoalesceToDecimal(Parent.REG_PRC,Parent.PRC_1)

DefaultPrice

Optional. .

Dynamic Formula

CoalesceToDecimal(Parent.PRC_1,Parent.REG_PRC)

SalePrice

Optional. .

Dynamic Formula

(Parent.ITEM_NO + "|" + DIM_1_UPR + (DIM_2_UPR == "*" ? "" : "|" + DIM_2_UPR) + (DIM_3_UPR == "*" ? "" : "|" + DIM_3_UPR)).TrimEnd()

Sku

Required. IPaaS.com rejects the variant without it, and it must not match the parent product's SKU.

Dynamic Formula

Parent.WEIGHT

Weight

Optional. .

Dynamic Formula

BuildC5GridOptions(DIM_1_UPR, DIM_2_UPR, DIM_3_UPR, Parent)

Options

Optional. Records which grid values this variant represents — the colour, size, or other dimensions that distinguish it.

Barcode — Dynamic Formula

Source:

Dictionary<string, string> barcodeFilter =  new Dictionary<string, string>(){ 
{"ITEM_NO", Parent.ITEM_NO}, 
{"UNIT", "0"}, 
{"BARCOD_ID", "UPC"}, 
{"DIM_1_UPR", DIM_1_UPR}, 
{"DIM_2_UPR", DIM_2_UPR}, 
{"DIM_3_UPR", DIM_3_UPR} 
}; 
var specificBarcode = await ValueFromLookupTableAsync(barcodeFilter,"IM_BARCOD","BARCOD"); 
if (specificBarcode != null) {return Convert.ToString(specificBarcode);} else {return null;}

Destination: Barcode

This is an optional field. Finds a single barcode to record against this variant. The formula searches the subscriber's Counterpoint barcode records for one belonging to the parent item that is registered against the stocking unit, carries the barcode type UPC, and matches this variant's exact grid dimensions. If such a barcode exists it is used; if none does, the variant transfers with no barcode and the transfer still succeeds.

The match on grid dimensions is what separates this from the parent product's barcode: this mapping wants the barcode for this particular colour and size, where the parent wants the one that identifies the item as a whole. Barcodes of any type other than UPC, and barcodes registered against an alternate unit, are not considered.

This is a single convenience value rather than the variant's full barcode list. Add/Update NCR Counterpoint Product Variant Barcode TO iPaaS.com carries every grid-specific barcode as its own record, and is the mapping to rely on where a variant genuinely has more than one.

DefaultPrice — Dynamic Formula

Source: CoalesceToDecimal(Parent.REG_PRC,Parent.PRC_1) · Destination: DefaultPrice

This is an optional field. The variant's standard selling price. The formula reads the parent item's regular price, falling back to the parent's price-1 where no regular price is recorded — the same calculation the parent collection performs for its own DefaultPrice.

This is the item's price, not the variant's price. Every variant of an item therefore arrives at the same price, and any grid-cell price the subscriber holds in Counterpoint is not read. Where variants genuinely differ in price — a larger size costing more, for instance — this mapping does not reflect that, and subscribers or their MiSP should repoint it at the price level their installation uses for grid pricing before relying on variant prices downstream.

SalePrice — Dynamic Formula

Source: CoalesceToDecimal(Parent.PRC_1,Parent.REG_PRC) · Destination: SalePrice

This is an optional field. The variant's current selling price. The formula reads the parent item's price-1, falling back to the parent's regular price where no price-1 is recorded — the reverse of DefaultPrice in this collection.

As with DefaultPrice, this is the item's price and not the variant's. All variants of an item arrive at the same sale price, and grid-cell pricing held in Counterpoint is not read. The same caution applies: subscribers whose variants differ in price should repoint this mapping at the price level their installation uses for grid pricing.

Sku — Dynamic Formula

Source: (Parent.ITEM_NO + "|" + DIM_1_UPR + (DIM_2_UPR == "*" ? "" : "|" + DIM_2_UPR) + (DIM_3_UPR == "*" ? "" : "|" + DIM_3_UPR)).TrimEnd() · Destination: Sku

This is a required field — iPaaS.com rejects the variant without it, and it must not match the parent product's SKU. Builds the variant's identifier from the parent item number followed by each of the variant's grid dimensions, separated by a bar.

Counterpoint marks an unused grid dimension with an asterisk, and the formula omits those rather than passing them through, so a variant using one dimension produces a two-part SKU and a variant using all three produces a four-part SKU. Because the parent item number is always followed by at least the first dimension, the result never collides with the parent's own SKU.

This format is not merely cosmetic. Other mappings in this family reconstruct the same string to match records back to variants, so changing the format here breaks those matches — the per-variant barcode custom fields on the unit collections are built this way, and so is the recognition of variant records elsewhere. Subscribers or their MiSP should treat this mapping as structural and leave the format alone unless they are prepared to revisit the collections that depend on it.

Weight — Dynamic Formula

Source: Parent.WEIGHT · Destination: Weight

This is an optional field. The variant's weight, read from the parent item's weight in NCR Counterpoint.

This is the item's weight, not the variant's — every variant of an item arrives at the same weight. Where variants genuinely differ in weight, this mapping does not reflect that, and subscribers relying on weight for shipping should confirm the difference is immaterial or repoint the mapping at a source that carries it. As on the parent, iPaaS.com attaches no unit of measure to the number.

Options — Dynamic Formula

Source: BuildC5GridOptions(DIM_1_UPR, DIM_2_UPR, DIM_3_UPR, Parent) · Destination: Options

This is an optional field, though a variant with no options is difficult to tell apart from its siblings, so it should be mapped for any meaningful variant sync. Records which grid values this variant represents — the colour, size, or other dimensions that distinguish it.

The formula produces one option per grid dimension the variant actually uses. For each, it takes the dimension's name from the parent item's grid setup, the value from the variant itself, and an order from the parent's grid entry sequence so the options present in the same order the subscriber sees in Counterpoint. Dimensions marked unused are skipped, and a variant using none at all produces no options.

Where each option's value is required by iPaaS.com, the option name is not, so a grid dimension left unnamed in Counterpoint still produces a usable option. The same option name must not appear twice on a variant, which Counterpoint's grid structure naturally satisfies as each dimension is distinct.

This collection also has a sibling pair — Add/Update NCR Counterpoint Product Option TO iPaaS.com and Add/Update NCR Counterpoint Product Option Value TO iPaaS.com — which carry the product's option definitions and their possible values. Those describe what options exist on the product; this mapping records which of those values a given variant carries.

Add/Update NCR Counterpoint Product Variant Barcode TO iPaaS.com

Parent: Add NCR Counterpoint Product Variant TO iPaaS.com.

Mapping Filter

if (DIM_1_UPR == "*"){return false;}
else {return true;}

Filter Description.

Only barcodes that are tied to a specific grid dimension are transferred. NCR Counterpoint marks an unused grid dimension with an asterisk, and this filter passes a barcode only where its first grid dimension carries something other than that marker — that is, where the barcode identifies one particular colour or size rather than the item as a whole.

Barcodes that are not grid-specific are excluded here and carried instead by Add/Update NCR Counterpoint Product Barcode TO iPaaS.com, whose filter is the exact inverse of this one. Between the two collections, every barcode on the item is transferred exactly once. Subscribers or their MiSP editing either filter should edit both, or the two will begin to overlap or to leave barcodes behind.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Dynamic Formula

`if (UNIT == "0"){return Parent.Parent.STK_UNIT;}

else if (UNIT == "!"){return "";}

else if (UNIT == "1"){return Parent.Parent.ALT_1_UNIT;}

else if (UNIT == "2"){return Parent.Parent.ALT_2_UNIT;}

else if (UNIT == "3"){return Parent.Parent.ALT_3_UNIT;}

else if (UNIT == "4"){return Parent.Parent.ALT_4_UNIT;}

else if (UNIT == "5"){return Parent.Parent.ALT_5_UNIT;}`

Unit

Optional. Reports which of the item's units this variant barcode identifies.

Dynamic Formula

return await GetSpaceportIdAsync(BARCOD_ID, "Alternate Id Type", SpaceportSystemId);

AlternateIdTypeId

Required. IPaaS.com rejects the barcode without it, and the value must be an alternate id type that already exists in iPaaS.com.

Field

BARCOD

AlternateId

Required. IPaaS.com rejects the barcode without it.

Unit — Dynamic Formula

Source:

if (UNIT == "0"){return Parent.Parent.STK_UNIT;}else if (UNIT == "!"){return "";}else if (UNIT == "1"){return Parent.Parent.ALT_1_UNIT;}else if (UNIT == "2"){return Parent.Parent.ALT_2_UNIT;}else if (UNIT == "3"){return Parent.Parent.ALT_3_UNIT;}else if (UNIT == "4"){return Parent.Parent.ALT_4_UNIT;}else if (UNIT == "5"){return Parent.Parent.ALT_5_UNIT;}

Destination: Unit

This is an optional field, but where it is supplied iPaaS.com requires it to be a valid unit name for the product — not a unit id, and not a name the product does not have. Reports which of the item's units this variant barcode identifies.

NCR Counterpoint records the unit against a barcode as a number rather than a name, and the formula converts it by reading the matching unit name from the item. Because this collection sits one level deeper than its product-level counterpart — its records belong to a variant, whose own parent is the product — the formula reaches up two levels to find the item that holds the unit names. The conversion is otherwise the same: 0 gives the stocking unit, and 1 through 5 give the corresponding alternate unit. A value of an exclamation mark means no particular unit, and produces an empty value.

Because the endpoint validates the name against the product's units, this mapping depends on the unit collections having transferred successfully — Add NCR Counterpoint Product Stocking Unit TO iPaaS.com and the five alternate unit collections between them supply the names this mapping produces. A barcode naming a unit that did not transfer is rejected. Subscribers or their MiSP should have the unit collections running before enabling this one.

The conversion covers the stocking unit, the five alternate units, and the no-unit marker. A Counterpoint unit value outside that set produces no value at all rather than an empty one, so subscribers whose installation records unit values beyond those should validate this mapping's behavior in a staging environment before relying on it in production.

AlternateIdTypeId — Dynamic Formula

Source: return await GetSpaceportIdAsync(BARCOD_ID, "Alternate Id Type", SpaceportSystemId); · Destination: AlternateIdTypeId

This is a required field — iPaaS.com rejects the barcode without it, and the value must be an alternate id type that already exists in iPaaS.com. Records what kind of identifier this is. The formula takes the Counterpoint barcode type and looks up the matching alternate id type in iPaaS.com.

This is the mapping in this collection with a hard prerequisite. Because the endpoint requires a valid type, an iPaaS.com alternate id type matching each Counterpoint barcode type in use MUST exist before the first transfer — the formula does not create one. Where no match is found the mapping produces no value and the barcode is rejected. Subscribers or their MiSP should EITHER (a) transfer their Counterpoint barcode types into iPaaS.com before enabling this collection, OR (b) create the matching alternate id types in iPaaS.com by hand — one MUST be done at install time.

This is the same lookup Add/Update NCR Counterpoint Product Barcode TO iPaaS.com performs, so alternate id types prepared for that collection serve this one too. As there, every barcode type in the subscriber's installation is carried, not only UPC.

AlternateId — Field

Source: BARCOD · Destination: AlternateId

This is a required field — iPaaS.com rejects the barcode without it. The barcode itself, as recorded in NCR Counterpoint and carried across unchanged.

iPaaS.com does not allow the same barcode to appear twice, nor the same combination of alternate id type and unit to appear twice on one variant. The second constraint means a variant may carry only one barcode of a given type per unit. The first has a wider reach on grid items than subscribers sometimes expect: where the same barcode has been recorded against two different grid cells of the same item, one of the two is rejected. Where that occurs, the item's barcode setup in Counterpoint is the place to resolve it.

Add/Update NCR Counterpoint Product Variant Inventory TO iPaaS.com

Parent: Add NCR Counterpoint Product Variant TO iPaaS.com.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Field

QTY_ON_HND

QtyOnHand

Optional. .

Field

QTY_AVAIL

QtyAvailable

Optional. The quantity of this variant available to sell at this location, as NCR Counterpoint calculates it.

Dynamic Formula

AverageCostFromSettings(Parent.Inventory)

Cost

Optional. .

Dynamic Formula

return await LocationIdFromNameAsync(LOC_ID);

LocationId

Required. IPaaS.com rejects the variant inventory record without it, and the value must be a location that already exists in iPaaS.com.

QtyOnHand — Field

Source: QTY_ON_HND · Destination: QtyOnHand

This is an optional field. The physical quantity of this variant at this location, as counted in NCR Counterpoint.

This is stock on the shelf for this specific grid cell, including any already committed to orders — which is why it is usually higher than QtyAvailable. It is the right figure for stock-on-hand reporting and the wrong one for deciding what a storefront may sell. It is a point-in-time figure, refreshed on the next transfer of the variant.

QtyAvailable — Field

Source: QTY_AVAIL · Destination: QtyAvailable

This is an optional field, but it is the figure a storefront normally uses to decide what can be sold, so it should be mapped for any meaningful inventory sync. The quantity of this variant available to sell at this location, as NCR Counterpoint calculates it.

Available quantity is generally lower than QtyOnHand, because Counterpoint reduces it by stock already committed to orders. This is a point-in-time figure — sales made after the transfer ran are not reflected until the variant transfers again.

Cost — Dynamic Formula

Source: AverageCostFromSettings(Parent.Inventory) · Destination: Cost

This is an optional field. The cost of this variant, taken from NCR Counterpoint's rolling average cost.

This mapping does not behave the way the collection's other three do, and the difference is worth understanding before relying on the value. The other mappings read this variant's own record at this location. This one instead reads the parent item's inventory and returns the average cost at the single stocking location configured for the integration.

Two things follow. The cost is the item's, not the variant's — every variant of an item reports the same figure, and a grid cell whose true cost differs is not reflected. And the cost is that of the configured stocking location, not of the location this inventory record is for — so a variant stocked at several locations reports the same cost at all of them, regardless of what that stock actually cost at each.

Where the parent item holds no inventory record at the configured stocking location, the mapping produces no value and the variant inventory record transfers without a cost. iPaaS.com accepts it either way.

Subscribers or their MiSP who need per-location or per-variant costing should not use this mapping as shipped. The equivalent mapping on Add/Update NCR Counterpoint Product Inventory TO iPaaS.com reads the average cost of the record actually being transferred, and so does vary by location.

LocationId — Dynamic Formula

Source: return await LocationIdFromNameAsync(LOC_ID); · Destination: LocationId

This is a required field — iPaaS.com rejects the variant inventory record without it, and the value must be a location that already exists in iPaaS.com. Records which location this stock sits at. The formula takes the Counterpoint location id and looks up the matching iPaaS.com location by name.

This is the one mapping in this collection with a hard prerequisite. Because the endpoint requires a valid location, an iPaaS.com location whose name matches the Counterpoint location id MUST exist before the first transfer — the formula does not create one. Where no match is found the mapping produces no value and the variant inventory record is rejected. Subscribers or their MiSP should EITHER (a) transfer their Counterpoint locations into iPaaS.com before enabling this collection, OR (b) create the matching locations in iPaaS.com by hand — one MUST be done at install time.

The match is by name, so an iPaaS.com location renamed after setup stops matching and its inventory begins to fail. This is the same lookup Add/Update NCR Counterpoint Product Inventory TO iPaaS.com performs, so locations prepared for that collection serve this one too.

Add NCR Counterpoint Product Stocking Unit TO iPaaS.com

Parent: Add/Update NCR Counterpoint Product TO iPaaS.com.

Mapping Type

Source Field (NCR Counterpoint)

Destination Field (iPaaS.com)

Description

Static

Static value — 1

Conversion

Recommended. .

Dynamic Formula

Parent.STK_UNIT

Name

Required. IPaaS.com rejects the unit without it.

Dynamic Formula

Parent.REG_PRC

MSRP

Optional. .

Dynamic Formula

Parent.PRC_1

DefaultPrice

Optional. .

Dynamic Formula

Parent.PRC_1

SalePrice

Optional. .

Conversion — Static

Source: Static value —1` · Destination: Conversion

This is a recommended field. iPaaS.com accepts the unit without it, but a unit with no conversion factor cannot be related to the stocking unit, so it should be mapped for any meaningful unit sync. Records how many stocking units make up one of this unit.

The value is fixed at 1, and correctly so: this collection carries the stocking unit itself, and one stocking unit is by definition one stocking unit. This is a genuine constant rather than a value awaiting configuration, and subscribers should leave it alone. Every other unit's conversion is expressed relative to this one — the alternate unit collections each compute theirs as a fraction of the stocking unit.

Name — Dynamic Formula

Source: Parent.STK_UNIT · Destination: Name

This is a required field — iPaaS.com rejects the unit without it. The name of the item's stocking unit in NCR Counterpoint — something like Each, Ft, or Lb — carried across unchanged.

The stocking unit is the unit an item's stock is counted in, and Counterpoint gives every item exactly one. Unlike the alternate unit collections, this one has no filter and so contributes a unit record for every item that reaches it.

The same unit name must not appear twice on one product. Counterpoint does not prevent a subscriber naming an alternate unit the same as the stocking unit on the same item, so where that has happened one of the two is rejected as a duplicate.

Unit names are also the link the barcode collections rely on: Add/Update NCR Counterpoint Product Barcode TO iPaaS.com reports each barcode's unit by name, and iPaaS.com requires that name to be a valid unit for the product. Because most barcodes are registered against the stocking unit, a failure here has a wider reach than a failure on any single alternate unit.

MSRP — Dynamic Formula

Source: Parent.REG_PRC · Destination: MSRP

This is an optional field. The manufacturer's suggested price for one stocking unit, read from the item's regular price in NCR Counterpoint and carried across unchanged.

No calculation is involved, because a stocking unit needs no conversion — the item's price is already the price of one stocking unit. This is the same regular price the parent collection reads for its own DefaultPrice mapping. Items with no regular price recorded transfer with this field empty.

DefaultPrice — Dynamic Formula

Source: Parent.PRC_1 · Destination: DefaultPrice

This is an optional field. The standard selling price for one stocking unit, read from the item's price-1 in NCR Counterpoint and carried across unchanged.

Note that this reads price-1, whereas the DefaultPrice mapping on Add/Update NCR Counterpoint Product TO iPaaS.com prefers the item's regular price and falls back to price-1. On an item where the two prices differ, the product's default price and its stocking unit's default price therefore report different figures — the product reports the regular price and the unit reports price-1. Subscribers or their MiSP whose downstream systems read prices from unit records rather than from the product should be aware of that difference, and should confirm which of the two their storefront actually uses.

Unlike the alternate unit collections, this mapping does not fall back to a computed price: an item with no price-1 recorded transfers with this field empty rather than deriving one.

SalePrice — Dynamic Formula

Source: Parent.PRC_1 · Destination: SalePrice

This is an optional field. The current selling price for one stocking unit, read from the item's price-1 in NCR Counterpoint and carried across unchanged.

This mapping reads exactly the same price as DefaultPrice in this collection, so the stocking unit always arrives with its default price and sale price equal, which represents no discount. Where a subscriber wants the unit to carry a discount, the two mappings must read different prices — MSRP already reads the item's regular price, so the pattern the parent collection uses, in which the regular price is the standard price and price-1 the selling price, is the natural one to follow.

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

  1. Replace every placeholder value called out above with one from the target Counterpoint installation, and confirm each exists in Counterpoint.

  2. Transfer a single record through Manual Sync and confirm it appears in Counterpoint as expected.

  3. Confirm any child records transferred with the parent.

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

  5. Attempt a transfer with a missing required field and confirm the expected error appears at Dashboard / Integration Monitoring / Error Logs.

Additional Notes

  • Removing a category assignment is not carried across: at the time this documentation was written, iPaaS.com treats an update through this collection as adding the categories listed, so a category assignment dropped in Counterpoint is not automatically unassigned in iPaaS.com. Subscribers who reorganise their category structure should expect to reconcile the old assignments themselves.

  • Serial-numbered items are reported as Product, not Variant: at the time this documentation was written, Counterpoint tracks their stock at item level, so their serial numbers travel on Add/Update NCR Counterpoint Product Inventory TO iPaaS.com rather than being split across variants. Subscribers expecting a serialised item to arrive with one variant per serial number should not enable this collection expecting that shape.

These and other runtime behaviors are documented in NCR Counterpoint Known Limitations.


Related Documents

Did this answer your question?