Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunitySubmit a ticketLog In
GitHubNuGetDev CommunitySubmit a ticket

Price matrix field definitions

Describes price matrix field definitions in Optimizely Configured Commerce.

The following shows the fields in the PriceMatrix table and how they are used in Optimizely Configured Commerce.



The record contains up to 11 separate layers of pricing based on quantity, each of which can have different calculations.


This is used to determine how to prioritize the records read from the matrix and can be used for custom implementations.

In the Admin Console, we would expect a slash to separate how the CustomerKeyPart and ProductKeyPart are used so, for example, "Customer/Product Price Level" indicates that a specific customer record is used and some code entered for the price level. The AC will present drop-downs where it thinks we are looking up a customer or product but any value can be entered.

"Price Code" is a proxy for "Group"- so Customer Price Code really means "Customer Group" at the conceptual level.

The current, generic record types supported in order of evaluation are:

  • Customer/Product
  • Customer/Product Price Code
  • Customer Price Code/Product
  • Customer Price Code/Product Price Code
  • Customer
  • Customer Price Code
  • Product
  • Product Price Code
  • Product Sale (evaluated separately)
CurrencyCodeThis is the code that should exist in the currency table for which the price values are represented. We strongly recommend that all records have a currency code.

This is the code for the warehouse in case the system should handle warehouse-specific pricing. This is a more rare case and typically you do not need or want to set the warehouse.

This field would not matter for record types that do not reference a specific product.


This is the unit of measure, typically the alternate unit of measure for the product so that, for example, you can have a very different price for single units (that is EACH) of a product and an entirely different price for a CASE of a product. Without a specified UoM, the price will be calculated from the base unit of measure for the product.

This should not be set for record types that do not reference a specific product.

The absence of a value here would imply the base/default unit of measure for the product.

CustomerKeyPartThis will represent either the string version of the Customer Id field or a string value for whatever the customer key part is, such as Customer Price Code.
ProductKeyKeyThis will represent either the string version of the Product Id field or a stringvalue for whatever the product key part is, such as Product Price Code
ActivateOnThis is the date that the pricing record becomes active and is required since it is part of a compound key. This is important so that pricing is based on the currently active price on a given date.
DeactivateOnThis is the end date of the pricing record and is common for temporary price records.
CalculationFlagsThis is a "placeholder" for custom extension and has no specified use.
BreakQty (01..11)This is the quantity for which the quantity ordered must equal or exceed. They should be entered in increasing size.
PriceBasis (01..11)

This represents the basis from which the price is calculated.

The price basis values supported by the Generic calculator include:

  • List (base list price +/- adjustment)
  • Override (takes the price entered)
  • Cost (+/- from unit cost in warehouse)
  • Margin (+/- adjustment from current cost)
  • Markup (+/- adjustment from the current markup from current cost)
AdjustmentType (01..11)

The only values are Amount or Percent.

When using the Amount option, the adjustment is assumed to add or subtract the amount from the PriceBasis value.

When using the Percent option, the adjustment is assumed to add or subtract a percentage from the PriceBasis value.

Amount (01..11)This is generally the amount or percentage value to use in calculating the price.
AltAmount (01..11)This is a special value that is not used in the Generic calculator but it affords a secondary value by break level for advanced calculations.