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

# Withdraw

> Withdraw cNGN to an external wallet address

Sends cNGN from your business balance to an external wallet on a supported network.

<Note>
  Requires the **Send Crypto** permission. The request body must be [encrypted](/guides/encryption). The destination address may need to be [whitelisted](/api-reference/whitelist-address) first, depending on your account configuration.
</Note>

### Body parameters (plain payload, pre-encryption)

<ParamField body="amount" type="number" required>
  Amount of cNGN to withdraw.
</ParamField>

<ParamField body="address" type="string" required>
  Destination wallet address on the target network.
</ParamField>

<ParamField body="networkId" type="string" required>
  Target network ID, from [Get Networks](/api-reference/get-networks).
</ParamField>

<ParamField body="shouldSaveAddress" type="boolean" default="false">
  Save the destination address for future withdrawals.
</ParamField>

### Response (decrypted `data`)

<ResponseField name="trxRef" type="string">
  Withdrawal transaction reference. Poll [Verify Withdrawal](/api-reference/verify-withdrawal) with this value to track status.
</ResponseField>

<ResponseField name="address" type="string">
  Destination address the withdrawal was sent to.
</ResponseField>

<RequestExample>
  ```json Plain body (encrypt before sending) theme={null}
  {
    "amount": 25000,
    "address": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72",
    "networkId": "9b2e6a1f-3c4d-4e5f-8a7b-1c2d3e4f5a6b",
    "shouldSaveAddress": true
  }
  ```

  ```bash cURL (wire format) theme={null}
  curl -X POST "https://api.cngn.co/v1/api/withdraw" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "content": "<base64 AES-256-CBC ciphertext of the plain body>",
      "iv": "<base64 16-byte IV>"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - Success (data shown decrypted) theme={null}
  {
    "status": 200,
    "message": "Withdrawal was successfully",
    "data": {
      "trxRef": "WD-7f3a2b1c",
      "address": "0x8Ba1f109551bD432803012645Ac136ddd64DBA72"
    }
  }
  ```

  ```json 403 - Permission denied theme={null}
  {
    "status": false,
    "message": "Permission denied"
  }
  ```
</ResponseExample>
