GTM Playbooks
Finance/FP&AIntermediateLast reviewed Run it in your LLM

Measure Discount Leakage by Rep and Segment, and What It Costs in Margin and Pipeline

The problem

Discounts get approved one deal at a time, so nobody adds up how much ARR the team gave away above the discount policy, which reps and segments it came from, what it cost in gross margin, or how much new pipeline it would take to earn the same dollars back.

Copy, paste, run

Run it in your LLM

One prompt for Claude or ChatGPT that turns a closed-won export into the number a CFO asks for: how much ARR the team gave away above the discount policy, where it sits, and how much pipeline the team would have to create to earn the same dollars. Type run the example after pasting it to test it on the fictional data built into the prompt.

Download .mdSKILL.mdExample CSV
# Discount Leakage by Rep

You are a RevOps and finance lead reporting to the CFO and the CRO. From a closed-won export with list and net price on every deal, measure how much ARR was given away in discounts, how much of it sat above the company's target maximum discount, which reps and segments it came from, and what winning it back is worth in gross margin and in pipeline the team would otherwise have to create, with every number traceable to the export.

## Rules

- Use only the data in this conversation. Do not invent deals, prices, discount benchmarks, or industry averages. If something is missing, ask for it, or use the fallback this prompt defines and label it as an assumption.
- Run the calculations in code (Python or your data analysis tool) if you can. If you cannot run code, say so at the top and show the working deal by deal.
- Show the formula and the deal count next to every headline number.
- Every default in this prompt (the last 12 months of closed won, winning back 100% of the leakage, gross margin applied to net price with cost to serve unchanged) is a starting assumption the user can change, not a benchmark. The target maximum discount, the gross margin, and the win rate come from the user.
- Read only. Do not change anything in the CRM or the quoting tool, and do not recommend action on any individual rep's pay or job. Report what the numbers imply and leave the policy decision to the user.
- Do not name individual reps in the summary. The rep table is for the user's own review.
- Format: discounts as percentages with one decimal, money to the nearest dollar, shares with one decimal.

## Step 0. Inputs

If the user says "run the example", use the EXAMPLE DATA section at the end of this prompt, do not ask any questions, and label every output "Example data (fictional)".

Otherwise ask for everything below in one message, skipping anything the user already gave:

1. A CSV export of closed-won deals, one row per deal, with these columns (ask the user to map theirs):
   - deal_id, close_date (YYYY-MM-DD), owner (rep ID), segment, list_arr, net_arr
   - list_arr is the annual value of the same products and quantities at the price book price before any discount; net_arr is the annual value as signed. Use the same definition in both columns. Treat free months and ramped pricing as discount: net_arr is the contracted value of the first 12 months.
   Where to get it: closed-won opportunities from the CRM with the quote or line-item totals at list and net (CPQ or quote line items usually hold both), owner, segment, and close date.
2. The target maximum discount: the deal desk or pricing policy threshold, or the ceiling the CFO wants to hold. There is no default; do not suggest a number.
3. Gross margin percent for this revenue, from finance.
4. Win rate for the same period: closed-won dollars / (closed-won + closed-lost dollars), from the CRM.
5. The period: by default the last 12 months of close dates.
6. The share of the leakage the user expects to win back: by default 100% to size the full gap; suggest rerunning at 50% for a planning case.

Then report a data check before any analysis: rows read; rows left out and why (duplicate deal ID, closed outside the period, no list price, no net price, net above list, which usually means the list price is wrong); deals kept; and total list and net ARR. Ask the user to confirm before going on, unless they said "run the example".

## Step 1. Discount and leakage

For each kept deal: discount = 1 - net / list. Leakage = list x (discount - target) when the discount is above the target, otherwise 0.

- Total list ARR L, net ARR N, discount dollars L - N, and the dollar-weighted discount 1 - N / L. Show the simple average of deal discounts next to it and say which way they differ.
- Leakage K = the sum of deal leakage, the discount dollars above the target. Discount dollars at the target = (L - N) - K.
- Deals above the target: count, and a list of each with owner, list ARR, discount, and leakage.
- By owner and by segment: deals, list, net, share of list ARR, dollar-weighted discount, deals above the target, leakage deal by deal, and the leakage the group's average discount alone would show (list x (average discount - target) when positive). Say plainly when the average understates it: deals below the target cancel deals above it in an average, so a group average under the target can still hold leakage.

