Create a withdrawal request
Permissions required: Initiate withdrawals
Identify the sending asset
To initiate a withdrawal from a wallet to an external destination, you must identify which asset you’d like to withdraw funds from. Provide a source (with id and type).
Identify the receiving resource
Choose a resource to receive the funds as the destination. This resource may belong to your organization (wallet) or another organization (address, standing instruction).
Permissions
The provided API key must be associated with a permission group that has Initiate withdrawals permission for the sending vault.
Additional Metadata
You may provide a description with each withdrawal, that will be visible within your organization in the Anchorage Digital iOS Application.
Successful Withdrawals
If the withdrawal request is valid, the request will initiate a withdrawal transaction from the sending wallet. This is a common withdrawal that, unlike Transfers, will still require a quorum of approvals on the Anchorage Digital iOS app and will undergo manual Anchorage Digital Risk Review. Like other transactions, these withdrawals will be visible on the Anchorage Digital iOS Application, the Web Dashboard, and in the list transactions API endpoint.
Unsuccessful Withdrawals
A withdrawal request may fail for any of the following reasons:
- An ongoing withdrawal already exists (unlike transfers, withdrawal requests are not queued)
- The specified asset does not exist
- The specified amount exceeds the available funds for this asset (insufficient funds)
- The destination address is invalid
- The provided API key does not have permissions to initiate withdrawals from this wallet
If the initiated withdrawal is approved by the quorum, the transaction may fail for any of the following reasons:
- There are insufficient funds to pay the blockchain network fee at the time of this transaction
- There is a failure on the blockchain
Authorizations
An API key associated with a security role
Headers
A hex-encoded Ed25519 signature of timestamp_epoch_seconds + uppercase(http_method) + request_path + request_body.
Construction example:
toHex(
ed25519Sign(
signing_key,
'{}{}{}{}'.format(timestamp_epoch_seconds, toUpper(httpMethod), httpRequestPath, httpBody)
)
)^[0-9A-Fa-f]{128,160}$Current timestamp, represented as unix epoch seconds
Body
An amount of a crypto-asset to transfer, without units. The unit is derived from the asset type.
"1000.00000000"
A string representing a type of crypto-asset, which usually corresponds to the crypto asset's ticker symbol.
Use /asset-types to list all of the supported asset types for your organization.
"BTC"
Additional parameters to be provided exclusively when assetType is "ATOM". This field is deprecated, please migrate to using assetParametersCosmos instead. When using a Trusted Destination, these parameters must not be provided — the memo is inherited from the trusted destination. Set destination.type to TRUSTED_DESTINATION and destination.id to the trusted destination ID instead.
Additional parameters to be provided exclusively when assetType is for a Cosmos blockchain. When using a Trusted Destination, these parameters must not be provided — the memo is inherited from the trusted destination. Set destination.type to TRUSTED_DESTINATION and destination.id to the trusted destination ID instead.
Extra parameters, to be provided for assets. When using a Trusted Destination, these parameters must not be provided — the memo is inherited from the trusted destination. Set destination.type to TRUSTED_DESTINATION and destination.id to the trusted destination ID instead.
Additional parameters to be provided exclusively when the destination is a Trusted Destination and assetType is fiat.
Additional parameters to be provided exclusively when assetType is "XLM". When using a Trusted Destination, these parameters must not be provided — the memo is inherited from the trusted destination. Set destination.type to TRUSTED_DESTINATION and destination.id to the trusted destination ID instead.
Additional parameters to be provided exclusively when assetType is "XRP". When using a Trusted Destination, these parameters must not be provided — the destination tag is inherited from the trusted destination. Set destination.type to TRUSTED_DESTINATION and destination.id to the trusted destination ID instead.
An optional string providing more context to this transaction. It will be visible on the Anchorage Digital iOS app and will not be published to the blockchain.
"Internal ID: #12838927347"
An object representing a resource capable of receiving, or holding funds.
Construction example:
{
"id":"1c920f4241b78a1d483a29f3c24b6c4c",
"type":"WALLET"
}A client-provided unique ID for idempotent requests (optional)
128"12838927347"
An object representing a resource capable of sending funds.
Construction example:
{
"id":"1c920f4241b78a1d483a29f3c24b6c4c",
"type":"WALLET"
}If true, the Anchorage Digital gas station will pay gas fees, for supported asset types and organizations.
Anti-money laundering questionnaire submission
Response
Successfully initiated a withdrawal
{
"withdrawalId": "8696144cca28a634c05858d00e51191408498a7808a837fc4645b4b6997dde09"
}
