Module 1 · Evaluate a change
Should these products be sold as a bundle?
The model runs in eight steps for two to four products, each with its own pricing model. Fields with a teal underline are inputs you can change. Each label has a definition behind its i button, and each result is calculated from the fields to its left.
Decision
The question, the success measure, and the period are written down before any number is entered, which keeps the model on the question being asked.
Baseline
The baseline is what one customer pays today for each product bought separately at published prices. Every later result is compared with it.
Customer profile
One illustrative account. All three inputs can be changed.
A share of each transaction, up to a maximum fee.
The same fee for every unit.
A-la-carte bill Stripe's published prices as of 2026-09-21
The bundle can hold 2 to 4 products. Adding or removing a product rebuilds the account segments in step 4.
Drivers
Every usage fee multiplies a count of units. Payments that settle and attempts that are screened both come from the customer profile. Screening counts every attempt, including attempts that fail, so its count is larger.
| Product | Unit | Annual unitsAnnual unitsHow many units of a product one customer uses in a year: settled transactions, screened transactions, or a count you enter such as seats or API calls. |
|---|---|---|
| Tax | Settled transactions | 25,000,000 |
| Radar | Screened transactions | 27,173,913 |
Annual volume, average ticket, settle rate, and each product's unit are set in step 2.
Assumptions
These inputs describe how accounts respond, and none of them can be looked up. Each one shows its source. The account counts and rates below are placeholders until real account data replaces them.
Who takes the bundle, by Account segmentAccount segmentA group of accounts that responds to the bundle in the same way, defined by which products they already use.
estimateA segment is a group of accounts that buy the same products at list today. Tick the products a segment already buys. An account that takes the bundle ends up on every product.
| Inputs | Results | ||||||
|---|---|---|---|---|---|---|---|
| Segment | Already buys | Accounts | Take-up rateTake-up rateThe share of a segment's accounts that move to the bundle. | Effect | Per account | Per year | |
| On every product | % | Give-up | ($771,739) | ($15,434,783) | |||
| Payments + Radar, adds Tax | % | Attach gain | $1,728,261 | $20,739,130 | |||
| Payments + Tax, adds Radar | % | Attach gain | $1,130,435 | $13,565,217 | |||
| New deals quoted | Nothing yet | % | Win rate changeWin rate changeThe change in the share of quoted deals won because the bundle is on offer. | $3,630,435 | $9,076,087 | ||
Every account in a segment uses the customer profile from step 2. Real segments have a spread of volumes and tickets, which is the first data to pull before relying on the totals.
Cost to serveCost to serveWhat it costs to deliver the product to one customer for one period, or one unit.Watch forIt is usually fixed in dollars, so raising price widens the margin percentage. Costs that scale with price, like processing fees, are entered separately. for a newly attached product
estimateThese are the weakest inputs in the model, so step 6 solves for the cost at which an attach stops adding contribution and compares your entry with it.
Calculations
The bundle bill is built the same way as the baseline. It then has to pass two tests: the discount has to be recoverable, and the bundle can never cost less than a smaller set of its products at list. The price floors for the second test are solved first, so they can guide the bundle prices as they are set.
Price floors from rule 2Bundle floor (rule 2)The bundle must never cost less than a smaller set of its products at list price.ExampleIn the example at a $100 ticket, the bundle is $2,326,087 and Tax alone is $2,500,000, so the rule fails.Watch forIt has to hold at every ticket size. A check at a few sample tickets can miss a failing range.Also calledtwo-product floor
Each bundle price has a floor: the lowest value at which the bundle still costs at least as much as any smaller set of its products at list, at every ticket in the range. The floors come from the list prices, the customer profile, and the other bundle prices as they stand, so moving one slider moves the other floors.
Green is the range that keeps rule 2 across average tickets from $5 to $500. A floor is found by testing prices between zero and list until the lowest passing one is isolated, then confirming it at every cent of the ticket range. Tier prices and included units are not given floors.
Bundle bill
Each product keeps its pricing model in the bundle. Only its prices change.
The last line reads: a discount of 17.5% needs 21.3% more revenue per account to break even. Step 6 shows where the extra revenue has to come from.
Bundle floor (rule 2)Bundle floor (rule 2)The bundle must never cost less than a smaller set of its products at list price.ExampleIn the example at a $100 ticket, the bundle is $2,326,087 and Tax alone is $2,500,000, so the rule fails.Watch forIt has to hold at every ticket size. A check at a few sample tickets can miss a failing range.Also calledtwo-product floor
Why a bundle can fail in a range and what fixes it
A bundle discounts every product at once. When one product's discount grows with the ticket and another product's bundle price is a fixed amount, there can be a range where the growing discount is larger than the fixed amount. In that range the whole bundle costs less than the first product alone. A check at a few sample ticket sizes can pass while a range between them fails, so the sweep tests 49,501 ticket sizes, one cent apart.
In the example, Tax at list is 0.50% of the ticket and Tax in the bundle is 0.40%, while Radar in the bundle adds a fixed $0.0652 per settled transaction. A check at $5, $20, and $500 passes because all three sit outside the failing range. The variant preset raises the bundle rate to 0.44% and keeps the $0.44 cap. It passes at every ticket, and the discount at a $20 ticket falls from 17.5% to 13.0%.
Outputs
A customer discount is a different number on the seller's side, and the sign depends on which accounts take the bundle. Accounts already on every product give up revenue. Accounts adding a product bring new revenue. This section is the forecast.
Per account, no counts needed
The discount takes 17.5% off the bill and 23.0% off the contribution this account brought in, because the cost to serve does not fall with the price. The cost is the step 4 estimate for every product in the bundle, so the share moves with it.
Adding one product through the bundle
Each row is an account that already buys the other products at list and adds this one by taking the bundle. The cost columns compare the cost entered in step 4 with the cost at which the attach adds zero contribution.
| Product added | Attach gainAttach gainNew revenue when an account that buys the other products adds one more through the bundle.FormulaBundle total − List total of the other products = Attach gainExampleIn the example, a Payments + Tax account adding Radar: $3,630,435 − $2,500,000 = $1,130,435.Watch forIt nets off the discount the account now gets on the products it already had. | Attaches per give-upAttach breakeven ratioNew attaches needed for each cannibalized account to keep revenue flat.FormulaGive-up ÷ Attach gain = Attach breakeven ratioExample$771,739 ÷ $1,130,435 = 0.68 Radar attaches per three-product account.Watch forIt needs no account counts. It is a revenue test, and contribution also depends on cost to serve. | Breakeven costBreakeven cost to serveThe cost per unit above which attaching a product through the bundle loses money.FormulaAttach gain ÷ Annual units = Breakeven cost to serveExample$1,130,435 ÷ 27,173,913 screens = $0.0416 per screen.Watch forIt is the zero-contribution line. A required margin sets a lower ceiling. | Cost entered | Result |
|---|---|---|---|---|---|
| Tax | $1,728,261 | 0.45 | $0.0691 | $0.0200 | Adds contribution |
| Radar | $1,130,435 | 0.68 | $0.0416 | $0.0200 | Adds contribution |
Radar cost per screened transaction entered: $0.0200. That is $0.0216 under breakeven, so each attach adds contribution.
Across segments: full-year run rate once adoption is complete
estimate| Q1 ($1,147,418) | Q2 $1,563,859 | Q3 $4,275,136 | Q4 $6,986,413 | Year one $11,677,989 |
Sensitivity
Each assumption moves across a range while the others stay fixed. The table ranks them by how far net contribution moves, which shows where a wrong input would change the answer.
| Assumption | Tested range | Net contribution, low to high | SwingSensitivityHow much the result moves when one assumption moves and the rest stay put.Watch forMoving one input at a time hides cases where two inputs move together. |
|---|---|---|---|
| Take-up: On every product | 25.0% to 75.0% | $20,532,609 to $5,097,826 | $15,434,783 |
| Take-up: Payments + Radar, adds Tax | 10.0% to 30.0% | $5,445,652 to $20,184,783 | $14,739,130 |
| Radar cost per screened transaction | $0.0100 to $0.0300 | $16,755,435 to $8,875,000 | $7,880,435 |
| Tax cost per settled transaction | $0.0100 to $0.0300 | $16,440,217 to $9,190,217 | $7,250,000 |
| Take-up: Payments + Tax, adds Radar | 10.0% to 30.0% | $9,293,478 to $16,336,957 | $7,043,478 |
| Win rate change | 2.5% to 7.5% | $9,581,522 to $16,048,913 | $6,467,391 |
| Settle rate | 87.0% to 97.0% | $13,221,264 to $12,451,031 | $770,233 |
| Average ticket | $10.00 to $30.00 | $12,630,435 to $12,876,812 | $246,377 |
Breakeven assumption valueBreakeven assumption valueThe value of an assumption at which the change exactly matches the baseline.ExampleAt $7 the cohort is worth the same as today if monthly churn reaches 6.9%.Watch forIt measures the room for error. It does not say how likely that value is.: net contribution is zero when 2.6% of the segment "Payments + Radar, adds Tax" takes the bundle. You entered 20.0%.
Two assumptions at once: net contribution by take-up and ticket size
Rows are the take-up rate among accounts already on every product, which is the give-up. Columns are the average ticket. Every other input stays as entered. The outlined cell is the current scenario.
| Take-up \ Ticket | $5 | $10 | $20 | $50 | $100 | $200 | $500 |
|---|---|---|---|---|---|---|---|
| 0% | $44.0M | $33.5M | $28.2M | $25.1M | $24.1M | $14.7M | $5.9M |
| 25% | $28.1M | $23.1M | $20.5M | $19.0M | $18.5M | $12.9M | $5.2M |
| 50% | $12.3M | $12.6M | $12.8M | $12.9M | $13.0M | $11.1M | $4.5M |
| 75% | ($3.6M) | $2.2M | $5.1M | $6.8M | $7.4M | $9.4M | $3.7M |
| 100% | ($19.5M) | ($8.2M) | ($2.6M) | $752K | $1.9M | $7.6M | $3.0M |
Validation
The checks to run before committing to the price, the comparisons to make after launch, and the questions this model leaves open.
Before committing
- Pull the ticket distribution of real accounts. Rule 2 and attach gain both change with ticket size, and this model gives every account one average.
- Count accounts in each segment, and the discounts that accounts on every product already have. A negotiated discount shrinks the give-up.
- Get the cost to serve each product from finance and compare it with the breakeven costs in step 6.
- Quote a sample of live deals both ways and record which offer the customer picks.
After launch
- Compare each quarter with this forecast, split into volume, mix, and price.
- Track realized price against the bundle's published price to catch discounting on top of the bundle.
- Watch take-up among accounts already on every product first. It arrives earliest and every dollar of it is give-up.
What this model cannot prove
- How accounts will respond. The take-up and win rates are estimates with no data behind them yet. A pricing test or real account data is needed to confirm them.
- Net revenue after the base product's costs. The base product's price is held constant, so a bundle discount traded against it does not show up.
- Ramp within a deal. Volumes are a full year at steady state.
Send this forecast to Explain a miss
Module 2 takes one quarter of this forecast as its plan and compares it with what happened. The table shows what will be sent.
| Line, quarter 1 | Settled transactions | Revenue per transaction | Revenue |
|---|---|---|---|
| Tax and Radar at list | 125,000,000 | $0.1761 | $22,010,870 |
| Radar at list | 356,250,000 | $0.0761 | $27,105,978 |
| Tax at list | 356,250,000 | $0.1000 | $35,625,000 |
| Bundle | 166,406,250 | $0.1452 | $24,165,082 |
| Forecast revenue, with a net impact of ($1,147,418) against no bundle | $108,906,929 | ||