## Step 2. What winning it back is worth

With gross margin GM, win rate W, and share won back S:

- Recovered ARR R = K x S. Net ARR after = N + R.
- Gross profit now = N x GM. Gross profit after = N x GM + R, because cost to serve does not change when the discount does, so every recovered dollar is gross profit. Gross margin after = (N x GM + R) / (N + R), and the change in points.
- Leakage as a share of net ARR (K / N) and of gross profit (K / (N x GM)).
- Pipeline equivalent: R / W, the new pipeline the team would have to create to book R in new ARR.
- Gross profit equivalent: R / GM in new bookings earns the same gross profit as R of recovered discount, and R / GM / W in pipeline.

## Step 3. Break-even

Holding the line on discount may lose some deals. Let N_A be net ARR today on the deals above the target and G_A = N_A x GM.

- ARR break-even: the deals above the target could lose R / (N_A + R) of their bookings after the change and net ARR would still be even.
- Gross profit break-even: R / (G_A + R), higher than the ARR figure because lost deals also take their cost to serve with them.
- Compare these with what the user knows about how often deals above the target were won only because of the discount. Do not estimate that share yourself.

## Step 4. Output

Start with a five-line summary:

- Headline: "{K} of ARR given away above the {target} target across {count} of {n} deals; dollar-weighted discount {discount} against a {target} target."
- Where it sits: the share of the leakage in the top two owners and in each segment, without naming reps, and whether segment averages hide it.
- Worth: recovered ARR at {S}, gross margin from {GM} to {GM after}, and the pipeline equivalent at the {W} win rate.
- Break-even: the share of over-target bookings that could be lost and still leave ARR and gross profit even.
- One line: "Period {start} to {end}; target {target}; {excluded} rows were left out."

Then these tables:

1. Data check
2. By owner (owner, deals, list, net, share, discount, deals above target, leakage, leakage from the average), for the user's review only
3. By segment (the same columns)
4. Deals above the target (deal, owner, list, discount, leakage)
5. Money math (each formula in steps 2 and 3 with its arithmetic)
6. Assumptions, each labeled as an assumption, including: the list and net definitions; free months and ramps counted as discount; gross margin applied to net price with cost to serve unchanged; the share won back; the win rate applied to new pipeline; history is not a forecast.

If you can create files, offer the owner table, the segment table, and the deal list as CSV downloads.

## EXAMPLE DATA (fictional, for testing this prompt)

Use this only when the user says "run the example". The company, reps, and deals are made up.

- Period: 2025-11-01 to 2026-10-31
- Target maximum discount 15%, gross margin 78%, win rate 25%, share won back 100% (all example inputs)
- Defaults: all others as written above

```csv
deal_id,close_date,owner,segment,list_arr,net_arr
D-118,2025-10-15,R-02,Mid-market,300000,270000
D-101,2025-11-14,R-01,Enterprise,1000000,760000
D-104,2025-12-19,R-02,Enterprise,900000,792000
D-112,2025-12-31,R-05,Enterprise,1000000,880000
D-107,2026-01-30,R-03,Mid-market,600000,396000
D-102,2026-02-20,R-01,Enterprise,800000,600000
D-105,2026-03-27,R-02,Mid-market,600000,540000
D-110,2026-03-31,R-04,Mid-market,600000,510000
D-114,2026-04-24,R-06,Enterprise,700000,602000
D-117,2026-05-15,R-06,Mid-market,100000,110000
D-108,2026-05-29,R-03,Mid-market,500000,360000
D-113,2026-06-26,R-05,Enterprise,800000,720000
D-103,2026-06-30,R-01,Enterprise,700000,540000
D-116,2026-07-31,R-05,Mid-market,,150000
D-111,2026-08-28,R-04,Mid-market,400000,340000
D-106,2026-09-25,R-02,Mid-market,500000,428000
D-106,2026-09-25,R-02,Mid-market,500000,428000
D-109,2026-09-30,R-03,Mid-market,400000,294000
D-115,2026-10-16,R-06,Mid-market,500000,438000
```

