The money path: two requests accepted, the third denied.
The value
- Authorize before cost. Call Unprice before an agent run or paid workflow reaches a provider. A deny is a hard stop: no provider call, no ledger entry, no invoice line.
- Keep pricing out of product branches. Plans, plan versions, features, meters, entitlements, budgets, and wallet credits stay connected but separate.
- Keep the receipt. Accepted usage carries evidence from the authorization to the invoice line.
Start with one agent action
Choose the action that can spend against a customer’s budget, credits, 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 a budgeted run.3. Inspect the evidence
Inspect usage, wallet credits, holds, and invoice evidence.
The runtime calls
Why not a counter?
A counter can stop a run. Check it before the provider call, hold and release the amount in a Lua script, and it will be correct. The reservation was never the hard part. The trail is: which plan version was in force, what rate applied, which grant the hold came from, how the settled amount became a ledger entry that balances, and which invoice line it landed on. That is what gets rebuilt by hand every time support asks why a customer was charged. Unprice keeps the authorization and that explanation on one inspectable path.Agent quickstart
Give your coding agent the Unprice skill and put one agent run behind an authorization.
TypeScript SDK
Install the SDK and call the public API with typed results.