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

# Crypto withdrawal

> Move digital assets out of a wallet with quorum approval on every request.

A crypto withdrawal moves digital assets out of a wallet with quorum approval on every request. For the shared model, the approval workflow, status values, and fees, see [Withdraw](/knowledge-base/platform/developers/move-money/withdraw). This page covers the crypto-specific payloads.

`POST /v2/transactions/withdrawal` requires the `Initiate withdrawals` permission and an Ed25519 request signature.

## AML questionnaire options

External withdrawals carry AML questionnaire information. You can supply it two ways:

* **Inline** — Provide the full `withdrawalAmlQuestionnaire` with originator, recipient, and destination details. Use this for any external address.
* **Inherited from a trusted destination** — If the destination is allowlisted as a trusted destination, set `withdrawalAmlQuestionnaire.useTrustedDestinationAml` to `true`. The system applies the beneficiary and destination details stored on the trusted destination, so you only provide `originatorType` and `purpose`.

<CodeGroup>
  ```json Inline AML theme={null}
  {
    "amount": "{quantity}",
    "assetType": "{asset}",
    "source": {
      "id": "{source wallet ID}",
      "type": "WALLET"
    },
    "destination": {
      "id": "{external address}",
      "type": "ADDRESS"
    },
    "description": "{description}",
    "useGasStation": false,
    "withdrawalAmlQuestionnaire": {
      "destinationType": "SELFHOSTED_WALLET",
      "recipientType": "PERSON",
      "purpose": "INVESTMENT",
      "originatorType": "MY_ORGANIZATION",
      "selfhostedDescription": "{wallet description}",
      "recipientFirstName": "{first name}",
      "recipientLastName": "{last name}",
      "recipientFullName": "{full name}",
      "recipientCountry": "US",
      "recipientStreetAddress": "{street}",
      "recipientCity": "{city}",
      "recipientStateProvince": "{state}",
      "recipientPostalCode": "{postal code}"
    }
  }
  ```

  ```json Inherited from trusted destination theme={null}
  {
    "idempotentId": "{unique ID}",
    "amount": "{quantity}",
    "assetType": "{asset}",
    "source": {
      "id": "{source wallet ID}",
      "type": "WALLET"
    },
    "destination": {
      "id": "{trusted destination ID}",
      "type": "TRUSTED_DESTINATION"
    },
    "description": "{description}",
    "useGasStation": false,
    "withdrawalAmlQuestionnaire": {
      "useTrustedDestinationAml": true,
      "originatorType": "MY_ORGANIZATION",
      "purpose": "INVESTMENT"
    }
  }
  ```
</CodeGroup>

### Fields

| Field                        | Description                                                                                                                                                                                                                        |
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `amount`                     | Quantity as a string, without units.                                                                                                                                                                                               |
| `assetType`                  | The asset to withdraw. List supported values via `GET /v2/asset-types`.                                                                                                                                                            |
| `source`                     | The wallet to withdraw from (`type: WALLET`).                                                                                                                                                                                      |
| `destination.type`           | `ADDRESS` for an external address, `TRUSTED_DESTINATION` for an allowlisted destination, or `WALLET` for an internal wallet.                                                                                                       |
| `description`                | Optional context, visible in the iOS app and not published on-chain.                                                                                                                                                               |
| `idempotentId`               | Optional client-provided unique ID for safe retries.                                                                                                                                                                               |
| `useGasStation`              | If `true`, Anchorage Digital pays network fees for supported assets and organizations.                                                                                                                                             |
| `withdrawalAmlQuestionnaire` | Required for external withdrawals. Provide inline, or set `useTrustedDestinationAml: true` to inherit from a trusted destination. See [AML questionnaire](/knowledge-base/platform/developers/move-money/setup/aml-questionnaire). |

For assets that use a memo or destination tag, the value is inherited automatically when you withdraw to a trusted destination—you don't provide `assetParameters` yourself.

### Response

A successful request returns `201` with a `withdrawalId`:

```json theme={null}
{
  "data": {
    "withdrawalId": "8696144cca28a634c05858d00e51191408498a7808a837fc4645b4b6997dde09"
  }
}
```

Track status through the transactions API. See [Track movement status](/knowledge-base/platform/developers/move-money/operate/track-status).

## UTXO assets

For UTXO-based assets, Anchorage Digital exposes a single wallet-level address as the representative address and selects UTXOs randomly across the wallet's addresses to preserve privacy. Sub-UTXO balances remain visible on-chain.

## Troubleshooting

Withdrawals are not queued: a request fails if one is already ongoing for the source. Other request-level failures include an unknown asset, an amount that exceeds available funds (including fees), an invalid destination address, or a key without withdrawal permissions for the vault.

If a withdrawal fails when specified at the wallet or address level, try specifying the source at the vault level with a vault ID.

After quorum approval, a withdrawal can still fail at execution if there are insufficient funds for the network fee or there's a blockchain-level failure.