How to run it

  1. Open Claude or ChatGPT with code execution on (Claude's analysis tool, ChatGPT data analysis). Without it the model does arithmetic by hand, and you should check every number.
  2. Paste the prompt. To test it first, send "run the example" and compare with the expected results below.
  3. Attach a CSV of closed-won deals with deal ID, close date, owner, segment, list ARR, and net ARR, and give the prompt your target maximum discount, gross margin, and win rate. The prompt lists the columns and where to find them.
  4. Read the data check first, then take the summary to the pricing or deal desk review: the leakage by segment and the break-even line are the numbers to decide policy on. Keep the rep table for your own review.

Before you paste deal data

List and net prices by rep are commercially sensitive. Check your company's AI and data policy, prefer a business or enterprise plan, and drop account names and contacts: the prompt only needs deal IDs, rep IDs, segments, dates, and amounts. It reads the export and changes nothing in your CRM or quoting tool.

Expected results on the example data

A correct run of "run the example" should match these, give or take rounding. They are computed from the prompt's definitions by a reference implementation that is tested against hand-worked numbers. The data is fictional.

Data check
19 rows; 15 deals kept; left out: D-118 (closed outside the period), D-117 (net above list, check the list price), D-116 (no list price), D-106 (duplicate deal ID); list ARR $10,000,000, net ARR $8,200,000
Discount
1 - $8,200,000 / $10,000,000 = 18.0% dollar-weighted ($1,800,000); simple average of deals 18.3%
Leakage above the 15% target
$450,000 across 6 of 15 deals; discount at the target $1,350,000
Gross margin
$6,396,000 to $6,846,000; 78% to 79.14% (+1.14 points)
Pipeline equivalent at 25%
$450,000 / 25% = $1,800,000; same gross profit from new bookings $576,923, or $2,307,692 of pipeline
Break-even
ARR 13.2% and gross profit 16.4% of the $2,950,000 net ARR on over-target deals
Expected discount and leakage by owner
OwnerDealsList ARRNet ARRShareDiscountAbove targetLeakageFrom the average
R-013$2,500,000$1,900,00025.0%24.0%3$225,000$225,000
R-023$2,000,000$1,760,00020.0%12.0%0$0$0
R-033$1,500,000$1,050,00015.0%30.0%3$225,000$225,000
R-042$1,000,000$850,00010.0%15.0%0$0$0
R-052$1,800,000$1,600,00018.0%11.1%0$0$0
R-062$1,200,000$1,040,00012.0%13.3%0$0$0

Two of six owners hold all $450,000 of leakage, half in each segment. The Enterprise average of 17.1% shows only $121,000 above the target because the R-02, R-05, and R-06 Enterprise deals below 15% cancel part of R-01's; counted deal by deal it is $225,000. Winning it all back lifts gross margin from 78% to 79.14% and is worth the same net ARR as $1,800,000 of new pipeline at a 25% win rate. Holding the line pays as long as fewer than 13.2% of the over-target bookings walk.

Discount leakage, margin, and the pipeline it equals

Enter annual bookings at list, the average discount, and a few reps or segments with their share of list bookings and average discount. Bookings not in a row get the discount the average implies. Leakage = list x (discount - target) on every row above the target. Prefilled with the fictional example.

Discount by rep or segment

ARR given away above the 15% target
$450,000
5.5% of net ARR, 2 of 5 rows above target
All discount given
$1,800,000
Blended 18.00% on $10,000,000 at list
Discount if every row held the target
$1,350,000
Net ARR now $8,200,000
ARR won back at 100%
$450,000
Net ARR $8,200,000 to $8,650,000
Gross margin after
79.14%
+1.14 points; gross profit $6,396,000 to $6,846,000
Pipeline it equals at a 25% win rate
$1,800,000
Won-back ARR / win rate
Pipeline for the same gross profit
$2,307,692
$576,923 of new bookings at the margin
ARR break-even
13.2%
of $2,950,000 over-target net ARR could be lost
Gross profit break-even
16.4%
of the $2,301,000 gross profit on those rows
List, net, discount, and leakage by row
RowShareDiscountList ARRNet ARRLeakage
R-0125.0%24.0%$2,500,000$1,900,000$225,000
R-0220.0%12.0%$2,000,000$1,760,000$0
R-0315.0%30.0%$1,500,000$1,050,000$225,000
R-0410.0%15.0%$1,000,000$850,000$0
All other bookingsImplied by the average30.0%12.0%$3,000,000$2,640,000$0

A row uses its average discount, so deals on both sides of the target cancel out and the calculator can show less leakage than a deal-by-deal count; the prompt counts every deal. Gross profit assumes cost to serve does not change with price. Break-even is the share of over-target bookings you could lose by holding the line and still come out even; it is not a forecast of how many you would lose.

Implementation steps

  1. 1

    Write the definitions down before pulling data: list ARR is the annual value of the same products and quantities at the price book price; net ARR is the annual value as signed; free months and ramps count as discount, so net ARR is the contracted value of the first 12 months; discount = 1 - net / list; leakage = list x (discount - target) on every deal above the target maximum discount, otherwise 0. The target comes from your pricing or deal desk policy, not from a benchmark

  2. 2

    Export closed-won deals for the last 12 months (an assumption you can change) with deal ID, close date, owner, segment, list ARR, and net ARR, from CPQ or quote line items where list and net both live. Drop duplicates, deals outside the period, deals with no list or net price, and deals where net is above list (usually a wrong list price), and list each dropped row

  3. 3

    Total list ARR and net ARR and report the dollar-weighted discount, 1 - net / list, next to the simple average of deal discounts; large deals with deep discounts pull the dollar-weighted number up, and that is the one finance books

  4. 4

    Count leakage deal by deal, then total it by owner and by segment. Next to each group's total show the leakage its average discount alone implies: deals below the target cancel deals above it in an average, so a segment that looks inside policy on average can still hold leakage

  5. 5

    Price what winning it back is worth with your own gross margin GM, win rate W, and the share S you expect to recover: recovered ARR R = leakage x S; gross margin after = (net x GM + R) / (net + R), because cost to serve does not change when the discount does; the pipeline equivalent = R / W; and R / GM / W is the pipeline that would earn the same gross profit from new bookings

  6. 6

    Work out the break-even before anyone changes the policy: the deals above the target can lose R / (their net ARR + R) of their bookings and net ARR still comes out even, and R / (their gross profit + R) on gross profit. Compare that with what the deal desk knows about how often those deals were won only on price; do not guess the share

  7. 7

    Run it with the copy-paste prompt on this page in Claude or ChatGPT, or with formulas in the template, check the over-target deals against the quotes, and use the calculator on this page to test other targets, margins, win rates, and recovery shares. Share the segment view and the break-even line with the CRO and CFO; keep the rep table for coaching, not for pay decisions

  8. 8

    Rerun after each quarter closes and track leakage, the dollar-weighted discount, and the share of deals above the target over time, so a policy or approval change shows up in the next run

Template outline

The structure to recreate in your own workspace. Field names and thresholds are starting points.

Google Sheet: Discount leakage FYxx (Finance owns it, RevOps maintains the export)

Tab inputs: period_start, period_end, target (your policy maximum discount), gm (gross margin), win_rate, share_won_back (default 100%)

Tab deals (one row per closed-won deal): deal_id, close_date, owner, segment, list_arr, net_arr
  kept = in period AND list_arr > 0 AND net_arr <> "" AND net_arr <= list_arr AND not a duplicate
  discount = 1 - net_arr / list_arr
  leakage = IF(kept, MAX(0, list_arr x (1 - target) - net_arr), 0)
  above_target = leakage > 0

Tab by_owner and by_segment:
  list = SUMIFS(list_arr, owner, o, kept, TRUE); net = SUMIFS(net_arr, ...); discount = 1 - net / list
  leakage = SUMIFS(leakage, owner, o); from_average = MAX(0, list x (1 - target) - net)

Tab money:
  L = SUM(list); N = SUM(net); K = SUM(leakage); N_A = SUMIFS(net_arr, above_target, TRUE)
  R = K x share_won_back; gross margin after = (N x gm + R) / (N + R)
  pipeline equivalent = R / win_rate; same gross profit = R / gm, pipeline R / gm / win_rate
  break-even ARR = R / (N_A + R); break-even gross profit = R / (N_A x gm + R)

Worked example (example data, fictional): 12 months from 2025-11-01, target 15%, gross margin 78%,
win rate 25%, share won back 100% (all example inputs, not benchmarks)
  19 rows read, 15 kept. Left out: D-118 closed 2025-10-15, before the period; D-117 net $110,000
    above list $100,000; D-116 has no list price; D-106 listed twice.
  Deals, list -> net ($K), discount:
    R-01 1,000->760 24.0%, 800->600 25.0%, 700->540 22.9%   list 2,500 net 1,900 = 24.0%
    R-02 900->792 12.0%, 600->540 10.0%, 500->428 14.4%     list 2,000 net 1,760 = 12.0%
    R-03 600->396 34.0%, 500->360 28.0%, 400->294 26.5%     list 1,500 net 1,050 = 30.0%
    R-04 600->510 15.0%, 400->340 15.0%                     list 1,000 net   850 = 15.0%
    R-05 1,000->880 12.0%, 800->720 10.0%                   list 1,800 net 1,600 = 11.1%
    R-06 700->602 14.0%, 500->438 12.4%                     list 1,200 net 1,040 = 13.3%
  Total: L $10,000,000, N $8,200,000, discount 1 - 8.2 / 10 = 18.0% dollar-weighted
    (simple average of the 15 deal discounts 18.3%)
  Leakage at 15%, list x 85% - net:
    R-01 850 - 760 = 90, 680 - 600 = 80, 595 - 540 = 55          = $225,000
    R-03 510 - 396 = 114, 425 - 360 = 65, 340 - 294 = 46         = $225,000
    K = $450,000 on 6 of 15 deals; discount at the target $1,800,000 - $450,000 = $1,350,000
  By segment (Enterprise = deals of $700K list and up in this example):
    Enterprise list $5,900,000, net $4,894,000, 17.1%; leakage $225,000, from the average only $121,000
    Mid-market list $4,100,000, net $3,306,000, 19.4%; leakage $225,000, from the average only $179,000
  Money:
    R = $450,000 x 100% = $450,000; K / N = 5.5% of net ARR, K / (N x gm) = 7.0% of gross profit
    Gross profit $8,200,000 x 78% = $6,396,000 -> $6,846,000
    Gross margin $6,846,000 / $8,650,000 = 79.14%, +1.14 points
    Pipeline equivalent $450,000 / 25% = $1,800,000
    Same gross profit from new bookings $450,000 / 78% = $576,923, pipeline $576,923 / 25% = $2,307,692
  Break-even: N_A = $1,900,000 + $1,050,000 = $2,950,000
    ARR $450,000 / ($2,950,000 + $450,000) = 13.2% of over-target bookings could be lost
    Gross profit $450,000 / ($2,301,000 + $450,000) = 16.4%

Calculator on this page, prefilled: list $10,000,000, average 18%, rows R-01 25% at 24%, R-02 20% at 12%,
  R-03 15% at 30%, R-04 10% at 15%; the other 30% of bookings at the implied
  (18 - (25 x 24 + 20 x 12 + 15 x 30 + 10 x 15) / 100) / 30% = 12%
  Leakage R-01 $2,500,000 x 9% + R-03 $1,500,000 x 15% = $450,000; every money line above matches

Slack to #revenue-leadership after each quarter closes:
"Discount check {{period}}: {{leakage}} of ARR above the {{target}} target on {{deals_above}} of {{deals}} deals;
 dollar-weighted discount {{discount}}. Winning back {{share}} lifts gross margin to {{gm_after}} and equals
 {{pipeline_equivalent}} of pipeline at a {{win_rate}} win rate. Break-even: {{break_even_arr}} of over-target
 bookings. Sheet: {{sheet_url}}"

Tab history: quarter, discount, leakage, deals above target, gross margin after, break-even

Cost, time saved, and break-even

Tool cost here is your share of an LLM plan, which depends on your vendor, so it is an input. Every number below is an example input; replace each with your own figure.

Inputs (all assumptions)

Replace each value with your own figure.

  • THours a quarter to measure discount leakage by hand (pull list and net from quotes, clean the export, score each deal, total by rep and segment, work out margin and break-even, write it up)6AssumptionTime the next quarter-end pricing review.
  • VHours a quarter with the prompt or template (export, review the data check and the results)1AssumptionTime the first two quarterly runs.
  • RLoaded hourly cost of the FP&A or RevOps analyst$75AssumptionSalary plus benefits, divided by working hours.
  • KMonthly tool cost for the LLM plan$20AssumptionYour share of the Claude or ChatGPT plan, from current vendor pricing and your invoices; the CRM, Google Sheets, and Slack are usually already paid for.

Formulas

Time saved per quarterT - V
6 - 1 = 5 hours
Time saved per week(T - V) / 13
5 / 13 = 0.4 hours
Value of time saved per quarter(T - V) x R
5 x $75 = $375
Tool cost per quarterK x 3
$20 x 3 = $60
Break-even hours per quarterK x 3 / R
$60 / $75 = 0.8 hours, so the run covers its tool cost once it saves 48 minutes a quarter
Leakage and the pipeline it equals (fictional example data)sum of list x (discount - target) over deals above the target; recovered / win rate
$450,000 above the 15% target; $450,000 / 25% = $1,800,000 of pipeline to book the same ARR
  • The time math counts analyst time only. The leakage itself is a much larger number, but how much of it you can win back depends on your market and deal desk, so it is sized with the share won back as an input, not added to the time savings.
  • Past discounting is not a forecast: a price change, a new segment, or a competitive quarter can move it, and the break-even assumes lost deals would have closed at their current net price. Recheck it each quarter before changing policy.
  • Rerun the time math after the first two quarters with your real review time V.

Common questions

How do you calculate discount leakage?
For each closed-won deal, discount = 1 - net ARR / list ARR, and leakage = list ARR x (discount - target maximum discount) when the discount is above the target, otherwise 0. Add it up deal by deal. In the fictional example $10,000,000 of list ARR closed at $8,200,000, an 18.0% discount, and $450,000 of it sat above a 15% target.
Why can a rep or segment average hide discount leakage?
Deals below the target cancel deals above it in an average. In the fictional example the Enterprise segment averages 17.1%, which implies only $121,000 above a 15% target, but counted deal by deal it holds $225,000 because four Enterprise deals sit below 15% and offset three above it. Report both numbers and act on the deal-by-deal one.
How much pipeline is discount leakage worth?
Divide the ARR you expect to win back by your win rate: that is the new pipeline the team would otherwise have to create to book the same dollars. In the fictional example $450,000 at a 25% win rate equals $1,800,000 of pipeline. On gross profit it is more, $450,000 / 78% / 25% = $2,307,692, because new bookings carry cost to serve and recovered discount does not.
How does reducing discount change gross margin?
Cost to serve does not change when the price does, so every recovered discount dollar is gross profit: margin after = (net x gross margin + recovered) / (net + recovered). In the fictional example $450,000 recovered on $8,200,000 of net ARR at 78% takes gross margin to 79.14%, up 1.14 points.
What if holding the line on discount loses deals?
Work out the break-even: the over-target deals can lose recovered / (their net ARR + recovered) of their bookings and net ARR still comes out even. In the fictional example that is $450,000 / $3,400,000 = 13.2%, and 16.4% on gross profit. Whether more than that would walk is a judgment for your deal desk; this playbook does not estimate it.

Keep going

View all Finance/FP&A

Need help implementing a playbook?

Our team builds custom Clay workflows and AI automations for revenue teams.

Get it built for you