Pricing models
A price supplies a tier ladder. The pricing model decides how that ladder is read. It lives on the product, not on the price, so every price on a product is read the same way.
Three models. The same four tiers produce three different totals, and the difference is not small, so it is worth working through once.
Throughout this page we use one ladder, in Swiss francs:
| Seats | Rate per seat |
|---|---|
| up to 5 | CHF 159 |
| 5 – 15 | CHF 139 |
| 15 – 50 | CHF 109 |
| above 50 | CHF 89 |
Volume
One rate applies to every unit. Find the tier the total quantity lands in, and charge all units at that rate.
A customer with 20 seats lands in the 15–50 tier, so every seat costs CHF 109:
Code
Not 5 at 159 and the rest cheaper. All twenty at 109, because the total landed there.
Volume is what people usually mean by "volume discount": grow enough and your whole bill gets cheaper, including the units you were already buying. It is the friendlier model for the customer and the easier one to explain in a sales call.
Staircase
Each band is charged at its own rate, and the bands are added together. Also called graduated or tiered pricing.
The same 20 seats are now split across three bands:
Code
CHF 550 more than volume, from identical tiers. That gap is the entire reason this page exists.
Staircase never reduces what a customer already pays: crossing into a cheaper band only makes the next units cheaper. The total cost curve bends but never drops, which is what the price editor draws for you:
Read the shape rather than the numbers. Each bend is a tier boundary. The line keeps climbing, just less steeply, because earlier seats keep their old rate.
Package
Units are sold in blocks. Instead of a rate per unit, you charge per pack, and a partial pack costs a whole pack.
Selling API calls in packs of 100,000 at CHF 50:
Code
The rounding is the point. Package suits things with a real unit cost per batch, and it makes revenue predictable, but a customer who uses one call over a boundary pays for a whole pack. Say so in the plan description.
Package requires a usage-based product, because a pack only makes sense against something a meter counts. Pairing it with a flat-fee or per-seat product is rejected at creation.
Which to choose
| If you want | Use |
|---|---|
| Growth to make the whole bill cheaper | Volume |
| Early units to keep their price | Staircase |
| To sell in fixed batches | Package |
| Simplicity above all | No tiers at all — a single list_price |
The model is on the product, and it is not obvious from the price
Two products can carry identical ladders and bill differently. When a total looks wrong, check the product's pricing model before you check the tiers.
Going deeper
A ladder does not have to be constant numbers. Each tier can compute its rate instead of stating it.
| Topic | What it adds |
|---|---|
| Price formulas | A tier rate computed from an expression, for example cost * 1.15 |
| Rate tables | Lookup and bracket tables a formula reads from |
| Costs | The upstream cost a margin formula multiplies |
| Key sets | One product, many priced variants: TLDs, regions, SKUs |
Reference
| Topic | When you need it |
|---|---|
| Prices | Creating the ladder these models read |
| Products | Where pricing_model is set, and why it is immutable |
| Prices API | tiers[], up_to, unit_amount, flat_amount |