> ## 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.

# Transfers and withdrawals

> Two approval models for moving assets out of Anchorage Digital.

export const Check = () => <Icon icon="check" color="#049159" />;
export const Cross = () => <Icon icon="x" color="#dd0000" />;

Both transfers and withdrawals move assets out of—or between—your holdings, for both USD and digital assets. The difference is the approval model, and that choice drives the setup, the destinations you can reach, and the controls on each movement.

## Transfers

A transfer moves assets without quorum approval on each request, which suits recurring or high-frequency flows. Approval is front-loaded into one-time setup: an allowlisted destination and a permission group scoped to the operation. Transfers reach internal wallets and external destinations.

## Withdrawals

A withdrawal requires quorum approval on every request, giving you granular control over each movement through your vault policies. Because each withdrawal is approved individually, the destination doesn't need to be allowlisted in advance.

## Asset support

|                    | Internal transfer API | External transfer API | Withdrawal API |
| :----------------- | :-------------------- | :-------------------- | :------------- |
| **Digital assets** | <Check />             | <Check />             | <Check />      |
| **USD**            | <Check />             | <Check />             | <Check />      |

## Feature comparison

|                                                                  | Internal transfer         | External transfer                          | Withdrawal                                           |
| :--------------------------------------------------------------- | :------------------------ | :----------------------------------------- | :--------------------------------------------------- |
| Quorum required (per request)                                    | <Cross />                 | <Cross />                                  | <Check />                                            |
| Destination                                                      | Wallets you own           | Allowlisted address or trusted destination | Any address, trusted destination, or internal wallet |
| Pre-allowlisted destination required                             | <Cross />                 | <Check />                                  | <Cross />                                            |
| Trusted destination bound to permission group                    | <Cross />                 | Configurable                               | <Cross />                                            |
| AML information required                                         | <Cross />                 | <Check />                                  | <Check />                                            |
| Memo or tag inherited from trusted destination                   | n/a                       | <Check />                                  | <Check />                                            |
| Queued                                                           | Yes (up to 50 per source) | Yes                                        | No (one at a time)                                   |
| Deduct network fee from amount (`deductFeeFromAmountIfSameType`) | <Check />                 | <Check />                                  | <Cross />                                            |
| Gas station (`useGasStation`)                                    | <Check />                 | <Check />                                  | <Check />                                            |

## Source and destination options

| Operation         | Source   | Destination                                   |
| :---------------- | :------- | :-------------------------------------------- |
| Internal transfer | `WALLET` | `WALLET`                                      |
| External transfer | `WALLET` | `ADDRESS` or `TRUSTED_DESTINATION`            |
| Withdrawal        | `WALLET` | `WALLET`, `ADDRESS`, or `TRUSTED_DESTINATION` |

<Warning>
  Prefer `WALLET` over `VAULT`. When a `VAULT` is specified, the system selects the first-created wallet in the vault for the asset, even if that wallet has been archived. Use `VAULT` only when a single wallet per asset is maintained. The `VAULT` type will be deprecated in the future.
</Warning>

## When a transfer queues

Queuing is keyed to the **source wallet**—never the vault, and never the destination. A transfer is held as `QUEUED` only when another movement is already in flight from the same source wallet:

* A **withdrawal pending** from that source wallet holds subsequent transfers until the withdrawal is broadcast or cancelled.
* A **transfer in progress** from that source wallet holds additional transfers behind it; they appear in the activity log. Up to 50 transfers can be queued per source wallet.

Activity on the *destination* never queues a transfer. Sending from wallet A to wallet B doesn't queue just because wallet B has a pending withdrawal. For the per-asset and per-blockchain specifics, see [Crypto transfer](/knowledge-base/platform/developers/move-money/transfer/crypto).

Withdrawals themselves don't queue. If a withdrawal is already ongoing from a source wallet, a new withdrawal request from that wallet fails rather than waiting in line.

<Tip>
  To keep quorum-pending withdrawals from blocking automated settlement, isolate withdrawals in a dedicated wallet. Settlement transfers from your settlement wallet then run without waiting on withdrawal approvals elsewhere.
</Tip>

## The same move, two ways

Moving 1 ETH to a destination you've allowlisted—first as a transfer (no per-request approval), then as a withdrawal (quorum on each request):

<CodeGroup>
  ```json Transfer — POST /v2/transfers theme={null}
  {
    "source": { "id": "{source wallet ID}", "type": "WALLET" },
    "destination": { "id": "{trusted destination ID}", "type": "TRUSTED_DESTINATION" },
    "assetType": "ETH",
    "amount": "1",
    "idempotentId": "{unique ID}",
    "transferAmlQuestionnaire": { "purpose": "{purpose}", "originatorType": "{originatorType}" }
  }
  ```

  ```json Withdrawal — POST /v2/transactions/withdrawal theme={null}
  {
    "source": { "id": "{source wallet ID}", "type": "WALLET" },
    "destination": { "id": "{trusted destination ID}", "type": "TRUSTED_DESTINATION" },
    "assetType": "ETH",
    "amount": "1",
    "idempotentId": "{unique ID}",
    "withdrawalAmlQuestionnaire": { "useTrustedDestinationAml": true, "originatorType": "MY_ORGANIZATION", "purpose": "INVESTMENT" }
  }
  ```
</CodeGroup>

The transfer clears without a per-request approval because the destination and permission group were authorized up front; the withdrawal routes to quorum approval before it broadcasts. See [Crypto transfer](/knowledge-base/platform/developers/move-money/transfer/crypto) and [Crypto withdrawal](/knowledge-base/platform/developers/move-money/withdraw/crypto) for full payloads and fields.

## Which to use

Choose a **transfer** when you want automated, repeatable movement and you've pre-authorized the destination and permissions. Choose a **withdrawal** when you want a human quorum checkpoint on each movement, or you're sending to a one-off destination you don't want to allowlist.

For full API details, see [Transfer](/knowledge-base/platform/developers/move-money/transfer) and [Withdraw](/knowledge-base/platform/developers/move-money/withdraw).
