Table of Contents
Discounts
- Basic discount – offer with discount on some products
- Volume discount – Volume based discount to encourage larger sales – CPQ automation possible
- Partner discount
- Distributor discount
- CPQ simplifies or automates discount processes
Apply prices manually or automatically
- CPQ – price adjustment and discount tracking – multiple price fields present in quote item
- each field represents certain changes
Price Fields | Description |
Original Price | Price Pricebook |
List Price | Price Pricebook, percentage Total price, block price or option price override. |
Special Price | Cost + markup, contract price or option discount |
Regular Price | Result - quantity discount |
Customer Price | Result - Manual discount |
Partner Price | Result - Partner discount - manual or automatic |
Net Price | Result - Dealer discount - manual or automatic |
- Price waterfall – prices cascade down – example
- special price – quantity discount = regular price
- regular price – manual discount = customer price
- etc.
Discounts for packages – bundles
Example
- 10% discount on a product, but only in a bundle.
- App Launcher – Salesforce CPQ
- Products
- ListView – All Products
- Select Bundle
- Related Tab
- Select Product Option
- Edit
- Discount (%) = enter corresponding value
- Save
Create or select appropriate quote and test!
Quantity discounts – Discount plan – Range type
Example
- 0 to 29 no discount
- 30 to 60 = 10% discount
- 60 to 90 = 20% discount
- from 90 = 30% discount
- ATTENTION: The upper quantity is not included in each case, so there are no gaps.
Create and apply discount plans
Example: 10% discount on more 100 and 20% on more than 200 pieces.
- Tab Discount Schedules
- New
- Set name
- Save
- Edit Tiers

- click + – icon
- Create another tier level

- in the last level no „Upper Bound“ is necessary, because everything from 200 gets the discount
- Save
- Products
- Select All Products ListView
- Select the corresponding product
- Edit
- Discount Schedule – select the previously created discount schedule
- Save

Create or select appropriate quote and test!
- Discount plans are not specific to one product
- can be applied additionally from other products
Object | Scenario | Priority |
Contract Price | Discount specially for account | 1 |
Price Dimension | Discount on one-time fee for subscription products | 2 |
Product Option | Discount on product in bundle | 3 |
Feature | Discount on products in bundle feature | 4 |
Product | Discount on product | 5 |
- several discount plans can be assigned to different objects
- but only plan can be used per offer item
- CPQ selects object with highest priority
Restrict discount plans via Pricebook
Exclude Pricebooks
- Discount Schedule
- Open discount schedule
- in the field „Excluded Pricebook IDs“ enter the IDs of the pricebooks to be excluded, separated by commas
- the discount schedule will no longer be applied to these pricebooks
Apply to Product and Pricebook only (rare)
- are on the discount plan „Product“ and „Price Book“ indicate
- plan is applied only on it
- rarely used, because very restrictive
- ATTENTION: overrides lookup „
<strong>Discount Schedule</strong>
“ on Product
Aggregation
Aggregation scope
- Determines how multiple offer document items with the same discount schedule are affected
- 3 options
- None – quotation items are treated independently of each other
- Quote – Aggregates the quantities of the quote items in the entire quote
- Group – Aggregates the quantity of quote items in the same group
- Optionally marked offer items are not taken into account

Aggregation scope with Bundles
- if the discount plan is defined at the Product option, then
- only products from bundle will be considered
- Tip: For all of them, the discount plan must be defined at the Product option
- Free bundle products are normally not included
- with „Include Bundled Quantities“ you can include them again
Cross-product aggregation
- only possible with the same discount plan
- Activate Cross Products
Aggregation across orders
- Past purchases can also be taken into account for discounts
- Activate Cross Order
Schedule
- the past purchases to be taken into account can be limited in time
- Example:
- Only purchases made in the last 365 days
- Formula check on object asset becomes TRUE if purchase date is not longer than 365 days ago
- Setup
- Object Manager
- Asset
- Fields & Relationships
- New
- Formula
- Enter Label (=
Purchased This Year
) - Checkbox
- Next

- Enter „TODAY() – PurchaseDate < 365“ in the formula field.

- Next
- Next
- Save
Answer-Key
- Answer to the question:
- Which value of „Purchased this Year“ should be included in the aggregation?
- Here to need a text field with the same name on the quote, but which always returns „true
- Setup
- Object Manager
- Asset
- Fields & Relationships
- New
- Formula
- Enter Label (=
Purchased This Year
) - Text
- Next

- Specify „true“ in the formula field

