Skip to main content
POST
/
transfers
Create a transfer request
curl --request POST \
  --url https://api.anchorage-staging.com/v2/transfers \
  --header 'Api-Access-Key: <api-key>' \
  --header 'Api-Signature: <api-signature>' \
  --header 'Api-Timestamp: <api-timestamp>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "amount": "1000.00000000",
  "assetType": "BTC",
  "deductFeeFromAmountIfSameType": false,
  "idempotentId": "12838927347",
  "transferAmlQuestionnaire": {
    "originatorType": "MY_CLIENT",
    "originatorName": "Satoshi Nakamoto",
    "originatorCountry": "US",
    "originatorStreetAddress": "1234 NW Bobcat Lane, St. Robert, MO",
    "originatorPostalCode": "65584-5678",
    "originatorCity": "San Francisco",
    "originatorStateProvince": "Wyoming",
    "purpose": "TRADING_SETTLEMENT"
  },
  "transferMemo": "Internal ID: #12838927347",
  "useGasStation": true
}
'
{
  "data": {
    "transferId": "008d3ec72558ce907571886df63ef51594b5bd8cf106a0b7fa8f12a30dfc867f"
  }
}
Signed and idempotent. Use the signer to generate fresh headers and inject idempotentId into the body before sending.

Authorizations

Api-Access-Key
string
header
required

An API key associated with a security role

Headers

Api-Signature
string
required

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)
)
)
Pattern: ^[0-9A-Fa-f]{128,160}$
Api-Timestamp
integer<int64>
required

Current timestamp, represented as unix epoch seconds

Body

application/json
amount
string
required

An amount of a crypto-asset to transfer, without units. The unit is derived from the asset type.

Example:

"1000.00000000"

assetType
string
required

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.

Example:

"BTC"

assetParametersATOM
WithdrawalParametersForATOM · object

Additional parameters to be provided exclusively when assetType is "ATOM". This field is deprecated, please migrate to using assetParametersCosmos instead

assetParametersCosmos
WithdrawalParametersForCosmos · object

Additional parameters to be provided exclusively when assetType is for a Cosmos blockchain

assetParametersExtra
WithdrawalParametersExtra · object

Extra parameters, to be provided for assets

assetParametersFiatTrustedDestination
WithdrawalParametersForFiatTrustedDestination · object

Additional parameters to be provided exclusively when the destination is a Trusted Destination and assetType is fiat.

assetParametersXLM
WithdrawalParametersForXLM · object

Additional parameters to be provided exclusively when assetType is "XLM"

assetParametersXRP
WithdrawalParametersForXRP · object

Additional parameters to be provided exclusively when assetType is "XRP"

deductFeeFromAmountIfSameType
boolean
default:false

If false, any network fees will always be added to amount requested. For example, a request to transfer 5 BTC with deductFeeFromAmountIfSameType=false would result in 5 exactly BTC received to the destination wallet and just over 5 BTC spent by the source wallet.

If true and the amount transferred is the same asset type as the network fee for the transfer, the network fee is deducted from the amount instead. For example, a request to transfer 5 BTC with deductFeeFromAmountIfSameType=true would result in just under 5 BTC received to the destination wallet.

For assets where the exact fee taken by the network is not known until the transaction is mined, it is likely that the amount spent will fall just short of the amount requested. For example, a request to transfer 5 ETH with deductFeeFromAmountIfSameType=true may result in the sending wallet spending 4.97 ETH and the recipient receiving 4.9 ETH. In this example, Anchorage Digital specifies to the network a maximum allowable fee of 0.1 ETH, but the network takes only 0.07 ETH

For UTXO-based assets, if deductFeeFromAmountIfSameType=true and the amount requested for transfer is just short of the total balance of the asset, the network will refuse to accept this transaction because the remainder would be unspendable. This is an unlikely edge case. See "Bitcoin Dust" for more context.

This flag is ignored for transfers where the amount and the fee asset types are separate.

destination
Resource · object

An object representing a resource capable of receiving, or holding funds.

Construction example:

{
"id":"1c920f4241b78a1d483a29f3c24b6c4c",
"type":"WALLET"
}
idempotentId
string

A client-provided unique ID for idempotent requests (mandatory)

Maximum string length: 128
Example:

"12838927347"

source
SourceResource · object

An object representing a resource capable of sending funds.

Construction example:

{
"id":"1c920f4241b78a1d483a29f3c24b6c4c",
"type":"WALLET"
}
transferAmlQuestionnaire
AMLQuestionnaire · object

Anti-money laundering questionnaire submission

Example:
{
"originatorType": "MY_CLIENT",
"originatorName": "Satoshi Nakamoto",
"originatorCountry": "US",
"originatorStreetAddress": "1234 NW Bobcat Lane, St. Robert, MO",
"originatorPostalCode": "65584-5678",
"originatorCity": "San Francisco",
"originatorStateProvince": "Wyoming",
"purpose": "TRADING_SETTLEMENT"
}
transferMemo
string | null

A user-supplied description that will become the description of the subsequent transfer transaction (optional)

Example:

"Internal ID: #12838927347"

useGasStation
boolean | null

If true, the Anchorage Digital gas station will pay gas fees, for supported asset types and organizations.

Response

Successfully initiate a transfer

data
Data3 · object
required