> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bravadotrade.com/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v2/trade/perps/withdrawals: Withdraw pUSD

> Move pUSD from the user's Polymarket Perps account back to their deposit wallet. Scope trade.perps.

> [!NOTE]
>
> Sign each request with a fresh HMAC signature. The cURL and HTTP header values below are placeholders, not reusable credentials. For runnable signing code, use [request signing examples](https://docs.bravadotrade.com/authentication-examples.md).

Moves pUSD from the venue account back to the user's deposit wallet. The destination is always the user's deposit wallet; there is no destination field. Scope `trade.perps`; `Idempotency-Key` is required.

To move the funds out of Bravado afterwards, use [`/v2/trade/withdraw`](https://docs.bravadotrade.com/api/trade/withdraw).

```text theme={null}
POST https://partner-api.bravadotrade.com/v2/trade/perps/withdrawals
```

### Body

**amount** `string` *required*

pUSD as a decimal string with at most 6 decimal places, or `"max"` for the venue's current `withdrawable` (on [`GET /v2/trade/perps/account`](https://docs.bravadotrade.com/api/trade/perps/account)).

### Response

`202 Accepted`. Poll [`GET /v2/trade/perps/withdrawals/{withdrawal_id}`](https://docs.bravadotrade.com/api/trade/perps/withdrawals#get-one-withdrawal) until `state` is `confirmed`.

**withdrawal\_id** `string`

The withdrawal's id. Read it back by this id.

**amount** `string`

pUSD withdrawn.

**to** `string`

The user's deposit wallet.

**venue\_withdraw\_id** `string | null`

The venue's id for the withdrawal.

**state** `string`

`pending`, `confirmed`, `failed`, `rejected` or `unknown`. Bravado reports `confirmed` only once the pUSD transfer to the deposit wallet is verified on chain.

**venue\_state** `string | null`

The venue's state for the withdrawal.

**tx\_hash** `string | null`

The payout transaction. It can appear while `state` is still `pending`.

**created\_at** `string`

ISO-8601.

```json 202 theme={null}
{
  "withdrawal_id": "8b7e6d5c-4a3b-4c2d-9e1f-0a9b8c7d6e5f",
  "amount": "48.21",
  "to": "0xDepositWallet...aabbccdd",
  "venue_withdraw_id": "77120",
  "state": "pending",
  "venue_state": null,
  "tx_hash": null,
  "created_at": "2026-10-23T16:30:00.000Z"
}
```

### Errors

| Status | When |
| - | - |
| `403 Forbidden` | `OPERATION_DISABLED`: your policy does not allow withdrawals |
| `409 Conflict` | `USER_PROVISIONING_PENDING` with `reason: "withdrawable_unreadable"`: `"max"` needs a readable account; send an explicit amount |
| `422 Unprocessable Entity` | `INSUFFICIENT_BALANCE`: an amount above `withdrawable` |

Every Perps code and its retry rule: [Errors](https://docs.bravadotrade.com/api/trade/perps.md#errors). After a `504`, list [`GET /v2/trade/perps/withdrawals`](https://docs.bravadotrade.com/api/trade/perps/withdrawals) before acting again.

### Example

```bash cURL theme={null}
curl -X POST https://partner-api.bravadotrade.com/v2/trade/perps/withdrawals \
  -H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
  -H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
  -H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
  -H "Idempotency-Key: 6d1a8f3c-perps-withdraw-0001" \
  -H "Content-Type: application/json" \
  -d '{ "amount": "max" }'
```

## Related

* [`GET /v2/trade/perps/withdrawals`](https://docs.bravadotrade.com/api/trade/perps/withdrawals) for every withdrawal, or one.
* [`/v2/trade/withdraw`](https://docs.bravadotrade.com/api/trade/withdraw) to send funds from the deposit wallet to an external address.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.