- Next
- Next
- Save
Contraint Field – Restriction on the discount plan
- the answer key must now still be defined for filtering the assets on the discount plan
- Setup
- Object Manager
- Fields & Realtionships
- Contraint Field
- Add new value to the list – New
- Specify API name of the relevant field (=
Purchased_This_Year__c
) - Save
Now still select in the discount plan!
- Tab Discount Schedule
- Select discount schedule (=Bulk key)
- Edit
- Cross Orders
- Select Contraint Field accordingly (=
Purchased_This_Year__c
) - Save
Perform a test with the appropriate quota!
Discount – Fixed amount
- Tab Discount Schedule
- Select discount schedule (=Bulk key)
- Edit
- Select Discount Unit – Amount
- Now the discount is displayed in the tiers for the currency
- In case of a multi-currency org, tiers are required for each currency.

Sales employee – change discount scale for offer
- Tab Discount Schedule
- Select discount schedule (=Bulk key)
- Edit
- Override Behavior – select accordingly
- –None–: no chaanges possible
- All: upper and lower limits as well as percentage or amount changeable – full control
- Current Tier only: Percentage or amount changeable based on current tier. Upper and lower limits have no influence.
Discount plan – Slab type
- Type – Select „Slab“

- Tiers are divided into blocks and the discount is appled block by block
Level | Lower limit | Uppe lImit | Discount |
1 | 1 | 100 | 0 |
2 | 100 | 200 | 10 |
3 | 200 | 300 | 20 |
4 | 300 | 400 | 30 |
Price for 250 pieces = (99 * Price) + (100 * Price * 0,9) + (51 * Price * 0,8)
- TIP: this discount type can not be applied with cross products
Compound discount
- Grant quantity discount without defining discount plan
- Mathematical formula for calculation:
1/(Quantity^(Compound Discount/100))
- Discount increases exponentially with quantity
Quote-Discount
- Discount can also be used directly at the quote line against

- the regular price is always used for charging
- by activating the checkbox „Non Discountable“ at product this can be deactivated
Customize discount units
- Setup
- Object Manager
- Quote Line
- Fields & Relationships
- New
- Picklist
- Next
- Enter Label and Name (z.B.:
AdditionalDiscountUnit
) - Enter Values
Percent
Amount
Unit Override
Total Override
- Next
- Next
- Save
Standard discount on offer
- actually no possibility to give a discount on entire offer
- but with field „Additional Disc“ as possibility if items are not discounted individually
- acts as a standard and fallback discount percentage
- discounts on offer item level have higher priority than group discount

- if a product is marked as „Non Discountable“, no discounts will be considered
Package – Discount
- Each bundle – „Discounted by Package“ checkbox
- Additional Discount“ field at the option (Quote) unchecked
- gets the discount from the main product (click „Calculate“)
- works only with discount type „Percentage
Channel discounts
- Partner and distributor discounts are simple percentage fields
- can be defined manually or by price rule
- Partner Price Calculation
Customer Price - Partner Discount = Partner Price
- Calculation Distributor Price
Partner Price - Distributor Discount = Net Price
- Partner Discount“ and „Distributor Discount“ fields available on quotation level

- Deactivate partner discount – activate checkbox „Non Partner Discountable“ on product
Use list price for channel discount
- Standard – the partner discount (%) is determined with the customer price and the amount is also charged with the customer price.
- With additional field at quote „
ChannelDiscountsOffList__c
“ and value 1- the partner discount (%) is determined with list price and also charged with customer price
- it can be switched with 1 and 0
Consider partner discount as 1.
- Normally taken into account after all other discounts
- However, some companies want to apply partner discount first
- Create additional field „
ApplyPartnerDiscountFirst__c
„- 0 = default – partner discount last
- 1 = Partner discount first
Note: ApplyPartnerDiscountFirst__c
and ChannelDiscountsOffList__c
fields should not be together in the same offer. Errors will occur.
Customer price in last place – additional discounts
- Moving the customer price within the price waterfall creates additional discounts
Price-Waterfall - Discount
Before | After |
Orignal Price | Orignal Price |
Listprice | Listprice |
Special Price | Special Price |
Regular Price | Regular Price |
Customer Price | Partner Price |
Partner Price | Net Price |
Net Price | Customer Price |
- Manual discounts are applied to the respective position
Net Price - Additional Discount = Customer Price
Regular Price - Partner Discount = Partner Price
- other additional field to control – „
ApplyAdditionalDiscountLast__c
„- 0 = Before
- 1 = After
Notes:
ApplyPartnerDiscountFirst__c
has priority overApplyAdditionalDiscountLast__c
- Do not use
ApplyAdditionalDiscountLast__c
together withChannelDiscountsOffList__c