cards

Withdraw from a reloadable card balance

Move unspent money off the account holder's reloadable card. The balance behind a reloadable card is held by the card issuer, and this asks the issuer to pay amount of it out as USDC on Base to the destination_address you supply. It is the reverse of GET /fund-card-balance, and free: the money is the holder's own, and Laso moves nothing itself.

Base only. The issuer pays on Base and nowhere else, so the destination must be a Base wallet you control. A Laso managed agent wallet holds USDC on Solana and cannot receive this. The card deposit address from GET /get-card-deposit-address is not a valid destination either.

Not instant. The issuer processes payouts manually, usually within 1-3 business days, and emails the account holder when the payout is sent. The response carries the issuer's withdrawal_id; there is no status route to poll. The request is recorded as a withdrawal event under card_events in GET /list-card-transactions, and the balance from GET /get-card-deposit-address drops once it is paid.

Amount: $2 to $10,000, and no more than the balance the issuer can release. Withdrawals the issuer has not paid yet still count against the balance, so a second request can only take what remains.

Confirm the amount and destination with the account holder before calling this. A linked card issuer account is required; the holder sets it up at https://laso.finance/agent/dashboard/verified/card.

Requires a Bearer token from /auth or /get-card.

post/withdraw-card-balance

Request

  • Base URL: https://laso.finance
  • URL: https://laso.finance/withdraw-card-balance
  • Auth: API key in header Authorization

Headers

Idempotency-Keystring

Optional client-generated unique key (a UUID works) that makes this write safe to retry. A retry with the same key within 24 hours returns the recorded response of the original request, marked with an Idempotency-Replayed: true header, instead of performing the write again. Reusing a key with a different body or route is rejected with 422 (code: idempotency_key_reused); a retry that arrives while the original is still running gets 409 (code: idempotency_key_in_progress), so wait a moment and retry with the same key. Keys are scoped to the authenticated account.

Request body

amountnumber required

USD to withdraw from the card balance (min $2, max $10,000).

destination_addressstring required

The 0x-prefixed Base wallet address that receives the USDC. Must be one you control; Base only.

Response

The issuer accepted the withdrawal request.

withdrawal_idstring

The card issuer's reference for this payout request. Quote it to support; it also appears on the matching withdrawal card event.

statusstring

Always requested: the issuer has accepted the request and will pay it out manually.

amountnumber

USD the issuer will pay out.

destination_addressstring

The Base address the USDC goes to.

networkstring
assetstring
notestring

Timing and where to see the request afterwards.

Example response

{
  "status": "requested",
  "network": "base",
  "asset": "USDC"
}

Changes

No recorded changes to this operation across all 3 revisions of this API.