Agent Wallet
Request spend, approve with step-up, and manage virtual card lifecycle.
Agent Wallet lets teams give agents controlled purchasing power without handing out shared cards. The flow is request first, approve with fresh step-up, then issue and manage a virtual card tied to the approved spend.
1. Open Agent Wallet
Open /<orgSlug>/billing and switch to Agent Wallet. Admin operators can also review wallet activity from /admin/agent-wallet.
The wallet view shows spend requests, issued cards, authorization status, and recent wallet activity. If the wallet is not enabled for the org, the page explains the missing setup state before any card controls appear.
2. Create a spend request
Create a spend request for the agent, project, or session that needs purchasing power. Include:
- amount and currency
- reason for the spend
- optional merchant category or merchant country constraints
- the agent, project, or session context that explains why the request exists
The API equivalent is:
POST /api/v1/agent-wallet/spend-requests
Requests are stored without sensitive caller metadata, and approval remains separate from creation. This keeps an agent from silently granting itself card access.
3. Approve with step-up
An approver with billing permissions reviews the request and approves it. Approval requires a browser session with fresh step-up, such as TOTP or a passkey. If step-up has expired, Alumia sends the approver through /auth/step-up before retrying the approval.
The API path used by the dashboard is:
POST /api/v1/agent-wallet/spend-requests/[id]/approve
API-key sessions cannot bypass this approval gate. Complete the approval in the dashboard so the session can prove both billing permission and fresh authentication.
4. Issue a virtual card
After approval, issue a virtual card tied to the approved amount and controls. The dashboard uses:
POST /api/v1/agent-wallet/cards
Card details are revealed only through a stepped-up browser session:
POST /api/v1/agent-wallet/cards/[id]/reveal
Use the card for the approved purchase. Stripe Issuing authorizations and webhooks update the card and spend request status asynchronously as merchants authorize, capture, reverse, or decline charges.
5. Manage the card lifecycle
From the card list, operators can:
- freeze a card temporarily
- cancel a card permanently
- inspect authorization decisions
- compare captured spend against the approved request
- investigate webhook-delivered status changes
If the purchase fails, check the authorization reason first. Common causes are amount overages, merchant category mismatches, merchant country restrictions, or a card that was frozen after approval.
Verify
For a safe sandbox run, create a small spend request, approve it after step-up, issue a sandbox virtual card, and simulate an authorization from the Agent Wallet sandbox controls. The wallet activity should show the request, card, and authorization in order.