The Unprice manifesto

Pricing is a runtime decision.

SaaS pricing was built for a static era: hardcoded tiers, manual feature gates, end-of-cycle invoices. For usage-based products that model breaks the moment usage gets expensive — a single customer, job, workflow, or agent can cross its budget before anyone reaches the invoice.

So the pricing decision has to move to where the cost is created: the request path. Check entitlement, check budget, reserve credits, deny over-budget work before it runs — then explain every charge from the same evidence.

Static pricing · diagnosed
over-budget usageno way to stop it before it runs
packaging changeedits product code · scripts · cron
pricing logichardcoded · config, not decision
disputed invoicereconstructed from logs · by hand

cause: the money decision runs after the cost exists

Pre-flightanswered before cost exists
Which plan version applies?pro@v3 · pinned
Is the customer entitled?access.check · ok
Which meter rule rates it?tokens_used · $0.002 / token
Do wallet credits cover it?reserve −1 credit
Is there budget left?$4.10 remaining

every answer yes · work runs

200

any answer no · denied first

429 LIMIT_EXCEEDED

01The mechanism

Customer spend authorization runs in the request path.

Before the paid action runs, your app asks one money path which plan version applies, whether the customer is entitled, whether the budget or wallet has room, and whether the decision can explain the invoice line later.

One decision, two futures. A deny is a 429 before any cost exists — the wallet untouched, the ledger empty, the invoice clean. An allow keeps the evidence that explains the invoice line, from the same decision that let the work run.

02The operating model

Operate pricing like infrastructure.

PriceOps is the practice of operating pricing as versioned commercial infrastructure — the way DevOps operates deploys and FinOps operates cloud spend. Plans, versions, entitlements, meters, budgets, credits, and invoice evidence stay separate but connected, so packaging changes ship without rewriting the product.

  1. 01

    Spend safety

    Put a real-time budget around the expensive action. Over-budget customer or workload spend is rejected in the request path, before the work runs.

    stop cost before it exists

  2. 02

    Runtime decisions

    Pricing is not a page or an end-of-cycle job. Entitlement, budget, and credit checks happen while the request is in flight.

    decide in the request path

  3. 03

    Explainable money flow

    Usage, entitlements, budgets, credits, and invoices share one evidence trail. Every charge traces back to rated events and ledger captures.

    every charge carries evidence

  4. 04

    Open and inspectable

    Money logic is too critical for a black box. The runtime is open source — read the code that guards your money, or have your agent read it.

    trust follows inspection

03Ownership

The billing layer you rent can be acquired. The money path you own cannot.

Between 2025 and 2026 the independent billing middle market stopped existing: every metering-first vendor was acquired by a payment processor or left the market. Revenue logic trapped in a closed runtime is one acquisition away from belonging to someone else's roadmap.

Unprice keeps the customer spend decision, the double-entry ledger, and the invoice explanation in one open money path you can read, fork, and run in your own Cloudflare account. Read the code that guards your money — or have your agent read it — before you trust it.

The billing middle market2025–2026 · traced
Zuorataken private · Silver Lake
OpenMeteracquired · Kong
Metronomeacquired · Stripe · ~$1B
Orbacquired · Adyen · $335M
independent metering-first vendorsnone remaining
your money pathyours · AGPL-3.0
What you own
licenseAGPL-3.0 core · commercial available
wallet ledgerdouble-entry · always balances
schemasplans · versions · meters · entitlements
SDKgenerated from OpenAPI contracts
runtimeCloudflare Workers + DOs · your account
paymentsStripe-first · provider-extensible
funds flowyours — unprice never sits in it

git clone github.com/jhonsfran1165/unprice

The team that owns the request path should own pricing.

  • You shouldn't need a deployment to change a price.
  • You shouldn't discover an over-budget customer at invoice time.
  • You shouldn't reconstruct a disputed charge by hand.

For usage-based SaaS, pricing is a runtime decision. We're here to make that the default — in the open, on a money path you can read.