Budgets are optional. Once an agent has one approved budget, every later payment needs an active
budget. When it expires or runs out, request a new one. Both the budget and policies must pass for
a payment to go through.
How it works
1
The agent requests a budget
The agent calls
request_budget with an amount and a purpose. The request appears on the
Budgets tab in the dashboard.2
A person approves or declines
The reviewer can adjust the amount before approving. The agent calls
get_budget_request to
check whether it was approved.3
The agent pays as usual
Standard payment requests, x402 pre-authorizations, and MPP pre-authorizations are all checked
against the budget. Spend is deducted after each payment executes.
4
The budget runs out
Once the budget is spent, further payments are blocked. The dashboard shows spend progress.
Lifecycle
Each agent can have one active request at a time. Creating another while one is active returns HTTP
409.
SDK API
Create a budget request
Response (201):
Check budget request status
Response (200):
MCP tools
request_budget
Request a spending budget for payments. Submits a request for human approval. Only one active budget request per agent at a time. Applies to all payment types.get_budget_request
Check status and remaining balance of your budget requests. Use to poll for approval and monitor remaining budget.Payment flow integration
Once an agent has had a budget approved, every payment flow checks it: Pre-execution (blocking):payments/request: checks budget before policy evaluationpayments/approve: checks budget for external wallet paymentsx402/pre-authorize: checks budget before authorizing x402 paymentsmpp/pre-authorize: checks budget before authorizing MPP payments
payments/execute: holds the amount against the budget before sending and records it as spend when the payment succeedsx402/record: decrements budget when recording x402 paymentsmpp/record: decrements budget when recording MPP payments
remaining subtracts those
holds and spent counts recorded spend. A failed onchain transfer returns its amount to the budget.
x402 and MPP pre-authorizations do not hold budget, so a grant does not guarantee budget remains
when you record the payment.
If a payment would exceed the remaining budget, x402 and MPP pre-authorization return the response below. payments/request returns HTTP 403 with code: "PAYMENT_DENIED", and payments/approve returns approved: false with reasonCodes: ["BUDGET_INSUFFICIENT"].
Dashboard
Budget requests appear on the Budgets tab of Alerts & Approvals. Requests that need review show the agent name, purpose, requested amount, and category. Approved requests show:- Spend progress bar showing spent and approved amounts
- Remaining balance and expiry countdown
- Whether the amount was adjusted from the original request