Appreciating and Using the CPQ Quote Discount Waterfall

Whether you come from a Sales Cloud background or are just going to the grocery store, your concept of discounting is most likely fairly simple:

List Price – Discount = Sales Price 

What if I told you that in most organizations, it’s way more complicated than that? 

In my mind there are 3 major areas to consider when discounting: 

  • How list price is set
  • What automatic discounts are applied
  • What manual discounts are applied by the user

Effectively, this is how it works out-of-the-box:

List Price → Additional Discount → Customer Price → Partner Price → Distributor Price

In the end you arrive at a “price”. I use the quotation marks because the price is also variable. Are you showing the Customer Price or the Distributor Price? Understanding that this process can be incredibly confusing, this is an introduction to both pricing and the Quote Discount Waterfall.

Setting List Price

The actual setting of a List Price is detailed and requires a separate discussion. But to summarize: 

  • CPQ has many functions that set List Price. Consequently,  allowing users to change List Price is dangerous and will lead to problems down the line as they will be competing with built-in functionality.
  • Using Price Rules to set List Price is also dangerous since there is a chance that your rule will continuously change the price every time a calculation cycle is completed (ex. List Price = List Price – 10% will continuously take 10% off). 
  • We typically target Original Price and Special Price fields when making rules.
  • Remember that during Amendments, Original Price is null. Setting it does nothing.
  • “Cost plus Markup” and Block Pricing with Discount Schedules can also affect List Price.

The List Price field is a minefield of insanity.

Setting Manual Discounts

At some point, users want the ability to discount whatever the system calculates. Maybe they are looking to arrive at a “magic number” that they think will sell or solve a particular business problem.  Having the ability to be flexible is critical. 

The out-of-the-box way that a user can adjust discounting is either: 

  • Setting the Additional Discount field on the quote
  • Using the Target Customer Amount field on the quote
  • Setting the Additional Discount field on the quote line

Quickly let’s discuss these three options: 

Additional Discount on Quote

While there is nothing technically wrong with using this field, we avoid it. It has to do with analytics. If your users discount on the quote, then it becomes difficult to report on the “Average Selling Price” for your products. Also, your Approval Rules become more complicated since now the rules have to inspect the discounts on the quote lines AND the discount on the quote record. In the end, we avoid this field.

Target Customer Amount on Quote

This function is sometimes referred to by its acronym of TCA. The theory is fascinating. Tell CPQ what price you want the entire quote to be, and the system will spread the discounting out among all the quote lines. For simple implementations of CPQ, this works as expected. However many of our customer’s needs are too complicated for this process  to be reliable. You must be careful with setting what products are discountable and not. There is no guarantee that the calculation will be perfect. PRO TIP: Be careful with Quote Line Groups if your solution utilizes functionality like Cost.

Additional Discount on Quote Line

This is where we invest our time. When CPQ is installed, the field has two picklist options: Amount and %. But there is an article from Salesforce that says that two additional options can be added:

  • Unit Override – User enters the exact price for a single quantity of that product. CPQ will calculate the amount off to arrive at that number.
    • If I have a quote line with quantity 10 at $5/each, I could set the field to be $2.82 and it would calculate the discount amount to arrive at that value.
  • Total Override – User enters the exact price for the TOTAL quantity for that product
    • Using the same scenario above, I could set the field to be $48 and the system would determine the necessary discount amount.

While this is great functionality, be aware that if your approvals or summaries are based on discount percentages, then a bit of extra work in price rules and custom fields is necessary to ensure that a roll-up of discount percentages occurs. (Please read the Salesforce article).

Manual Discounting in the Waterfall

As an organization, we prefer that users adjust Additional Discount on the Quote Line. Also note that in the waterfall by default all this discounting happens BEFORE Partner and Distributor discounts are applied. Users are adjusting the discount that the customer sees and not what a partner or distributor will pay. 

Partner Pricing

CPQ makes an assumption that if a customer is working with a partner, then the partner will purchase it from your organization at a lower rate than what is being charged to the customer. If partner pricing is being used, the value is typically set through a price rule. That price rule typically: 

  • Uses a lookup query to find the percentage discount on the partner’s account record
  • Uses a lookup query to find the percentage discount on a custom object based on some value (ex. Gold Partners in 2022 receive a 10% discount) 
  • Try NOT to use a formula in a price action. Doing so makes year-to-year adjustments difficult since your formula has to support those changes.

Distributor Pricing

A distributor will receive an even deeper discount, and so it is cheaper than the other two. The same suggestions from above on Partner apply here.

But I Don’t Like that Arrangement

What if I want to change the waterfall? CPQ special fields such as “AdditionalDiscountLast” will change the order. We use this especially when our customer’s usage doesn’t involve partners and/or distributors. And that gives us extra flexibility 

Hacking the Waterfall

There are actually not many organizations that use all these discount fields. This gives us the opportunity to change its use case. We will typically relabel the Partner or Distributor discount field with the Translation Workbench to be called “System Applied Discount”. Then with price rules we will set the value of that field. This combined with utilizing the AdditionalDiscountLast special field gives us the ability to set the system-controlled discounting before and exclude it from approvals which is great. Managers shouldn’t need to approve quotes where the only approvals are system applied. 

I Don’t Want the Waterfall

There are situations where the concept of a waterfall is not compatible with the business. Selling the concept is just not working. It happens. This can be achieved: 

  • The built-in Additional Discount field quote line cannot be used since it requires a waterfall. 
  • Create 2 custom fields for both the System-Applied and Additional Discount
  • Use a Price Rule to add these up and inject into Partner or Distributor Discount
  • Use the special field functionality to have Additional Discount be last so that the customer price is the lowest price on the quote line. Yes – even though the organization isn’t using the field. 


Hopefully this delivered some ideas on working with discounting and the waterfall. It can be incredibly helpful to know that options exist depending on needs.

Leave a comment

Your email address will not be published. Required fields are marked *