Wallet API
Manage wallets for on-chain transactions and payments. Supports session-based wallets, Coinbase Developer Platform (CDP) wallets, and Tempo network balance queries.The platform uses Coinbase Smart Wallet as its only wallet connector on Base (
coinbaseWallet({ preference: 'smartWalletOnly' })). Injected wallets such as MetaMask are not supported. All wallet interactions on the Base network require a Coinbase Smart Wallet.Get wallet
address query parameter is provided and on your server configuration.
Tempo balance query
When theaddress query parameter is present, the endpoint queries the Tempo blockchain for the wallet’s balances across all known stablecoins. The endpoint reads balances using standard ERC-20 balanceOf calls and returns a total USD value along with per-token breakdowns.
Query parameters
Supported tokens
The endpoint queries the following Tempo stablecoins (all pegged 1:1 to USD):Response
Response fields
The endpoint queries all 11 tokens from the official Tempo tokenlist. All supported tokens are pegged 1:1 to USD. The
allTokens array only includes tokens with a non-zero balance. The primaryToken is the first funded token found, defaulting to pathUSD metadata when no tokens are funded. The network is determined server-side by the TEMPO_TESTNET environment variable.Errors
CDP / session wallet query
When noaddress parameter is provided, the endpoint returns CDP or session-based wallet information. When CDP is configured, returns CDP status without authentication. Otherwise, requires session authentication.
Response (CDP configured)
Response (user wallet exists)
Response (no wallet)
Errors
Wallet actions
Request body
Action: create
Creates a new wallet for the authenticated user.
400 if a wallet already exists.
Action: get_seed
Returns wallet metadata. Private keys are stored encrypted server-side and are never exposed.
Action: export_seed
Seed export is disabled for security. Returns 403.
Errors
Get CDP wallet address
Response (authenticated)
Response (not authenticated)
When the CDP wallet address cannot be retrieved, the response includesauthenticated: false and needsAuth: true. The remaining fields vary by failure reason:
error and setup fields instead of message:
Create CDP wallet
Request body
Response
Errors
CDP wallet status
Create CDP wallet client
Request body
Response
Wallet top-up
Fund your wallet using a credit card via Stripe checkout. Choose from preset amounts and complete payment through Stripe’s hosted checkout page. On successful payment, your wallet is credited automatically.Create top-up checkout session
Query parameters
Top-up options
Response
Response fields
On successful payment, the user is redirected to
/dashboard/wallet?top_up=success. On cancellation, the user is redirected to /dashboard/wallet?top_up=cancelled.
Errors
Example
Top-up webhook
checkout.session.completed events for wallet top-ups. When a payment completes, the webhook verifies the Stripe signature and credits the user’s wallet.
Headers
Webhook behavior
The webhook processes events wheremetadata.type equals wallet_top_up. On a matching checkout.session.completed event, it reads the following metadata fields from the checkout session:
Response
Errors
Transaction history
Query parameters
Response
Response fields
Full transaction history requires an indexer integration. In the meantime, use the
explorerUrl value to link users to the Tempo block explorer where they can view all on-chain activity.Errors
USDC transfer validation
When transferring USDC through the wallet service, the following validation rules apply:- The transfer amount must be a positive finite number. Values such as
NaN,Infinity, negative numbers, and zero are rejected. - Amounts are rounded to 6 decimal places (USDC precision). If the rounded value equals zero, the transfer is rejected.
When payments are initiated through the x402 pay action, additional protections apply: a per-payment maximum of $100, recipient address format validation (EVM or Solana), and audit logging of every payment attempt. See the x402 gateway reference for details.
MPP payment sessions
Payment sessions enable off-chain, per-call billing for agent requests. Instead of settling every call on-chain, you deposit funds into a session and sign lightweight vouchers that are batched and settled periodically. See MPP payments — sessions for the full protocol description.List sessions
Query parameters
Response
Get session
Query parameters
Response
Errors
Session fields
Voucher object fields
Each entry in thevouchers array has the following shape:
When a session has active vouchers, they appear in the wallet activity feed showing the plugin name, timestamp, and amount for each pending voucher.
Create session
Request body
Response (201 Created)
Response (existing session)
Errors
Close session
Query parameters
Response
Errors
Submit voucher
Request body
The voucher amount is determined automatically from the plugin’s pricing. See plugin pricing for current rates.