---
title: "Withdraw tokens from server wallet"
method: POST
path: "/portfolio/withdraw"
tags: ["Portfolio"]
---

# Withdraw tokens from server wallet

`POST /portfolio/withdraw`

Transfer ERC20 tokens from a managed sub-account server wallet to the partner's own address. Requires "withdrawal" scope. Destination must be the authenticated account, smart wallet, or a whitelisted withdrawal address. When destination is omitted, Etherspot profiles withdraw to their smart wallet if one exists. When onBehalfOf is set, the whitelist used is the authenticated caller's whitelist, not the target sub-account's.

## Request body

- WithdrawDto
  - `amount` string, required — Amount to withdraw in the smallest token unit (e.g. 1000000 = 1 USDC)
  - `token` string — ERC20 token address to withdraw. Defaults to USDC if omitted.
  - `destination` string — Destination address for the withdrawal. Must be the authenticated account, smart wallet, or an active whitelisted withdrawal address. Defaults to the Etherspot smart wallet when available, otherwise the authenticated account. When onBehalfOf is set, the whitelist used is the authenticated caller's whitelist, not the target sub-account's.
  - `onBehalfOf` number — Profile ID of the managed sub-account (partner flow). Must be a child of the authenticated partner.

## Response `200`

Withdrawal transaction submitted

## Other responses

- `400` — Insufficient balance or invalid amount
- `401` — Unauthorized
- `403` — No server wallet, missing scope, or unauthorized
- `409` — Operation already in progress

---

[API](https://skmtc.net/limitless-labs-group/apis/limitless-exchange-api.md) · [All operations](https://skmtc.net/limitless-labs-group/apis/limitless-exchange-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/limitless-labs-group/limitless-exchange-api/revisions/f60847044e0d/schema)
