B
Glossary
Block Pricing
Block pricing is a usage-based rate structure that sells units in fixed-size blocks at a fixed price per block. Consumption gets divided by the block size and rounded up, so a customer who uses part of a block pays for the whole block. Unused capacity inside a block carries no refund.
Key Takeaways
Orb's docs state that at a package size of 10, 4 units bill as 10 and 11 units bill as 20.
On Orb's published $0.80 block of 10 units, consumption of 39 costs $3.20 while 41 costs $4.00, a 25% jump from two extra units.
The effective per-unit price is a sawtooth. It drops across a block, jumps at every boundary, and reaches the block rate only at exact multiples of the block size.
Stripe's transform_quantity.round field is required and accepts up or down, so rounding direction is a configuration choice rather than a property of the model.
Twilio applies 60-second blocks across five voice products, rounding any partial minute up to the next full minute.
How is block pricing calculated?
Divide the consumed quantity by the block size, round up, then multiply that block count by the block price. Rounding runs before multiplication, which is why the arithmetic produces a staircase instead of a line.
Orb publishes a package size of 10 at a package amount of $0.80. Three consumption levels through it:
Units consumed | Blocks billed | Amount | Effective per-unit price
|
|---|---|---|---|
39 | 4 | $3.20 | $0.0821 |
41 | 5 | $4.00 | $0.0976 |
400 | 40 | $32.00 | $0.0800 |
The middle row is the whole term. Two units past the 40-unit boundary open a fifth block, so the bill rises 25% and the effective per-unit price rises 18.9%.
At an exact multiple of the block size the effective rate equals the $0.08 block rate, and that's the floor. The ceiling sits at one unit inside a fresh block, priced at the full $0.80.
The division and the round-up run at the rating step. Block size and unit of measure stay separate decisions: you can meter single API calls and price in blocks of 1,000.
What are the types of block pricing?
The variants split on which way partial blocks round and whether the customer buys blocks before or after consuming them.
Round-up blocks. The default, and the reason the term exists. Orb's package model bills 4 units as 10. Stripe reaches the same result with transform_quantity.divide_by set to the block size and round set to up.
Round-down blocks. Stripe's round field also takes down, which discards the partial block. At a block size of 10, a customer consuming 41 units pays for 4 blocks and the last unit rides free.
Time-increment blocks. Telephony has billed this way for decades. Twilio rounds any partial minute up, so a 61-second inbound US local call bills 2 minutes at $0.0085, or $0.017 instead of $0.0086.
Prepaid blocks. The customer buys blocks up front and draws them down, turning the round-up into a purchase decision rather than a billing surprise. What happens to unfilled blocks at period end is a credit rollover rule.
One caution on round-down: it reads well on a pricing page and hands every account a free partial block per period.
How does block pricing differ from tiered and volume pricing?
Block pricing changes the quantity before pricing it. Tiered and volume pricing change the rate applied to the quantity. Only block pricing can charge for units nobody consumed.
Here's the same usage through all three. Blocks sell 10 units for $0.80. Graduated tiers charge $0.10 for the first 10 units and $0.08 after. Volume charges $0.10 up to 10 units and reprices everything at $0.08 from 11.
Consumption | Block (10 units at $0.80) | Graduated tiers | Volume
|
|---|---|---|---|
39 units | $3.20 | $3.32 | $3.12 |
41 units | $4.00 | $3.48 | $3.28 |
Change | +25.0% | +4.8% | +5.1% |
At 39 units blocks undercut graduated tiers by 12 cents. At 41 they cost 15% more. The boundary decided that.
More differences show up in a billing system:
Blocks price as usage arrives, because a block's price never changes retroactively. Volume pricing settles only after the period closes.
Blocks have no inversion risk. A larger quantity never yields a smaller bill, which is a failure mode tiered and volume tables have to be tested for at every threshold.
Stripe treats blocks and tiers as mutually exclusive on one price, so a rate card where the block price falls as blocks accumulate needs a system that runs both.
Related terms
Rate structures get chosen against each other, so these definitions are the ones to have straight before picking one.
Volume Pricing prices the whole quantity at one reached rate, including the retroactive repricing blocks avoid.
Tiered vs Volume Pricing runs identical quantities through both rate modes and shows the gap.
Unit of Measure (Billing) settles what a single unit counts, which you decide before you decide how many go in a block.
Rating (Billing) covers the step that performs the division and the round-up.
Consumption-Based Pricing explains the pay-for-what-you-use model that block prices package into bundles.
Credit Rollover governs what happens to blocks a customer bought and didn't fill.
FAQ
Is block pricing the same as package pricing?
Yes, both name the same structure. Orb calls it package pricing and configures it with package_size and package_amount. Stripe reaches it through transform_quantity without naming a model at all.
Is block pricing the same as stairstep pricing?
No. Stairstep charges one flat fee for a whole range, so 1 to 100 units costs $50 and 101 to 200 costs $90. Blocks charge the same price for every block and repeat without limit, so the bill scales linearly in blocks.
What happens if a customer uses only one unit in a block?
They pay for the full block. On Orb's published $0.80 block of 10 units, one unit costs $0.80, which is 10 times the $0.08 block rate. Model that worst case before setting a block size, because low-volume accounts sit near it permanently.
Can you combine block pricing with tiered rates?
Not on Stripe. Its Prices API states that transform_quantity cannot be combined with tiers, so one price is either a block price or a tier table. Other billing systems allow blocks whose price falls as blocks accumulate, so check before designing a rate card that assumes it.
Back to glossary
















