Skip to main content
Official SDKs include helper methods for this endpoint.
Transfers ERC20 funds from a managed server wallet.
  • Route: POST /portfolio/withdraw
  • Auth: apiToken, Privy, or session auth
  • Scope: withdrawal when using apiToken

Request body

Use one of these payload shapes:

Example: sub-account default destination

Example: sub-account to allowlisted destination

Example: own server wallet to allowlisted destination

Destination allowlist

Explicit destination values are accepted only when the address is one of:
  • the authenticated caller’s account address
  • the authenticated caller’s smart wallet address
  • an active withdrawal address allowlisted on the authenticated caller profile
For onBehalfOf withdrawals, the allowlist belongs to the authenticated partner profile, not the child onBehalfOf profile. Use POST /portfolio/withdrawal-addresses and DELETE /portfolio/withdrawal-addresses/:address to manage the allowlist.
Withdrawal-address allowlist management requires a Privy identity token. HMAC/scoped API tokens cannot add or delete withdrawal addresses.

Notes

  • When destination is omitted, the API uses the authenticated caller’s default destination: smart wallet when present, otherwise account address.
  • Destination validation blocks withdrawals to third-party addresses that are not allowlisted.
  • Legacy API keys are not supported on server-wallet operations.