How do I get USDC back out of my AI agent’s account?
Money an agent holds with Laso sits in up to three places: the account balance, the managed agent wallet, and a reloadable card. Each has its own call to send USDC back to a wallet you control:POST /withdraw for the account balance, agentWalletTransfer for the managed wallet, and POST /withdraw-card-balance for a reloadable card. Call GET /get-account-balance first to see which one holds the money.
Which call moves which money
POST /withdraw never draws on the agent wallet. If you call it while the account balance is empty but the wallet holds funds, the 400 response reports both figures and points you to agentWalletTransfer.
Step 1: Check where the money is
agent_wallet with its balance_usdc. See the account balance reference.
Step 2: Withdraw from the account balance
amount is in USD (minimum $0.01) and solana_address is required. Laso never infers the destination.
202 Accepted with a status_url and a withdrawal record whose state is pending. Poll the status until state reaches a terminal value; the 202 is not completion.
tx_hash and tx_url. Leave out withdrawal_id to list every withdrawal. If you registered a webhook, the completion also arrives there as a notification.withdrawal delivery. Reference: POST /withdraw, GET /get-withdrawal-status.
Step 3: Withdraw from the managed agent wallet
The managed wallet is a separate on-chain wallet, so it usesagentWalletTransfer. It is a callable, so the body is wrapped in data and amount is a decimal string.
destinationNetwork to send to a Solana address. The minimum is $1, and a send to Base arrives less a 0.01% bridge fee. The reply is { "result": { "transferId", "txHash", "destinationAddress", "destinationNetwork" } }. See Paying external x402 services for the full behavior.
Step 4: Withdraw from a reloadable card
withdrawal event in GET /list-card-transactions. See Card lifecycle.
Limits an agent must respect
An agent’s withdrawal counts against the account’s spend limits, the same as its payments. It must be under the per-payment limit and fit in what is left of the rolling 24-hour limit, or it is refused with403 and a code of agent_spend_limit or agent_daily_limit. Nothing is withdrawn when that happens. Do not split the amount into smaller withdrawals to get under a limit; tell the account owner. See Spend limit.
Confirm the destination address with the account owner before sending, and say the full address back to them. Withdrawals are final once sent.
FAQ
How do I move USDC out of my AI agent’s wallet?
CallagentWalletTransfer with a destinationAddress and an amount. It sends from the managed wallet to a Solana address, or to a Base address when destinationNetwork is base.
Why does /withdraw say my balance is too low when my agent wallet has USDC?
POST /withdraw only draws on the Laso account balance. The 400 response reports both the account balance and the agent wallet balance, and the wallet’s funds move with agentWalletTransfer.
How long does an agent withdrawal take?
An account-balance withdrawal is created aspending and sent within a few minutes. A managed-wallet send to Solana takes seconds and to Base about a minute. A reloadable card payout takes 1-3 business days.
Can I withdraw to a bank account instead of a wallet?
These three calls send USDC to a wallet. To move dollars to a bank account, use bank payments.Can my agent withdraw more than its spend limit?
No. A withdrawal over the per-payment limit or the remaining 24-hour limit is refused with403, and the account owner can change the limits.