SAP CPQ

Disabling and Restricting Discounts in SAP CPQ: Where the Rules Live

A man and a woman review pricing charts and printed reports together at a desk with a laptop

There is no single switch to disable discounts in SAP CPQ. A discount is controlled in several places, and the one you pick decides whether the user is blocked, sent to an approver or just sees a grey field.

What you will learn

  • The four layers that control a discount: discount rules, field editability, approval rules and application parameters
  • Which layer fits a hard stop, an approval, or a read-only field
  • The order I use to troubleshoot discounts that reset, grey out or still trigger approval

The request usually arrives as one sentence. Sales leadership wants to disable discounts in SAP CPQ for one team, one product line or one stage of the quote, and the admin is expected to find the switch. I went looking for it in SAP’s help pages, the support notes and the community threads, and what I found instead is a handful of separate mechanisms, none of them labelled “disable discount”.

That matters, because a discount in SAP CPQ is controlled in several places, and the place you pick decides whether the user is blocked, sent to an approver, or simply looking at a grey field. This is the map I would hand a new administrator: where each rule lives, what it really does, and the order I check them in when a discount refuses to behave. Setting names are written the way SAP writes them, and where SAP’s own pages disagree I say so instead of picking a winner. The help portal pages I cite showed version 2609 when I read them on 2 October 2026.

Four layers decide how you disable discounts in SAP CPQ

Discount rules: minimum, default and maximum

The core is the discount rule, found under Setup > Pricing/Calculations. In Quote 1.0 the page is called Discounts/Multipliers, in Quote 2.0 it is called Discounts, and SAP’s text for the newer engine says “The Discounts can be accessed through the Discounts link under Pricing/Calculations.” Each rule carries a Minimum Value, a Default Value and a Maximum Value, and a new rule starts with zero in all three. The Default Value is applied only the first time a user generates the quote. If the user then changes the discount, the changed value stays, and reopened quotes keep it. The full behaviour is described on SAP’s Discounts page for Quote 2.0.

Who a rule applies to is decided by five criteria: User Group, User, Category, Product and Product Type. You can select only one value inside each group, you can combine groups, and the discount applies only when every selection is true. The Condition field is a formula that “must resolve to 1”, and conditions can also sit inside the Discount fields themselves, so one rule can serve several values. When two rules exist for the same product and the same user, the most restrictive one wins, but SAP says that only holds for rules defined on a product, not on a product type. If you want the wider picture of how these rules sit inside pricing as a whole, my piece on pricing logic for internal teams covers the guardrail side, and the SAP CPQ pricing automation page describes what we build around it.

One trap sits in the priorities. The Discount Priorities page says the rank runs from 0 to 5, “0 being the highest rank”. SAP Learning says “a ranking of 1 is the highest priority”, and the Integration Guide gives the Product rule Rank 1 as well. I could not reconcile the three, so test a two-rule setup on your own tenant before you trust either reading. Also note that if you apply a discount to a product type, the rules based on category and on a specific product are not evaluated at all.

Field editability

A discount rule says how far a value may go. Editability says whether the user can touch the field in the first place. In Quote 2.0 this lives in the Quote Field Editability tab under Fields, Calculations, Layout, and SAP is blunt about the model: editability is set per column, so if a column is editable, all fields in that column are editable for all items. By default every field on a quote is read-only until its editability is defined, and when a user belongs to several permission groups the logic between groups is OR, so one group with edit rights is enough.

Quote 1.0 does the same job in Cart Fields Administration, per user group and order status. That is also where a well-known community post lands: the Additional discount amount and Additional discount description rows are greyed out when those options were never added to the editable field group. The SAP Product Expert who commented on that post asked the author to state that it applies only to Quote 1.0, and I would repeat the warning. One caution of my own: none of the editability pages I read names the Discount column specifically, so confirm on a test quote what a given column controls.

Approval rules and workflow

