Tiered Pricing
Configure quantity-based graduated and volume pricing on RevKeen prices
- When to use tiered pricing instead of separate prices or usage-based billing
- How RevKeen models
graduatedandvolumetiers - How quantity transforms enable package-style pricing
- How to set up a tiered price in the dashboard
- What gets billed, stored, and shown on invoices
Tiered pricing lets you keep one fixed price and vary the amount charged by quantity. In RevKeen, the billing engine applies the tier table to the checkout quantity or subscription item quantity, then stores the calculation breakdown on the invoice line item.
RevKeen's public tiered-pricing model is quantity-based. If you sell seats, treat each seat as quantity 1. RevKeen does not attach seat assignment or member claims to the price itself.
Choose the right pricing model
Use the model that matches when quantity is known:
| Need | Use | Why |
|---|---|---|
| Every unit costs the same | per_unit fixed pricing | Simple quantity x unit amount |
| The price changes based on quantity chosen at purchase or renewal time | tiered fixed pricing | Bulk discounts, quantity bands, seat-style quantities |
| The charge depends on consumption measured after the fact | Usage-Based Billing | Metered events are aggregated at period end |
Use separate prices for different billing cadences such as monthly vs annual. Use tiered pricing when the same price record should produce a different total at different quantities.
How RevKeen models a tiered price
RevKeen exposes tiered pricing on a standard price record with a few extra fields:
| Field | Required | Meaning |
|---|---|---|
pricing_model | Yes | Must be fixed |
billing_scheme | Yes | Set to tiered |
tiers_mode | Yes | graduated or volume |
tiers | Yes | Ordered pricing bands with at least 2 entries |
transform_quantity | No | Optional quantity transform before pricing |
Each entry in tiers uses the same shape:
{
"up_to": 10,
"unit_amount_minor": 1000,
"flat_amount_minor": null
}| Tier field | Meaning |
|---|---|
up_to | Inclusive upper bound for the tier. The final tier must use null |
unit_amount_minor | Per-unit amount in minor currency units |
flat_amount_minor | Optional one-time fee charged when the tier is entered |
Model rules
- Tiered pricing is only supported on fixed prices.
- A tiered price must have at least 2 tiers.
- The final tier must be open-ended with
up_to: null. - Every tier must define at least one of
unit_amount_minororflat_amount_minor. - Tier configuration is immutable after creation. Archive the price and create a new one to change the commercial model.
Treat tier configuration as part of the commercial contract. Do not edit tiers in place for live customers. Create a new price and migrate new purchases to it instead.
How RevKeen calculates graduated pricing
With tiers_mode = graduated, each tier applies only to the units inside that band.
Example tier table:
| Tier | Range | Unit price |
|---|---|---|
| 1 | 1-10 | $10.00 |
| 2 | 11+ | $8.00 |
For a quantity of 14:
- Tier 1:
10 x $10.00 = $100.00 - Tier 2:
4 x $8.00 = $32.00 - Total:
$132.00
Use graduated pricing when you want the marginal price to fall as quantity grows, while still preserving the higher rate on the earlier units.
How RevKeen calculates volume pricing
With tiers_mode = volume, the tier matched by the final quantity determines the rate for all units.
Using the same tier table:
| Tier | Range | Unit price |
|---|---|---|
| 1 | 1-10 | $10.00 |
| 2 | 11+ | $8.00 |
For a quantity of 14:
- Quantity
14lands in tier 2 - RevKeen charges
14 x $8.00 = $112.00
Use volume pricing when you want a simpler bulk discount table where crossing the threshold reduces the rate for the whole purchase or subscription quantity.
Flat fees inside tiers
flat_amount_minor lets you add a one-time charge when a tier is used:
- In graduated mode, the flat fee is charged once for every tier that receives any quantity.
- In volume mode, the flat fee is charged once on the matched tier.
This is useful for models like:
- Base platform fee plus per-unit pricing
- Setup fee that only applies once quantity crosses a threshold
- Enterprise quantity bands with a fixed fee and a lower marginal rate
Advanced option: package-style quantity transforms
transform_quantity changes the quantity before tier lookup. This is how RevKeen supports pack- or bundle-style pricing through the API.
{
"transform_quantity": {
"divide_by": 100,
"round": "up"
}
}Example:
- Raw quantity:
250 divide_by: 100round: up- Billed quantity:
3
That lets you price in packs of 100, packs of 5 seats, or similar grouped units.
Use transform_quantity when the commercial unit is a package rather than a single raw unit. The dashboard focuses on direct tier tables. For advanced pack pricing, use the API.
Set up a tiered price in the dashboard
Open the product
Create a new product or open an existing product in Products.
Add a fixed price
Add a new price and keep the pricing model set to Fixed. Tiered pricing builds on a fixed price record.
Switch the billing scheme to tiered
Choose Tiered pricing instead of a flat per-unit amount.
Choose graduated or volume
Select whether RevKeen should bill each tier separately (graduated) or apply the matched tier rate to all units (volume).
Define the tiers
Add each tier's upper bound, per-unit amount, and optional flat fee. Leave the final tier open-ended so it covers all higher quantities.
Save and test with quantity
Save the price, then test it through checkout or a subscription flow using different quantities to confirm the expected totals.
API payload shape
Use the Prices API when you want to create tiered prices programmatically.
{
"product_id": "00000000-0000-0000-0000-000000000000",
"currency": "usd",
"type": "recurring",
"pricing_model": "fixed",
"interval": "month",
"interval_count": 1,
"billing_scheme": "tiered",
"tiers_mode": "graduated",
"tiers": [
{
"up_to": 10,
"unit_amount_minor": 1000,
"flat_amount_minor": null
},
{
"up_to": null,
"unit_amount_minor": 800,
"flat_amount_minor": null
}
]
}For the full request schema and response fields, see the Prices API Reference.
What appears on invoices and renewals
When RevKeen bills a tiered price:
- The final amount is calculated server-side by the canonical tiered-pricing calculator.
- Invoice line items can store a
tier_breakdownshowing how many units landed in each tier and what subtotal each tier produced. - Subscription renewals recompute the amount from the subscription quantity, so the next invoice matches the active quantity.
This gives you an audit trail for receipts, invoice detail views, and renewal previews.
Common patterns
| Pattern | Recommended model |
|---|---|
| Simple bulk discount | volume tiers |
| Marginal price gets cheaper after thresholds | graduated tiers |
| Base fee plus quantity | Tier with flat_amount_minor and unit_amount_minor |
| Packs, bundles, or blocks | transform_quantity plus tiered or per-unit pricing |
| Post-period overage billing from events | Usage-Based Billing |
Related
- Products and Pricing -- Product, price, and discount overview
- Subscriptions -- How quantity-based prices renew on subscriptions
- Usage-Based Billing -- Metered billing for measured consumption