Broadleaf Microservices
  • v1.0.0-latest-prod

Pricing Service Key Features

The Pricing Service provides dynamic, context driven prices. Price lists can be used to address a number of pricing related use cases. This section describes the key features of price lists.

Date Driven Price Lists

Price lists have an active date range. Using date ranges provides support for …​ - Date bounded sales - Seasonal price lists


Price lists can be used to drive sale prices which can be specific item prices or formula based prices.

Formula Based Prices

A price list can be setup with modifiers to control item prices. Prices can be modified using percentage, multiplier, or addition/subtraction operations.

Customer and Account Based Pricing

Price lists can use the customer segment or account information to drive pricing. Common examples: - Loyalty member pricing - Employee discount pricing - Contract pricing to override prices for a specific B2B account

Application Specific Price Lists

Price lists can be managed globally (at the tenant level) or at the application level. If you have application specific pricing, you can choose to manage all prices at the application level or you can manage all prices globally and then just manage the overrides at the application level.

When using sparse overrides, use a lower price list priority for the application so that the application prices take precedence over the global pricing.

Price List Priorities

A single SKU could be targeted by multiple price lists. The price list can have an optional priority which determines the order it will be applied in the case multiple prices apply.

The priority is per Price List Type. So, if there are two standard price lists that have a price for the same SKU and all context and customer rules apply, then the lower priority price list price will be used.

Price Change Workflow

The Broadleaf admin provides the ability to make price list changes through the preview and approval workflows.


This service includes out-of-box import implementations.

Price Data

Each of the different types of price data can be imported.

The import types are STANDARD_PRICE_DATA, SALE_PRICE_DATA, and CONTRACT_PRICE_DATA. The corresponding specification implementation in ImportServices is PriceDataSpecification - each type of price data gets its own bean of this type, thereby resulting in separate specifications.

Key Components:

  • PriceDataImportBatchHandler is responsible for processing imports of PriceData entities into a PriceList

  • PriceDataConverter is responsible for converting input price data rows into PriceData instances

Multi-Currency Support

Price lists are always in a target currency that represents what value the amount refers to. There are two approaches for using price lists in multi-currency implementations.

It is common to maintain full price lists by country (or currency). In this case, use a context rule to restrict the price lists in play.

Another approach is to use currency conversion. In this case, price lists can be managed in a base currency with currency conversion being used to convert from the source currency to the target currency.