Early accessTest mode is free, no processor required

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 × token_type · per 1M tokens
cost coverage 82%
ModelTypePriceCostMargin
gpt-4.1input$3.00$1.5050%
gpt-4.1output$15.00$7.5050%
opus-4.8input$3.00$5.00−67%
opus-4.8output$15.00$25.00−67%
(catch-all)any$4.00untracked0%
Blended margin reads 41%. One model is underwater on every call.1 loss-maker

Runs on the processor you already have a merchant agreement with

  • Stripe
  • Windcave
  • NMI
  • Fluidpay
  • Cybersource
  • Dejavoo
  • + 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

Drawn down in expiry order · spend cap at 90%
cap.warning sent
Block A · expires Jul 31$2,000 / $2,000used
Block B · expires Sep 30$3,610 / $5,000drawing
Block C · expires Dec 31$0 / $5,000queued
gpt-4.1 · input · 812M tokens$2,436.00
gpt-4.1 · output · 211M tokens$3,165.00
Drawn from credits$5,601.00

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.

Processor-bundled billingUsage-metering toolsEnterprise billing suitesroi
Runs on the processor you already useLocked to one processorUsually one or twoVaries, often via partnersBuilt-in connectors, plus your own
What you payA % of billed revenueUsage or % feesAnnual contract + implementationFlat fee, 0% of revenue
Provider cost & margin per pricing cellNot modelledRarelyAdd-on or BI exportNative, same cells as price
Tiers, matrix, credits, minimums, ramps in one planPartial, workaroundsUsage-firstYes, with configurationCombine any of them
Simulate a price change on real historyNoSometimesSometimesReal or hypothetical usage
Durable retry across processorsSingle processor onlyOut of scopeVariesDurable workflows, full trail
Time to a validated first billMinutesDaysMonthsMinutes, in test mode
Typical of each category, not of any one product.Start in test mode

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.

Repricing opus-4.8 output, $15 → $45
−67%+26%

Simulate · Corvus Analytics

Against last period's usage · nothing is invoiced
dry run
ModelRevenueProvider costMargin
gpt-4.1$504.00$252.0050%
opus-4.8$216.00$360.00−67%
Simulated invoice$720.00
vs. current priceno change
Blended margin15%
Every model, combinable in one plan
Graduated tiersVolume tiersMatrixPackagePer unit, sub-centFlat feePrepaid creditsMinimums + true-upPrice rampsSeatsAllowance + overageTier flat fees

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.00
1
stripesoft_declinecode 51 · insufficient funds
day 0
durable timer · 3 days · survives deploys, restarts and outages
2
stripesoft_declinecode 51 · insufficient funds
day 3
durable timer · 7 days · routed to a second processor
✓
windcavesucceededcode 00
day 10
Recovered on attempt 3, across two processors+$4,820.00

No card data crosses the line

roi sends references, never card numbers. Funds settle from your processor to your bank.

roi, the billing brain
The plan, the ledger, the attempt history.
charge instruction · references only
PCI boundary
Your processor account
Holds the card, moves the money. Your agreement, your rates.
funds settle directly to you
Your bank account
roi never takes a cut of the funds flow.
Your keys, encrypted
Scoped restricted keys. Rotate to revoke.
Integer money math
Minor units end to end. No floats.
Double-entry ledger
Balanced and append-only. Invoices and payments sync to NetSuite.
Test and live, truly apart
Separate keys, ledgers and connections.

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.

POST /v1/usage
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
claude · mcp.billroi.com
// 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.

Test mode
Free

Every workspace. Build plans, send usage, validate a first bill. No processor or card required.

Start in test mode
Live
Flat monthly fee

Every pricing model, every connector, the MCP server and the hosted customer pages. Never a percentage of what you bill.

Talk to us for a quote
Processing
Your rates

Paid 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.