Transfer types
- External transfer — Move assets to an external address that must be allowlisted as a trusted destination. Requires a transfer AML questionnaire in the payload.
- Internal transfer — Move assets to any of your wallets within Anchorage Digital. No allowlisting or AML questionnaire required.
destination.type must be set to ADDRESS and the address must already be a trusted destination. Use WALLET as source type over VAULT.
Transfer APIs
| API | Description |
|---|---|
| Create a transfer | Initiates a transfer to an internal wallet/vault or external address. External transfers require an AML questionnaire payload. |
| List transfers | Returns metadata on all transfers including in-progress, completed, and failed. |
| Get transfer by ID | Returns metadata for a specific transfer by transferId. |
| Cancel a transfer | Cancels an active transfer. QUEUED transfers can always be canceled. IN_PROGRESS transfers can only be canceled before broadcast. Returns 409 Conflict if the transfer cannot be canceled. Only the API key that created the transfer can cancel it. |
Transfer status values
| Status | Description |
|---|---|
IN_PROGRESS | Transfer is active and not yet finalized. |
COMPLETED | Transfer confirmed on the blockchain. |
FAILED | Transfer failed — funds not successfully moved. |
QUEUED | Transfer queued behind another transfer for the same asset; also the initial state for submitted external transfers. |
External transfer setup
Complete these one-time configuration steps before using the External Transfer API.Create a trusted destination
Trusted destinations allowlist external addresses and require quorum approval.In the web dashboard:
- Navigate to Settings → Trusted Destinations.
- Select Add trusted destination → Add single crypto.
- Enter the destination address details.
- Endorse and quorum approve on your iOS device.
Create or update an API permission group
- Navigate to Developer → API 2.0.
- Enter a key name and select applicable permissions.
- Under Vault-level permissions, select Transfer funds for all vaults or a specific vault.
- Select Transfers outside of Anchorage Digital.
- Click Edit on the trusted destination row and select the destinations to include.
- Click Save and close.
To add a new trusted destination to an existing permission group: (1) create the trusted destination + quorum endorsement, (2) edit the permission group + quorum endorsement, (3) use the existing API key or create a new one.
Create an API key
- Navigate to API 2.0 → Create API Key.
- Enter a name, select the permission group from step 2, and add a contact email.
- Enter your Ed25519 public key — generate one using the key generation script.
- Select Endorse to create key.
AML questionnaire
External transfers require an AML questionnaire as part of the payload. See the AML questionnaire guide for full field details.Additional transfer details
Transfer queuing
Up to 50 transfer requests from the same source wallet can be queued at once. Transfers for the same asset on the same blockchain are processed one at a time — others remainQUEUED until the prior transfer completes or fails.
Transfers can proceed in parallel when using different source wallets or different blockchains:
- Parallel — BTC from wallet 1 and ETH from wallet 1 can process simultaneously.
- Queued — ETH from wallet 1 and USDC from wallet 1 are queued (both broadcast on Ethereum).
assetParameters
Required when transferring to institutional wallets that need a memo or destination tag. Supported assets:
ATOM, Cosmos, DYDX, HBAR, STX, TIA, XLM, XRP, ZETA
useGasStation
If true, Anchorage Digital’s gas station pays gas fees for supported assets and organizations. Processing is slightly slower — Anchorage Digital prefunds the originating wallet before executing the transfer.
Daily transfer limit
An optional daily transfer limit can be set per permission group as an additional security measure. It applies to all API keys in the group over a rolling 24-hour window and covers both internal and external transfers plus on-chain network fees. Adjustments require quorum approval and take effect immediately.Anchorage Digital applies its network fee estimate at submission time, which counts toward the daily limit. The amount used may exceed the transfer amount due to on-chain fees.
deductFeeFromAmountIfSameType
| Value | Behavior |
|---|---|
false (default) | Network fee charged in addition to transfer amount. |
true | Network fee deducted from transfer amount (only when fee and transfer asset types match). |
- For assets where fees are paid in a different asset (e.g., USDC fees paid in ETH), transferring the full balance works normally.
- For assets where fees are paid in the same asset (e.g., BTC), set
deductFeeFromAmountIfSameType: trueto transfer the full balance. For UTXO-based assets, if the remainder after fees would be unspendable, the network may reject the transaction.
Troubleshooting
Unauthorized error (external transfers)
Check the following before reaching out:- Are you using the correct URL?
- Production:
https://api.anchorage.com/v2/transfers - Sandbox:
https://api.anchorage-staging.com/v2/transfers
- Production:
- Has the destination address been added as a trusted destination?
- Does the permission group have Transfer to external addresses enabled?
- Has the trusted destination been connected to the permission group and the operation endorsed?
Successful transfers
Valid transfer requests initiate without quorum or risk review. Once confirmed on the blockchain, the transfer is also logged as a transaction and visible in the iOS app, web dashboard, and via API. A deposit is detected at the destination vault.Unsuccessful transfers
Request-level failures:- Source wallet/vault does not exist or does not support the asset type.
- Amount exceeds available funds.
- Destination does not exist or does not support the asset type.
- API key lacks permissions for the source vault.
- Insufficient funds to cover the network fee at broadcast time.
- Insufficient funds to cover the transfer amount and fee when the queued transfer is processed.
- Blockchain-level failure.
Network fees and full balance transfers
WhenwalletId is the source, network fees are deducted from that wallet. When vaultId is the source, fees are pulled from the default wallet in the vault (isDefault: true).
deductFeeFromAmountIfSameType | Example (5 BTC transfer) |
|---|---|
false | Destination receives 5 BTC; source spends ~5.01 BTC. |
true | Destination receives just under 5 BTC; source spends exactly 5 BTC. |

