Billing that knows your margin.
Any pricing model, rated to the sub-cent and costed per cell, on the processor you already use. Flat fee, 0% of revenue.
ai_tokens · rate card
| Model | Type | Price | Cost | Margin |
|---|---|---|---|---|
| gpt-4.1 | input | $3.00 | $1.50 | 50% |
| gpt-4.1 | output | $15.00 | $7.50 | 50% |
| opus-4.8 | input | $3.00 | $5.00 | −67% |
| opus-4.8 | output | $15.00 | $25.00 | −67% |
| (catch-all) | any | $4.00 | untracked | 0% |
Runs on the processor you already have a merchant agreement with





- + your own, through one interface
Built for the pricing
you actually sell.
For AI and agent products
Bill tokens, credits and actions, and see which model loses money.
Every call costs you before it earns. Billing that only knows price can't show the model that's underwater; a blended margin hides it.
- Input and output priced apart, per model, in sub-cent micros
- Provider cost rated on the same cells as price, with coverage %
- Prepaid credit blocks drawn down in expiry order
- Spend-cap events to your webhook before a customer is surprised
Ashgrove Labs · prepaid credits
For sales-led B2B SaaS
Bill the contract sales actually signed.
Commits, ramps, seats, per-location licences and a true-up. Template billing turns that into a spreadsheet and a month-end scramble.
- Contractual minimums with the true-up as its own line
- Price ramps by contract year, fixed fees in advance or arrears
- Seats and licensed quantities that prorate mid-period
- One-off charges and credits on the next invoice, synced to NetSuite
inv_5c93aa · Meridian Health
For teams with a merchant agreement
Change billing without changing processors.
Billing shouldn't decide where your money flows. Moving usually means re-tokenising cards, re-papering rates and giving up a cut of revenue.
- Stripe, Windcave, NMI, Cybersource and more built in, or your own through one interface
- Adopt existing customers and stored cards, with no re-tokenising
- Retry a soft decline on a second processor
- Your keys, your rates, your settlement. roi holds no processor key
Connections
Most options make you give something up.
Processor billing takes a cut and keeps you on its rails. Metering tools stop before cost and collection. Enterprise suites do the contracts, after a quarter of implementation. roi was built so you don't have to pick.
Margin & simulation
Find the loss-maker. Fix the price before it ships.
Replay a price change against a customer's real usage, or usage that doesn't exist yet, and see the invoice before they do.
Simulate · Corvus Analytics
The billing brain.
Never the processor.
roi decides what to charge and when to retry. Your processor holds the card and moves the money straight to your bank, so roi sits out of the funds flow and out of PCI scope.
A declined card is a retry plan
Durable timers survive deploys and outages. Retry on a second processor. Every attempt on the record.
inv_8fa21c · Northwind Trading
$4,820.00No card data crosses the line
roi sends references, never card numbers. Funds settle from your processor to your bank.
One POST per product fact.
Agents welcome.
OpenAPI 3.1 contract, a typed TypeScript SDK, Swift and Kotlin for in-app recovery, and a hosted MCP server with 60 tools split by blast radius.
curl https://api.billroi.com/v1/usage \ -H "Authorization: Bearer $ROI_API_KEY" \ -d '{ "subscription_id": "sub_corvus", "meter": "tokens", "quantity": 250000, "dimensions": { "model": "opus-4.8", "token_type": "output" }, "idempotency_key": "generation-002" }' // rated at period close against price AND provider cost
// reads explore freely · writes carry idempotency keys › list_payment_methods { customer_id: "cus_ashgrove" } 2 cards on file · default visa ····4242 › set_default_payment_method { id: "pm_71b0e4" } default moved · the next rebill charges ····7301 › refund_invoice { invoice_id: "inv_44e0b8" } refused: confirm_live required against a live key
A flat platform fee.
Zero percent of your revenue.
Billing that takes a percentage gets more expensive every time you succeed. roi doesn't.
Every workspace. Build plans, send usage, validate a first bill. No processor or card required.
Start in test modeEvery pricing model, every connector, the MCP server and the hosted customer pages. Never a percentage of what you bill.
Talk to us for a quotePaid to your processor under the merchant agreement you negotiated. roi is never in the funds flow.
Questions a careful
buyer asks.
Do I have to leave my current processor?
No. roi connects to the processor you already use with your own scoped key. Existing customers and stored cards are adopted in place, so nothing is re-tokenised and your negotiated rates stay yours.
Why not just use the billing my processor offers?
If your pricing fits it and the percentage fee is fine, you should. roi is for teams whose pricing has outgrown it (tokens with real cost, commits and ramps, more than one processor) and who'd rather pay a flat fee than a cut of every invoice.
Can I migrate existing plans and subscriptions?
Yes. Bulk-import customers, plans and subscriptions from CSV or JSON, and adopt the customers and saved cards already on your processor in place, with a dry run first. Usage arrives through the API, one event or a batch at a time. Validate the first bill in test mode before anything goes live.
Do you handle tax and revenue recognition?
Revenue recognition, yes. Anything billed in advance posts to deferred revenue in a balanced double-entry ledger and is recognised month by month as the service is delivered. Invoices and payments sync to NetSuite. Tax is simpler today: it comes from a rate table you maintain, with registrations and B2B reverse charge, and every amount is marked as estimated. If you need tax determined across many jurisdictions, roi doesn't do that yet.
Price it however you want.
Know exactly what it earned.
Start in test mode. Bring a processor when you're ready to go live.