Skip to main content

What a percent discount is

A percent discount subtracts a percentage of the calculated bill amount, applied independently to each billing calculation. It has no budget, no pool, and no lifecycle to track — it’s a stateless calculation: discount = value% × gross amount.
3,500 API calls × $0.001 = $3.50
20% percent discount = $0.70 off
Invoice: $2.80

How it compares to other discount types

TypeAnchored toPool?Scales with usage?
Percent discountDollar amount (rate)NoYes
Fixed discountDollar amount (absolute)YesNo
Quantity discountUnits (volume)YesNo
Because the percentage scales with whatever the bill amount turns out to be, a percent discount behaves predictably across both small and large bills — unlike a fixed dollar discount, which has more relative impact on a small bill than a large one.

The core mechanic

  1. Calculate the gross bill amount, after quantity discounts, the pricing model, and any minimum commitments have already been applied.
  2. Apply the percentage: discount = value% × gross amount.
  3. If a cap is configured, cap the discount: discount = min(discount, remaining period cap, remaining lifetime cap).
  4. Subtract: invoice amount = gross amount − discount, floored at $0.

Why caps create a “degressive” discount

Without a cap, the customer always pays the same percentage of their bill, no matter how large it gets. Once a dollar cap is introduced, the effective discount rate declines as the bill grows past the cap’s breakpoint — the dollar amount stays fixed, but as a share of an ever-larger bill, that fixed amount matters less and less.
BillDiscountEffective rate
$1,000$20020%
$2,500$50020% (breakpoint)
$5,000$50010%
$10,000$5005%
The breakpoint — where the cap starts to bite — is bill = max_per_period ÷ (value/100).

Cadence: how caps interact with billing periods

Cadence controls two things: when a per-period cap resets, and how the percentage is calculated across billing periods. Without a cadence, each billing period is independent — the percentage applies to that period’s gross amount alone, and any cap applies to that period alone. With a cadence, billing periods are grouped into cadence windows. The percentage is applied to the group’s total, then distributed back to individual periods in proportion to each period’s share of the group total. This proportional distribution exists for two reasons: it avoids giving a 100monthanda100 month and a 10,000 month the same flat discount, and it produces a single rounding point per group rather than accumulating rounding drift period by period. The total discount across the group is identical either way the math is done — what changes is where the cap applies (to the group total, not each period) and where rounding happens.

Two kinds of caps

LevelFieldStateRefreshes
Per-periodmax_per_period with optional cadenceWithin the current windowAt each cadence boundary
Lifetimemax_lifetimeForever, across the whole contractNever
Both can be combined: each period’s discount is the minimum of the calculated percentage, the remaining per-period cap, and the remaining lifetime cap. Once a lifetime cap is exhausted, the discount stops permanently — there’s no resetting it.

How it treats PIT and POT identically

The discount engine treats point-in-time and period-of-time products identically — it receives a gross dollar amount and applies the percentage, without knowing or caring whether that amount came from a PIT meter or a POT allocation. If the gross amount it receives is already prorated (for a mid-period start, an amendment, or a cancellation), the discount simply reduces that already-prorated amount.

Discount stacking and order

When multiple discounts apply to the same line item, they chain together through an explicit order: each discount’s output becomes the next discount’s input. Order changes the result:
Bill = $50.00, Fixed=$10, Percent=20%
Fixed then Percent: $50 − $10 = $40, then $40 × 80% = $32
Percent then Fixed: $50 × 80% = $40, then $40 − $10 = $30
The natural ordering applied across all three discount types is: quantity discount first (reduces units), then fixed discount (reduces dollars by a flat amount), then percent discount (reduces the remainder by a percentage) — this ordering is more favorable to the business than the reverse. Multiple percent discounts compound rather than add: 20% plus 10% is 1 − (0.8 × 0.9) = 28%, not 30%. For uncapped percent discounts, the order between them doesn’t matter; once caps are involved, order does matter.

Where it sits in the overall calculation

1. Raw usage
2. Quantity discount → adjusted quantity
3. Minimum quantity → effective quantity
4. Pricing model → gross amount
5. Minimum spend → max(gross, min spend)
6. Fixed discount → amount minus fixed (floored at $0)
7. Percent discount → amount × (1 − value%)
8. Final total
Because a percent discount only ever touches the gross dollar amount — never quantity or which pricing bracket or tier applies — it works identically across every pricing model: per-unit, volume, tiered, package, step, and flat fee.

Known edge cases

An uncapped 100% discount means the customer pays $0 indefinitely — worth confirming this is intentional before configuring it. A lifetime cap’s exhaustion isn’t visible to the customer in advance unless entitlement tracking is separately surfaced to them.