Skip to main content
A withdrawal is a quorum-approved movement of assets to an external address, initiated via the iOS app or API. Supported destination.type values:
  • WALLET
  • ADDRESS
  • TRUSTED_DESTINATION
  • VAULT (not recommended — reduced precision)

Asset support by destination type

Destination typeDigital assetsUSD
WalletSupportedNot supported
Trusted destinationSupportedNot supported
Non-allowlisted addressSupportedNot supported
Vault (not recommended)SupportedNot supported

Withdrawal examples

{
  "amount": "1",
  "assetType": "SOL_TD",
  "source": {
    "id": "{WALLET ID}",
    "type": "WALLET"
  },
  "destination": {
    "id": "{ADDRESS}",
    "type": "ADDRESS"
  },
  "description": "Test Withdrawal",
  "useGasStation": false,
  "withdrawalAmlQuestionnaire": {
    "destinationType": "SELFHOSTED_WALLET",
    "recipientType": "PERSON",
    "purpose": "INVESTMENT",
    "originatorType": "MY_ORGANIZATION",
    "selfhostedDescription": "a wallet description",
    "recipientFirstName": "John",
    "recipientLastName": "Recipient",
    "recipientFullName": "John Recipient Full Name",
    "recipientCountry": "US",
    "recipientStreetAddress": "Some Recipient Street",
    "recipientCity": "New York",
    "recipientStateProvince": "NY",
    "recipientPostalCode": "10101"
  }
}

API endpoints

EndpointDescription
Create a withdrawalInitiates a withdrawal from an Anchorage Digital wallet to an external destination. Requires quorum approval to process. No queuing.
List transactionsReturns metadata across all transactions in vaults permissioned to the API key. start_date and end_date format: YYYY-MM-DD.
Get transaction by IDReturns metadata for a specific transaction including assets, fees, status, destination addresses, and transaction type.

Status values

StatusDescription
SUCCESSTransaction succeeded.
NEEDS APPROVALTransaction initiated, awaiting quorum member approval.
INPROGRESSTransaction currently in progress.
FAILURETransaction failed.
REJECTEDTransaction was rejected.
EXPIREDTransaction expired.

Withdrawals and transactions

A withdrawal is a type of transaction at Anchorage Digital (transfers are another type). Each has its own transaction ID plus a type-specific ID:
  • withdrawalId
  • transferId

Quorum approval workflow

  1. Initiate a withdrawal request via the create withdrawal endpoint.
  2. A mobile-based quorum approval is triggered — the vault policy must be satisfied by approvals from designated users on iOS.
  3. Once quorum is reached, Anchorage Digital performs a risk review and policy check.
  4. If requirements are met, the transaction is broadcast to the network.
  5. Network fees apply; processing time depends on blockchain speed and congestion.
  6. Ensure the wallet holds sufficient funds to cover the withdrawal amount plus network fees.
  7. Status is reflected in API responses once the transaction completes.

Network fees

For withdrawals via web dashboard and API, network fees are added to the withdrawal amount and paid in the native layer-1 asset (e.g., ETH for ERC-20 withdrawals). The only case where the fee is deducted from the withdrawal amount is when withdrawing the full wallet balance via the web dashboard.

UTXO asset processing

Anchorage Digital abstracts UTXO-based processing by exposing a single wallet-level address (the most recently created address in the wallet) as the representative address for all pooled UTXOs. When executing a transfer or withdrawal:
  • UTXOs are selected randomly across addresses within the wallet to preserve privacy.
  • If multiple deposits have been made to the same address, the wallet may hold multiple UTXOs at that address — the exact selection used for a transaction is random.
  • Balances of sub-UTXOs are visible on-chain via a block explorer.

Troubleshooting

Request-level failures:
  • An ongoing withdrawal already exists. Withdrawal requests are not queued like transfers.
  • The specified asset does not exist — verify the symbol and vault.
  • Amount exceeds available funds (including network fees).
  • Destination address is invalid.
  • API key lacks withdrawal permissions for the vault.
  • Withdrawal using a wallet ID or address will fail — specify at the vault level using a vault ID.
Execution-level failures (after quorum approval):
  • Insufficient funds to cover network fees at broadcast time.
  • Blockchain-level failure.