Understanding Price Lists

Price lists empower organizations to systematize their pricing strategy. Significantly, they support multiple pricing models for the same inventory, including both standard retail rates and negotiated contracts. Creating effective pricing structures requires maintaining a reliable baseline while enabling overrides for distinct customer groups.

In this lesson, you’ll learn how to establish foundational product prices using Liferay price lists.

Fundamentals of Price Lists

Fundamentally, list pricing represents the baseline monetary value of products before any adjustments, deductions, or special terms are applied. In Liferay, you establish this starting point for calculations by storing prices in two types of lists: base price lists and custom price lists.

  • Base Price Lists: Provide the default structure for every SKU’s base price. Liferay automatically generates a base price list for each catalog, but you must populate it with prices for every SKU to guarantee coverage. These lists are always active, cannot be deleted, and cannot be restricted by eligibility rules.
  • Custom Price Lists: Extend the base price list with specific unit prices for eligible customers. Created manually, custom price lists can target specific accounts, channels, and order types. They also support eligibility rules and price modifiers.
NOTE
To learn more about accounts and eligibility, consider taking the Mastering Commerce Users and Accounts course.

Both list types include configurations for individual SKU entries, including the price type (net vs. gross), priority, and more.

Both list types include configurations for individual SKU entries, including the price type (net vs. gross), priority, and more.

When you create a new product or SKU, Liferay automatically generates an entry for it in the base price list with a value of 0. Administrators must update these entries with correct base prices to ensure buyers never see unpriced items. For products with multiple units of measure, you can define separate base price entries for each unit (e.g., packs vs. cases). You can then store additional price variations in custom lists to target specific markets.

Leveraging Price Lists

By combining base price lists with targeted custom price lists, you can establish a stable foundation while catering to key customer segments. To use both types effectively, it’s essential to follow these best practices:

  • Guarantee Pricing Coverage: Set a realistic price for every product within the base price list immediately after creation. This creates a safety net, even if your business relies on promotions or negotiated list pricing.
  • Schedule Temporary Changes: Configure explicit start and end dates to keep temporary custom list changes clean and reversible (e.g., an increase during a supply shortage).
  • Define Clear Priorities: Set clear priorities to handle multiple lists that overlap. If two price lists have identical priorities and a customer is eligible for both, the one that was created earlier will take precedence. Also, ensure the base price list always has the lowest priority.
  • Restrict Eligibility Strategically: Design your price list strategy so that eligibility acts as the primary filter. You can reduce calculation overhead by ensuring accounts only qualify for the lists relevant to them. Also, to keep this approach scalable, assign eligibility using Account Groups rather than individual accounts.

​​​Adhering to these strategies helps maintain a clean, organized pricing foundation.

Exploring Price List Interactions

To determine transaction starting values, the pricing engine compares the base price list against all eligible custom price lists. Once unit prices are selected, the engine layers modifiers, promotions, and discounts on top of this unit price to ensure consistent, context-aware pricing across all channels.

Once unit prices are selected, the engine layers modifiers, promotions, and discounts on top of this unit price to ensure consistent, context-aware pricing across all channels.
 

When a customer qualifies for multiple lists, the pricing engine must decide which prices to display. You can adjust how it selects prices using these Price List Discovery Method options:

  • hierarchy (Default): The engine selects the single eligible price list with the highest priority (determined by numerical value) and applies it to the storefront and orders. This is essential for B2B scenarios where negotiated prices must take precedence, even if a specific item happens to be cheaper in another list.
  • lowest: The engine ignores list priority and scans all eligible lists to find each product’s lowest price. This maximizes benefits for the customer but ignores contract structures.

Consider the following scenarios to better understand how price lists interact.

Basic Scenario

A customer qualifies for three distinct price lists. They add one of products A, B, and C to their cart.

List Name Base List List 1 List 2 List 3
Price List Priority 1 15 10 5
Product A $100 $10 $55 $20
Product B $100 $25 $10 $30
Product C $100 $60 $10 $15

 

Result with lowest

  • The engine picks the best deal for every item: A from List 1 ($10), B from List 2 ($10), and C from List 2 ($10).
  • Subtotal = $30

Result with hierarchy

  • The engine identifies List 1 as the highest priority (15). It strictly uses prices from that list: A ($10) + B ($25) + C ($60).
  • Subtotal = $95

Complex Scenario

This scenario explores how the engine handles missing prices under the default hierarchy method. The customer qualifies for all three lists, but because some lists have gaps, the engine relies on parent price lists to resolve the final value.

List Name Base List List 1 List 2 List 3
Price List Priority 6 15 10 5
Product A $100 - $55 $20
Product B $100 $20 $10 -
Product C $100 $60 - $15

 

Result 1: No Parents Configured

  • The engine primarily selects all prices from List 1. Product B ($20) and C ($60) are found in the list. Because no parent list is configured for List 1, it falls back to the base price list for Product A ($100).
  • Subtotal = $180

Result 2: List 1 has Parent = List 2

  • The engine selects Product B ($20) and C ($60) from List 1. Because List 2 is the parent of List 1, the engine checks List 2 and uses its price for Product A ($55).
  • Subtotal = $135

Result 3: List 1 has Parent = List 3

  • The engine selects Product B ($20) and C ($60) from List 1. Because List 3 is the parent of List 1, the engine checks List 3 and uses its price for Product A ($20). List 3 is used because it is explicitly linked as the parent, even though it has a lower priority than List 2 or the base price list.
  • Subtotal = $100

Clarity’s Price Lists

Clarity aims to maintain clear and accurate pricing across B2B and B2C channels. This requires a strategy that guarantees pricing coverage while accommodating specific distributor agreements.

To achieve this, they'll implement a layered pricing model:

  • Base Price List (Global Fallback): They'll use the catalog's base price list as the MSRP. Configured with no expiration and the lowest priority, this acts as a failsafe to ensure no product is ever unpriced.
  • Regional Lists (Market Segments): They'll create distinct lists for broad markets, such as "EMEA Distributor" for B2B rates and "EMEA Retail" for regional retail rates.
  • Contract Lists (Account Specific): For distributors with negotiated rates, they'll create individual price lists containing prices specific to that partner.

To minimize maintenance, Clarity will set the regional B2B list as the parent price list for each contract list, also assigning the contract list a higher priority. This ensures that distributors see their negotiated price first. If a product isn't explicitly in their contract, the system inherits the regional B2B price. This guarantees that partners always receive the correct rate without Clarity maintaining redundant price entries. Though they’ll eventually layer promotions, discounts, and price modifiers on top of this structure, this core price list strategy establishes a solid foundation.

Conclusion

Liferay Commerce’s price lists are a flexible pricing cornerstone. Base price lists serve as a reliable safety net, while custom price lists empower fine-tuned default prices for distinct markets and specific customer segments. By ensuring each SKU has a realistic default price, businesses establish a foundation for discounts, promotions, and other pricing rules.

Next, you’ll learn about adjusting list prices using price modifiers.

Loading Knowledge