Skip to main content
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

Parameters: Response (201):
Error (409), active request already exists:

Check budget request status

Query parameters: 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 evaluation
  • payments/approve: checks budget for external wallet payments
  • x402/pre-authorize: checks budget before authorizing x402 payments
  • mpp/pre-authorize: checks budget before authorizing MPP payments
Post-execution (decrement):
  • payments/execute: holds the amount against the budget before sending and records it as spend when the payment succeeds
  • x402/record: decrements budget when recording x402 payments
  • mpp/record: decrements budget when recording MPP payments
In-flight managed payments hold budget until they settle or fail. 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
Completed requests show whether they were declined, expired, or fully used.

Approving a request

Open the request on the Budgets tab and choose Approve or Do not approve. To approve a different amount than requested, enter it in the optional amount field.

Audit trail

Budget requests, review decisions, spend, and expiry are recorded in the organization’s audit history using the same labels shown in the dashboard.

Example: agent workflow