Skip to main content
The invoice is too late. The work already ran. Unprice gives your app a customer money path for usage-based SaaS. Check the plan version, entitlement, customer budget, and wallet credits before paid work runs. Then keep the evidence that explains the charge, credit, denial, replay, or invoice line.
A paid action enters the Unprice money path. Unprice checks the plan version, entitlement, budget, and wallet credits before it allows or denies the work. It then keeps invoice evidence.

The request-to-invoice money path

The value

  • Authorize before cost: Call Unprice in the request path before a paid action creates cost.
  • Keep pricing out of product branches: Plans, plan versions, features, meters, entitlements, budgets, and wallet credits stay connected but separate.
  • Explain after billing: Accepted usage keeps evidence from the decision to the invoice line.

Start with one paid action

Choose the action that can spend a customer’s credits, budget, or usage allowance: an LLM call, API request, data job, workflow, export, or tool run.

1. Model the rule

Publish one plan version and map one customer to it.

2. Choose the runtime call

Select access.check, usage.consume, usage.record, or budgeted runs.

3. Inspect the evidence

Inspect usage, wallet credits, holds, and invoice evidence.

The runtime calls

Why not only use a counter?

A counter can report high usage. It cannot prove which plan version applied, which credits were reserved, why a request was denied, or how accepted usage became an invoice line. Unprice keeps the customer spend decision and the invoice explanation on the same inspectable path.

Quickstart

Put one paid action on the money path.

TypeScript SDK

Install the SDK and call the public API with typed results.

Open and payment-provider aware

Unprice owns the customer money path. Your payment provider still captures payment. Use Sandbox to test the flow, then connect Stripe for production payment capture. Stripe is the production provider today. The provider model can support more providers without moving pricing logic into your application.