Approval is the layer people mistake for a restriction. SAP’s wording is that an approval rule “by itself doesn’t do any work” and a workflow must be set up before anything happens. The rule condition SAP uses in its own example is <*GI(EXCEEDEDISCOUNT)*>, which checks a global information flag that is set when discounting rules are violated. Yes, it is spelled without the second D, so copy it rather than retype it. The workflow actions then use <*APPROVALREQUIRED*> and its negation to decide who can approve and who must escalate. SAP’s example has one approver handling discounts up to 10 and the next approver up to 20.

Rules are re-evaluated every time a quote is loaded or reconfigured, or when quote prices are refreshed. Here the sources disagree again: the Quote 2.0 approval page still uses the GI variable, while the migration guide lists Global Information variables as obsolete and says CTX tags should be used instead. Treat that as a reason to test your approval condition after any move to Quote 2.0.

Application parameters

The fourth layer is easy to forget because it is not a rule at all. Quote 2.0 has a parameter called Calculate Discounts only for Changed Items on the Discounts page, which makes the engine check discount rules only for items that changed. It does not exist in Quote 1.0, and the same migration page lists Quote Multipliers as obsolete, with Discounts to be used instead. The second parameter, When updating quote item, reapply default discount, has its own section further down, because it causes most of the “my discount vanished” tickets.

Two people shaking hands over contract documents on a meeting table, with a pen beside the papers

Matching the goal to the layer

“Disable”, “restrict” and “block” are three different jobs, and each one lands on a different layer. I ask the requester which one they mean before I try to disable discounts in SAP CPQ on any setup page.

A hard stop for values outside the range

The only setting in the pages I read that literally stops entry is the checkbox User can override values? on the discount rule. SAP’s text: “If this box is unchecked, the user will be unable to enter the value.” The scope is narrower than it sounds. It concerns values outside the Minimum and Maximum range, not the discount field as a whole. Inside the range, the user can still type freely. A new rule starts at zero for minimum, maximum and default, so the practical question is not how to turn discounts off but how far you let each rule open.

Review instead of a block

With the same box checked, the user can enter the out-of-range value, and the quote is automatically submitted for approval to the user’s approve parent. SAP adds that the approval process must be set up for the checkbox to work correctly, which is the detail most half-finished configurations miss. This is the right layer when the business wants a conversation, not a wall. My guide to how approval rules are structured walks through thresholds and dependencies, and the approval workflow design page covers routing and escalation.

Be aware of one limit. A Quote 2.0 community thread from October 2022 asks: “The standard approval rule functionality works on the header level of an quote. Is it possible also to use the approval rule functionality on quote item level?” The author’s own answer was that it is not possible yet without development effort, and an SAP expert suggested setting a flag on item level to mark which lines need approval. That thread is nearly four years old, so check the current documentation before you promise item-level approvals to anyone.

A read-only field, and where scripting fits

If the goal is a field the user cannot edit, you are back at editability, and the least-privilege thinking in my article on roles and least privilege applies directly. Which events a script can attach to, and which objects exist there, is covered in our article on how scripts are organized and where they fail. Scripting enters in one documented place: Dynamic Access Control for Quote Item Custom Fields in Quote 2.0, where SAP says scripting lets you “control their editability, read-only status, and visibility”. Note the scope. It is for Quote Item Custom Fields, and SAP does not claim it for the standard discount field. I found no documented script example that restricts a discount, so I would not promise one.

A presenter explains a sales value line chart and bar charts on a wall screen to colleagues seated at a table

Why a discount resets, greys out or still triggers approval

When a user reports a discount problem, I work through the layers in a fixed order: the rule, the editability, the approval, the parameter. The practitioner questions below are the ones I could actually find, quoted as asked.

The value snaps back after an update

