Usage-based billing software for seats, usage and everything in between
Usage-based billing charges customers for what they actually consume — API calls, messages, tokens, gigabytes — measured each billing period and invoiced in arrears. Bunny billing is usage-based billing software for B2B SaaS: meter any unit through the API, rate it against flat, tiered, volume or banded pricing, and invoice it next to seats and platform fees on one subscription.
Bunny is SaaS billing, CPQ and RevOps in one platform, so the usage rate your rep negotiated on the quote is the rate on the invoice.
How does usage-based billing work in Bunny?
Four steps, one system. Your product reports what happened. Bunny does the counting, the pricing, the invoice and the revenue reporting — against the contract your customer actually signed.
Usage comes in
Your app sends usage records through the GraphQL API or the Node and Ruby SDKs. Each one is a quantity, a feature and a timestamp.
02 · RateUsage gets priced
At period end Bunny aggregates the records — sum, max, last or average — and prices the result on flat, tiered, volume or banded rates.
03 · InvoiceOne invoice goes out
Usage is billed in arrears on the same invoice as next period’s recurring fees, with tax calculated and payment collected.
04 · ReportRevenue adds up
Usage revenue lands in MRR charts, revenue movements and the invoice forecast, next to recurring revenue — not in a side spreadsheet.
One platform fee. A busy month.
Still one clear bill.
This is the deal your sales team keeps signing, and the invoice your finance team keeps rebuilding by hand. Here it is in Bunny.
What you negotiated
Then they expand in month seven
The allowance changes, the rate stays, the term co-terms and the next invoice is still right. That is the part spreadsheets get wrong.
Bring us your own pricing →Usage billing comes with the PLG plan; negotiated quotes come with SLG. Builders can start in the developer documentation.
How does usage get into Bunny?
Any countable thing in your product can be a meter. Define it once as a feature with a unit — API calls, messages, seats, tokens, documents processed — then report usage against it from your app. That is the whole integration.
-
API and SDKs
Send usage with the
featureUsageCreateGraphQL mutation, or the helpers in Bunny’s Node.js and Ruby SDKs. Send one record per event, or a daily or monthly total — whatever your pipeline already produces. Records can be corrected or removed withfeatureUsageUpdateandfeatureUsageDelete. - The usage records table Finance can inspect every record by account, plan and feature, and add usage by hand when a one-off needs billing.
- A window before the bill run Bill runs start after 8:15 a.m. in each entity’s own timezone, which gives your pipeline hours to land the last records of the period before invoices are cut.
New to the plumbing? Read what usage metering involves and how metered billing turns raw counts into charges.
mutation {
featureUsageCreate(attributes: {
subscriptionId: "123456"
featureCode: "api_calls"
quantity: 2500
usageAt: "2026-03-14T09:00:00Z"
}) {
errors
}
}
Pick how the period’s records are counted
- Sum
- Add every record up. Messages sent, API calls, tokens.
- Max
- Bill the peak. Concurrent users, storage high-water mark.
- Last
- Bill the final reading. Monthly active users counted at period end.
- Average
- Bill the mean of all readings. Fair for usage that swings day to day.
How is usage priced once it’s counted?
Rating is where most usage billing goes wrong — the right quantity at the wrong rate. In Bunny every usage charge carries its own pricing model, and the rate on the subscription is the one the customer signed.
| Model | How it prices | 25,000 calls costs |
|---|---|---|
| Flat | One rate per unit: $0.010 a call | $250 |
| Tiered | Each tier priced on its own: first 10,000 at $0.010, the rest at $0.008 | $100 + $120 = $220 |
| Volume | The tier you reach prices every unit: over 10,000 means all at $0.008 | $200 |
| Bands | The quantity picks a fixed price: 10,001–50,000 calls is $199 | $199 |
Negotiated rates
Override the usage rate on the quote for one customer. The catalog stays clean and the rate follows the subscription into renewal.
Minimums
Set a minimum quantity on a usage charge so a quiet month still bills the floor you agreed.
Usage discounts
Discount the usage charge on a subscription, separately from any discount on the platform fee.
Sub-cent prices
Price units to four or six decimal places for messages, events and tokens, and still show a readable invoice.
Seats plus usage, on one subscription
Pure pay-as-you-go is rare in B2B. Most SaaS contracts are a platform fee or seats, an included allowance, and overage above it. Procurement gets a predictable number; you get upside when the customer grows.
A Bunny price list can carry any number of one-time, recurring and usage-based charges. Recurring charges bill in advance at the start of the period. Usage charges bill in arrears at the end. Put a seat charge and a usage charge on the same plan and you have hybrid pricing without a second system or a second invoice.
Committed spend works the same way: the commitment is a recurring charge, and a tiered usage charge with a free first tier rates everything above it as overage. Need a floor on usage itself? Set a minimum on the usage charge.
Committed + overage, three plans
| Charge | Small | Medium | Large |
|---|---|---|---|
| Monthly fee, in advance | $20 | $40 | $80 |
| Requests included | 100 | 250 | 500 |
| Extra requests, in arrears | $0.25 | $0.22 | $0.20 |
In Bunny: a recurring flat charge plus a tiered usage charge, free up to the allowance. A Medium customer who makes 300 requests pays $40 + 50 × $0.22 = $51.
Can you bill AI products by token, credit or request?
Yes. AI products meter whatever maps to their compute cost — tokens, credits, generations, minutes — and the unit tends to change as the models do. Bunny treats each one as just another usage charge, so changing what you meter is a catalog change, not a rebuild.
Price the unit you sell
Meter single tokens at six decimal places, or report usage in thousands of tokens and price per 1K. Either way the invoice reads the way your pricing page does.
Rates that step down
Tiered usage pricing lowers the per-token rate as volume grows, while the seat fee for the admin console stays flat on the same subscription.
Allowances enterprise will sign
Sell a monthly credit allowance as a recurring charge and rate consumption above it as overage. Procurement gets its fixed number; heavy users still pay for what they burn.
Change the meter, keep the contracts
A new pricing model is a new price list. Existing customers keep billing on the terms they signed until a renewal or upgrade quote moves them.
Usage customers can see
The customer portal shows current-period usage as a sparkline, with the current and past few periods a click away. Fewer “why is my bill higher?” tickets.
Pricing an AI product?
Our guide to usage-based pricing models covers per-unit, tiered, hybrid and credit models with real examples, and how to bill each one.
From meter to invoice, without the month-end scramble
Usage is only known once the period closes, which is exactly when finance has the least time. Bunny gives you ways to see the invoice before the customer does.
Preview next month’s invoice today
Invoice preview renders what an account’s next invoice will look like from the usage recorded so far — ideal for testing a new price list before it goes live.
Draft invoices for the big accounts
Turn on draft invoices for an account and nothing is emailed until you approve it. If records were missing, add them, regenerate the invoice and release it.
One invoice, every charge
Last period’s usage in arrears and next period’s recurring fees in advance land on one invoice, with tax calculated per charge through the Avalara integration and payment collected through Stripe.
Usage revenue in the numbers
Every account carries MRR, ARR and monthly usage revenue. Revenue charts stack usage on top of recurring, movements show usage increases and decreases, and the invoice forecast projects usage from history.
The hidden complexity of usage-based pricing
The best of both worlds: recurring + usage-based
Go deeper on usage-based billing
Other problems we solve
This is one of several revenue operations problems B2B SaaS teams bring to Bunny — see the full list of problems we solve.
- Complex renewals Upsells and renewals become the majority of your deals. Bunny handles the subscription context, proration, ...
- Manual quote-to-cash Spreadsheet quoting has no guardrails and no approvals. Bunny automates the full quote-to-cash process, fro...
- Price optimization Win competitive deals without giving away margin. Bunny gives you discounts, ramps, and custom terms — with...
- Self-service billing Let customers manage their own subscriptions. Bunny's portal and embeddable React components work for any p...
- Siloed revenue data Bunny unifies PLG and SLG revenue into one source of truth — accurate revenue recognition, SaaS metrics, an...
- Slow time to market Launch new pricing, products, and plans without engineering bottlenecks. Bunny decouples your pricing layer...
The RevOps expert your team never had.
- Type "send upgrade quotes to all starter plan accounts" — done in seconds
- Know which renewals need you this month, while there is still time to do something about it
- Find every overdue invoice in one question, instead of one account at a time
No credit card required. Cancel anytime.