RevKeenDocs
Billing & PaymentsProducts and Pricing

Tiered Pricing

Configure quantity-based graduated and volume pricing on RevKeen prices

What you'll learn
  • When to use tiered pricing instead of separate prices or usage-based billing
  • How RevKeen models graduated and volume tiers
  • 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:

NeedUseWhy
Every unit costs the sameper_unit fixed pricingSimple quantity x unit amount
The price changes based on quantity chosen at purchase or renewal timetiered fixed pricingBulk discounts, quantity bands, seat-style quantities
The charge depends on consumption measured after the factUsage-Based BillingMetered 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:

FieldRequiredMeaning
pricing_modelYesMust be fixed
billing_schemeYesSet to tiered
tiers_modeYesgraduated or volume
tiersYesOrdered pricing bands with at least 2 entries
transform_quantityNoOptional quantity transform before pricing

Each entry in tiers uses the same shape:

{
  "up_to": 10,
  "unit_amount_minor": 1000,
  "flat_amount_minor": null
}
Tier fieldMeaning
up_toInclusive upper bound for the tier. The final tier must use null
unit_amount_minorPer-unit amount in minor currency units
flat_amount_minorOptional 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_minor or flat_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:

TierRangeUnit price
11-10$10.00
211+$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:

TierRangeUnit price
11-10$10.00
211+$8.00

For a quantity of 14:

  • Quantity 14 lands 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: 100
  • round: 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_breakdown showing 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

PatternRecommended model
Simple bulk discountvolume tiers
Marginal price gets cheaper after thresholdsgraduated tiers
Base fee plus quantityTier with flat_amount_minor and unit_amount_minor
Packs, bundles, or blockstransform_quantity plus tiered or per-unit pricing
Post-period overage billing from eventsUsage-Based Billing