Three API calls.
That's your billing.

Subscriptions, credits, usage metering and feature gating for AI products. You call attach, check and track. No webhooks.

Customers

user_123

pro · active

olamide@acme.ai · joined 11 days ago

Plan
Pro
$29 / month
Balance
988 cr
of 1,000 + 50 add-on
Resets in
11 days
monthly cycle
Provider
Paystack
card ending 4421
Features this cycle
  • gpu-inference 620 / 1,000 cr
  • seats 3 / 5
  • exports 14 / 50
  • priority-queue enabled
Activity live
  • billwave.track()
    gpu-inference
    -12 cr
    2s ago
  • billwave.check()
    gpu-inference · 174ms
    allowed
    2s ago
  • billwave.addon()
    credit pack
    +50 cr
    3h ago
  • billwave.attach()
    paystack · $29.00
    pro
    11d ago

Works with the providers you already use

  • Paystack
  • Stripe
  • Dodo Payments
  • Bachs new

Sound familiar?

This week you shipped a feature.
Your billing code didn't notice.

lines of billing glue month 15
you added a new model tier. you changed what a credit costs. you launched team plans. you gave someone a top-up. you moved to weekly resets. you added overage on Pro. you switched provider for one region. you made a feature Pro-only. you refunded a double charge. you shipped a free trial. you added a new model tier. you changed what a credit costs. you launched team plans. you gave someone a top-up. you moved to weekly resets. you added overage on Pro. you switched provider for one region. you made a feature Pro-only. you refunded a double charge. you shipped a free trial.

How it works

Stop rebuilding billing. Call it.

Three calls. That's the whole surface area you need to learn.

  1. 01 billwave.config.ts
    plan("pro", { price: 29, credits: 1000 })

    Define

    Plans live in one config file. Sync and they're live.

  2. 02 checkout.ts
    await billwave.attach(user, "pro")

    Attach

    One call returns a checkout URL. Upgrades use the same call.

  3. 03 inference.ts
    await billwave.check(user, "gpu") allowed

    Check & track

    Gate the request, do the work, record the cost.

Pricing templates

Steal pricing from companies you trust.

All 15 templates
OpenAI Codex
OpenAI Codex
Vendor snapshot

OpenAI Codex

  • Free & Go Limited-time access
  • Paid plans Higher limits and credits
  • Top-ups Additional credits available
Details
Cursor
Cursor
Subscription + quota

Request tiers

  • Hobby Limited requests
  • Pro $20/mo - Extended limits
  • Pro+ $60/mo - 3x usage
Details
Replicate
Replicate
Usage-based

GPU tiers

  • T4 GPU $0.000225/sec ($0.81/hr)
  • A100 GPU $0.0014/sec ($5.04/hr)
  • H100 GPU $0.001525/sec ($5.49/hr)
Details

What you get

The whole billing layer.
Not just the checkout.

  • Subscriptions

    Monthly, yearly, trials, upgrades. One call.

  • Usage metering

    Tokens, requests, minutes. Atomic counts.

  • Flexible resets

    Every 5 minutes, hourly, daily, monthly, custom.

  • Credits & add-ons

    One balance across features. Sell top-up packs.

  • Feature gating

    Per-plan on/off. check() answers in ~175 ms.

  • Team seats

    Seats, projects, workspaces. Count, cap, charge.

  • Overage

    Keep going past the limit and bill it, or hard-stop.

  • Bring your provider

    Paystack, Stripe, Dodo, Bachs. Swap without code changes.

A short note from us,

builder to builder.

When you're early, a simple subscription + some webhooks and a counter in your db can hold up. but as grow, things start to break in unexpected ways, and your team start to take more sprints to fix billing issues.

One small change can mean lost revenue, double charge users, or silently fail in ways you don’t notice. support tickets pile up, invoices don’t match usage, credits feel off, and you’re digging through logs trying to trace which webhook or edge case broke things this time. we’ve seen this play out over and over.

But billing is not your product, you should be taking that time to innovate and deliver better to your customers.

If you're building something AI product, usage-based, credit-based, or subscription-heavy, that is exactly the kind of product we are trying to serve.

If you're curious but not sure how Billwave would fit your product, reach out. We are happy to help think through the setup with you on Discord, Twitter, or book a call.

We are still early, still opinionated, and still very close to the users shaping the product. That is one of the best reasons to try us now.

Best,

Yaqeen from Billwave

P.S. Billwave is still free to start.

Questions

The things people ask before they switch.

Something we missed? Talk to the founder, a human answers.

01 Do I really not need webhooks?
No. attach(), check() and track() read from Billwave, which already holds the customer's plan, balance and usage. Provider webhooks land on our side.
02 Which payment providers are supported?
Paystack, Stripe, Dodo Payments and Bachs. Pick one per organisation or region; your code stays the same.
03 What happens when a customer runs out of credits?
check() returns allowed: false, or, if the feature has overage, usage keeps flowing and we bill the difference. Add-on packs can top up mid-cycle.
04 Can I mix subscriptions with usage-based billing?
Yes, on one plan: recurring price, metered limits, boolean features, seats and overage together.
05 How fast is check()?
~175 ms average from a Cloudflare Worker. Built to sit in your request path.
06 Is it open source? Can I self-host?
Yes. Apache-2.0, built on Cloudflare Workers, Durable Objects, Workflows and D1. Runs on the free Workers plan.
07 Is there a free tier?
Yes. Free to start, no card.
08 What if I want to leave?
Plans live in a config file in your repo, data is exportable, code is open source.

Billing is not your product.
Ship the thing that is.

  • Free to start, no card
  • Three calls: attach, check, track
  • No webhooks to maintain
  • Paystack, Stripe, Dodo or Bachs