SAP KBA 3741192, “Discount Values Are Reset After Updating Quote Items”, describes the symptom as “User-entered recurring or one-time discount values are not preserved after updating a quote item.” The cause is the application parameter When updating quote item, reapply default discount being enabled, and the fix is to set it to False. In Quote 1.0 the Event Pipeline page lists the raw name Cart.EditItemApplyDefaultDiscount with a slightly different label, ending in “discount/multiplier”. I did not find a page that says whether the two labels are one parameter, so check which label your tenant shows. This is the first thing I look at for anything that behaves like a reset, before I touch a rule, and our SAP CPQ troubleshooting hub follows the same top-down habit.

Additional discount fields are greyed out

The question was short: “I am not able to add additional discounts in SAP CPQ Quotes.” The thread itself ended without an answer, and the closest thing to one is the community blog described earlier. It points at Cart Fields Administration, and it applies to Quote 1.0 only.

The approval message stays after approval

A 2022 thread, marked solved, asked why a quote still showed the approval message after it had been approved, even with the status added to the condition. The accepted answer was a formula that tests the discount and excludes approved and placed quotes. The Quote 2.0 version reads [AND]([GT](<* AverageDiscountPercent *>,0),[NEQ](<*CTX( Quote.StatusName )*>,Approved),[NEQ](<*CTX( Quote.StatusName )*>,Order Placed)). In Quote 1.0 the status reference is written Quote.Status.Name, so copying a formula between engines silently breaks it.

Prices that come from the back end

With a pricing procedure from SAP Variant Configuration and Pricing, SAP states it is possible to make condition types visible or editable on the quote, but you need a script to map individual condition types to custom item columns. In other words, a discount that originates in the back end is not governed by the rule page alone.

Before you change a rule

Two facts from SAP’s pages shape how I roll out a change. Rules are evaluated again whenever a quote is loaded, reconfigured or repriced, so a new approval condition reaches quotes already in flight. And because a modified discount is kept on reopened quotes, editing the Default Value will not rewrite what users already changed. Quotes that are already waiting for an approver are a separate case, which I covered when I wrote about retracting an approval.

My routine, whenever someone asks me to disable discounts in SAP CPQ for a group, is simple. Change one layer at a time, then test with a user from every group the rule names, in both a low and a high discount case, on a quote in each status your editability grid covers. If the answer to “which layer is this?” still is not obvious after that, the setup has usually outgrown its original design, and a second pair of eyes saves a lot of ticket ping-pong.

Frequently Asked Questions

Why can't users add additional discounts in SAP CPQ quotes?
In Quote 1.0, the Additional discount amount and Additional discount description rows are greyed out when those options were never added to the editable field group on the Cart Fields Administration page for the user type and quote status. The SAP Community blog that describes this applies to Quote 1.0 only.
Why does the approval message still appear after a quote has been approved?
A solved SAP Community thread fixed it with a condition that tests the average discount percentage and excludes quotes whose status is Approved or Order Placed. In Quote 2.0 the status is referenced as Quote.StatusName, in Quote 1.0 as Quote.Status.Name, so a formula copied between the two engines will not work.
Can approval rules work at quote item level in Quote 2.0?
SAP describes the standard approval rule as working on the header level of the quote. A community thread from October 2022 concluded that item-level approval was not possible without development effort, and an SAP expert suggested setting a flag on item level to mark the lines that need approval. Check the current documentation before relying on that.
Why are user-entered discount values not preserved after updating a quote item?
SAP KBA 3741192 names the cause as the application parameter When updating quote item, reapply default discount being enabled. The fix it gives is to set the parameter to False.
How do I stop users from entering a discount above the maximum?
On the discount rule, leave the checkbox User can override values? unchecked, and the user will be unable to enter a value outside the Minimum and Maximum range. If it is checked, the value can be entered but the quote is submitted for approval to the user's approve parent, which requires the approval process to be set up.
Does changing a discount rule's default value reset discounts on reopened quotes?
SAP states that the Default Value is applied only the first time a user generates the quote. If the discount is then modified, that modified value is kept, and reopened quotes show the modified value.