Types of Prices

Learn about the different types of Prices that can be used in Composable Commerce.

  • After completing this page, you should be able to:

    • Distinguish between the different types of Prices available in Composable Commerce.
    • Select the most appropriate type of Price for a given use case.
  • Composable Commerce enables businesses to create flexible pricing strategies to meet customer needs. Its pricing functionality integrates well with its other services such as product catalogs and order management to provide an end-to-end solution for businesses.

    As an administrator, it's important to understand the different ways of managing prices in Composable Commerce. Composable Commerce supports three types of Prices. You can use its internal pricing solutions—Embedded or Standalone Prices—or external prices, by an external pricing solution.

    Embedded and Standalone Prices

    Embedded Prices are stored as part of the Product data. You can define up to 100 Prices per Product Variant. As a Product can have up to 100 Product Variants, and each Product Variant can have up to 100 Prices, you can store up to 10,000 Embedded Prices for a Product. With the 16 megabytes limit on any JSON document we persist (a Product is stored as a JSON document), we run the risk of exceeding this limit—always consider how the Price and Product Type modeling together will impact this limit.

    Standalone Prices, as the name implies, are stored separately from the Product data. You can define up to 50 000 Standalone Prices. You can create Standalone Prices for Product Variants that do not yet exist in the Project; they are linked to a Product Variant by an SKU.

    You can create both Embedded and Standalone Prices in the Merchant Center.

    When to choose Embedded or Standalone Prices

    Depending on the size and complexity of your product catalog, you can choose between Embedded or Standalone Prices.

    The first thing you need to consider is the number of prices for your product. The maximum number of Embedded Prices per Product Variant is 100—this is a soft limit that can be increased on a per-Project basis. However, if you have significantly more than 100 Prices, you can use Standalone Prices instead.
    Standalone Prices contribute to better query performance as they are managed and queried using the Standalone Prices API, independent from Products. However, they cannot be used in the Product Projection Search endpoint for filtering, faceting, or sorting.

    If you have more than 50 000, then you must use some form of external Prices.

    Product Price Mode

    A Product can have Embedded and Standalone Prices at the same time. The Product Price Mode on a Product tells Composable Commerce which type of Price to use during price selection. You can set the Product Price mode in the Merchant Center, as shown in the following image.

    Select Product Price Mode from the drop down box on the General tab.

    External Prices

    While Embedded and Standalone Prices cover common pricing use cases, there can be scenarios where they are not an effective solution. In these situations, you can use prices managed in an external pricing system and connect these prices to your Project using Cart API calls. When adding Line Items to a Cart, your code will need to find and apply the appropriate prices to display on your storefront.

    Note that External Prices can't be used in the Product Projection Search endpoint for filtering, faceting, or sorting.

    When to use External Prices

    You can use External Prices in the following scenarios:

    • High number of unique customer Prices: In B2B contexts, it's common to have unique prices for each Customer and Product Variant. If you have a large customer base (for example, over 50,000 Customers) and need separate prices for each Customer, external Prices are likely necessary.

    • Pricing data stored externally: If your pricing data is stored in an external system, such as a product information management (PIM) system or another external database, you may need to call that system's API to retrieve prices when displaying information for a Product Variant or adding it to the Cart.

    • Dynamic or real-time pricing requirements: If your pricing data is highly dynamic, requiring real-time adjustments based on variables such as currency conversion rates, choose External Prices. For example, you might need to retrieve conversion rates through third-party API calls before calculating the converted prices to display on your storefront and use for Line Items in a Cart.

    • Datastore co-located with application code: If your pricing data is stored in a local datastore alongside your application, you’ll need to make database calls (instead of external API calls) to retrieve and apply the pricing information to display or add to the Cart.

    • Prices are stored as a Custom Object: Although Custom Objects are stored within Composable Commerce, they can be used to store external pricing data. You would access this data via commercetools API calls, and since your code must retrieve this data for display or Cart addition, these prices are considered external. Note that using Custom Objects does not allow you to utilize the price selection logic provided by Embedded or Standalone Prices.

    Tiered Prices

    Composable Commerce allows you to set tiered pricing, where the price of an item changes depending on the quantity purchased. Although tiered prices are commonly used to offer a lower price per quantity threshold, you can also offer a higher price per tier. This is useful when you want to dissuade customers from purchasing too many quantities of the same product.

    You can set tiered Prices with both Embedded and Standalone Prices, allowing you to use the same price constraints to target different tiered prices for different customers (based on country, Customer Group, Channel, currency, and validity period).

    The first step is to set a base Price, which is the Price that applies to a single unit of a Product Variant when purchased. You can then define the tiered Price for the quantity of the Product Variant added to the Cart; for example, a customer gets a lower price per item when they buy 10 quantities of that item.

    Base price exampleTiered prices example
    1 apple = $2 per apple1 apple = $2 per apple
    2-4 apples = $1.5 per apple
    5+ apples = $1 per apple

    Let's work out the price for a few scenarios using the tiered pricing example above.

    Quantity of apples in CartOriginal priceUnit priceSubtotal
    1$2$2$2
    3$2$1.5$4.5
    8$2$1$8

    Tiered versus volume pricing

    Volume pricing is another form of pricing that is similar to tiered pricing. As these concepts might differ from other commerce systems, let's clear up any misunderstandings about how they apply to Composable Commerce.

    Let’s start by looking at how these terms are commonly understood outside the world of Composable Commerce:

    • Volume pricing: a sales strategy in which the price per unit of a product is reduced as the quantity of the product increases. With volume pricing, every item is purchased at the same price, and the price is triggered by the number of items purchased. For example, from the example above, all 7 apples will cost $1 each as the third tier was reached and triggered the same price for every item.
    • Tiered pricing: works somewhat similarly—the price per unit of a product is reduced as the quantity changes, but the calculation method is different. Instead of every item being purchased at the same price, the items in the first tier are bought at the price corresponding to that tier, and then when you buy more items in the next tier, only those additional items get the new tier price. For example, the first apple will cost $2, then apples two to four are $1.50 each, and so on.

    Now things can get a little confusing when we look at these features in Composable Commerce:

    • To achieve volume pricing, you can use the Tiered Prices feature in Composable Commerce.
    • To achieve tiered pricing, you have two options—Cart Discounts or an external pricing system.

    Tiered Prices and Product Discounts

    When managing tiered Prices in Composable Commerce, you also need to consider how your Product Discounts interact with your Tiered Prices.

    Composable Commerce allows you to set Product Discounts for each Product Variant. It's important to note that when a Product Discount is set for a particular Product Variant, the Product Discount overrides any existing tiered Price.

    For example, if a customer buys multiple quantities of a Product Variant (such as apples) that uses tiered Prices, instead of receiving the tiered Price in their Cart or Order ($1.50 per apple when you buy more than 5), they would instead receive the Price associated with the Product Discount (50% off all fruit!). Keep this in mind when creating and managing your discounts and you will avoid situations where your customers end up paying an unintended price.

    Although tiered Price is not classified as a Discount, it provides an alternate way for administrators to reduce prices for customers without using Product Discounts. However, tiered pricing does not always have to be used to reduce prices; it can also be used to increase the price when a customer buys more items. For example, to try to discourage goods from being bought in bulk and then being sold in secondary or tertiary markets.

    Test your knowledge