---
title: "Withdraw funds from a smart wallet"
method: POST
path: "/wallets/{address}:withdraw"
tags: ["Wallets"]
---

# Withdraw funds from a smart wallet

`POST /wallets/{address}:withdraw`

## Request body

- WithdrawRequest
  - `recipientAddress` string, required — Lowercase or checksummed hex EOA / contract address.
  - `amount` string, required — Amount in wei (decimal string) or `max` for the full balance.
  - `token` string, required — `ETH` for native token, or an ERC-20 contract address.
  - `chainId` integer — Numeric chain ID (e.g. 11155111 for Sepolia, 8453 for Base). On chain-aware trigger/node configs this is required and must be a configured chain; on query/filter params it is optional.

## Response `200`

Withdrawal submitted (UserOp may still be in flight).

- WithdrawResponse
  - `status` 'pending' | 'confirmed' | 'failed', required
  - `message` string
  - `userOpHash` string — Arbitrary-length hex-encoded byte string.
  - `transactionHash` string — Arbitrary-length hex-encoded byte string.
  - `submittedAt` integer
  - `smartWalletAddress` string — Lowercase or checksummed hex EOA / contract address.
  - `recipientAddress` string — Lowercase or checksummed hex EOA / contract address.
  - `amount` string
  - `token` string

## Other responses

- `400` — Request validation failed.
- `401` — Missing or invalid bearer token.
- `404` — Resource not found.
- `412` — Insufficient balance or other on-chain precondition failure.

---

[API](https://skmtc.net/avaprotocol/apis/ava-protocol-avs-api.md) · [All operations](https://skmtc.net/avaprotocol/apis/ava-protocol-avs-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/avaprotocol/ava-protocol-avs-api/versions/231d563f2c9f/schema)
