---
title: "Create a transfer request"
method: POST
path: "/transfers"
tags: ["Transfers"]
---

# Create a transfer request

`POST /transfers`

Permissions required: **Transfer funds**




#### Identify the sending resource and asset


To initiate a transfer between resources, you must identify which resource you'd like to transfer funds from and the asset type to transfer. Provide a `source` and `assetType`.


#### Identify the receiving resource


Choose a resource to receive the funds as the `destination`. This resource may belong to your organization or another organization that also custodies with Anchorage Digital, or it may also be an approved blockchain address not custodied by Anchorage Digital (see [Permission Groups](#section/Authentication-and-Security/Permission-Groups) for more details). Please note: If you would like to use the Anchorage Digital API to transfer to approved blockchain addresses, please contact [api@anchorage.com](mailto:api@anchorage.com).


#### Permissions


The provided API key must be associated with a permission group that has Transfer permissions for the vault from which the assets are being sent. The receiving resource does not need Transfer permissions to receive a transfer of funds.


#### Additional Metadata


You may provide a transfer memo with each transfer. If the transfer API request is successful, a transfer transaction will be created that will include this transfer memo in the description. The resulting deposit will also include this memo.



#### Successful Transfers


If the transfer request is valid, the request will initiate a transfer transaction from the source. This is a special withdrawal that will not require a quorum of approvals and will undergo automated Anchorage Digital Risk Review. When the transaction is broadcasted and confirmed on the blockchain, a subsequent deposit will be detected for the destination. All of these transactions will be visible on the Anchorage Digital iOS Application, the Web Dashboard, and in the [list transactions](#operation/getTransactions) API endpoint.


#### Unsuccessful Transfers


A transfer request may fail for any of the following reasons:

  - The specified sending resource does not exist or does not support the specified asset type
  - The specified amount exceeds the available funds for this asset (insufficient funds)
  - The destination does not exist or does not support the specified asset type
  - The provided API key does not have permissions to initiate transfers from this wallet


If the transfer request is successful, the actual transfer 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
  - The transfer was successfully queued but there were insufficient funds by the time it was processed
  - There is a failure on the blockchain

#### Idempotent Requests


This endpoint supports [idempotent requests](#section/Idempotency) so that a transfer does not occur twice if an API call was interrupted and must be retried. To send an idempotent request, include the `idempotentId` field in the body of the POST request.


#### Queueing


Transfer requests are queued and processed in the order they were received. When transferring between wallets, multiple transfer requests may be queued for the same asset in a given wallet, but only one will be processed at a time. The other requests will remain in the `QUEUED` state until the prior transfer is completed or fails.


#### Transferring Full Balance


For assets with network fees paid in a separate asset type, transferring the full balance of an asset is no different than transferring any other amount for that asset.


For assets with network fees paid in the same asset type, transferring the full balance is not possible without specifying to the server that the fee should be deducted from the transfer amount. See the `deductFeeFromAmountIfSameType` flag of the `TransfersRequest` model for more detail.

## Headers

- `Api-Signature` string, required
- `Api-Timestamp` integer, required

## Request body

- TransfersRequest
  - `amount` string, required — An amount of a crypto-asset to transfer, without units. The unit is derived from the asset type.
  - `assetParametersATOM` WithdrawalParametersForATOM — Additional parameters to be provided exclusively when `assetType` is "ATOM". This field is deprecated, please migrate to using `assetParametersCosmos` instead
    - `memo` string, required — An alphanumeric string often used to uniquely identify the recipient of the transaction, commonly used when transferring funds to custodial wallets, exchanges or other situations where the `destinationAddress` is multi-purpose. Must be included whenever provided by the recipient of the transaction.
  - `assetParametersCosmos` WithdrawalParametersForCosmos — Additional parameters to be provided exclusively when `assetType` is for a Cosmos blockchain
    - `memo` string, required — An alphanumeric string often used to uniquely identify the recipient of the transaction, commonly used when transferring funds to custodial wallets, exchanges or other situations where the `destinationAddress` is multi-purpose. Must be included whenever provided by the recipient of the transaction.
  - `assetParametersExtra` WithdrawalParametersExtra — Extra parameters, to be provided for assets
    - `value` string, required — An alphanumeric string often used to uniquely identify the recipient of the transaction, commonly used when transferring funds to custodial wallets, exchanges or other situations where the `destinationAddress` is multi-purpose. Must be included whenever provided by the recipient of the transaction.
  - `assetParametersFiatTrustedDestination` WithdrawalParametersForFiatTrustedDestination — Additional parameters to be provided exclusively when the destination is a Trusted Destination and `assetType` is fiat.
    - `memo` string — Note to Beneficiary. If not provided, the memo on the Trusted Destination will be used by default.
    - `purpose` 'TRADING_SETTLEMENT' | 'LENDING' | 'INVESTMENT' | 'EXPENSES' | 'FEE_PAYMENT' | 'GRANT_PAYMENT' | 'PRIZE_AWARD' | 'GIFT' | 'REIMBURSEMENT' | 'REBALANCE' | 'INTRA_COMPANY', required — The purpose of the funds being withdrawn. * `TRADING_SETTLEMENT` - Trading Settlement * `LENDING` - Lending * `INVESTMENT` - Investment * `EXPENSES` - Expenses * `FEE_PAYMENT` - Fee Payment * `GRANT_PAYMENT` - Grant Payment * `PRIZE_AWARD` - Prize Award * `GIFT` - Gift * `REIMBURSEMENT` - Reimbursement * `REBALANCE` - Rebalance * `INTRA_COMPANY` - Intra Company
  - `assetParametersXLM` WithdrawalParametersForXLM — Additional parameters to be provided exclusively when `assetType` is "XLM"
    - `memo` string, required — An alphanumeric string often used to uniquely identify the recipient of the transaction, commonly used when transferring funds to custodial wallets, exchanges or other situations where the `destinationAddress` is multi-purpose. Must be included whenever provided by the recipient of the transaction.
  - `assetParametersXRP` WithdrawalParametersForXRP — Additional parameters to be provided exclusively when `assetType` is "XRP"
    - `destinationTag` integer, required — A number often used to uniquely identify the recipient of the transaction, commonly used when transferring funds to custodial wallets, exchanges or other situations where the `destinationAddress` is multi-purpose. Must be included whenever provided by the recipient of the transaction.
  - `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.
  - `deductFeeFromAmountIfSameType` boolean — 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` ResourceDetails — An object representing a resource capable of receiving, or holding funds. Construction example: ``` { "id":"1c920f4241b78a1d483a29f3c24b6c4c", "type":"WALLET" } ```
    - `id` string, required — The identifier of the resource
    - `type` 'VAULT' | 'WALLET' | 'ADDRESS' | 'STANDING_INSTRUCTION', required — The type of the resource being referenced. Note that the VAULT type has been deprecated and WALLET should be used instead.
  - `idempotentId` string — A client-provided unique ID for idempotent requests (mandatory)
  - `source` SourceResourceDetails — An object representing a resource capable of sending funds. Construction example: ``` { "id":"1c920f4241b78a1d483a29f3c24b6c4c", "type":"WALLET" } ```
    - `id` string, required — The identifier of the resource
    - `type` 'VAULT' | 'WALLET', required — The type of the resource being referenced. Note that the VAULT type has been deprecated and WALLET should be used instead.
  - `transferAmlQuestionnaire` TransferAMLQuestionnaire — Anti-money laundering questionnaire submission
    - `destinationType` 'FINANCIAL_INSTITUTION' | 'SELFHOSTED_WALLET' — __DEPRECATED__ - Where the address that will receive the withdrawal is held.
    - `institutionCountry` string — __DEPRECATED__ - The country of the institution on the receiving end of the withdrawal, must be specified when the `destinationType` is `FINANCIAL_INSTITUTION` (ISO 3166-1 alpha-2 code).
    - `institutionName` string — __DEPRECATED__ - The name of the institution on the receiving end of the withdrawal, must be specified when the `destinationType` is `FINANCIAL_INSTITUTION`.
    - `originatorCity` string — The city of the person or entity that is withdrawing the funds, must be specified when the `originatorType` is `MY_CLIENT`.
    - `originatorCountry` string — The country of the client that is withdrawing the funds, must be specified when the `originatorType` is `MY_CLIENT` (ISO 3166-1 alpha-2 code).
    - `originatorName` string — The name of the client that is withdrawing the funds, must be specified when the `originatorType` is `MY_CLIENT`.
    - `originatorPostalCode` string — The zip code/postal code of the person or entity that is withdrawing the funds, can be specified when the `originatorType` is `MY_CLIENT`.
    - `originatorStateProvince` string — The state/province of the person or entity that is withdrawing the funds, can be specified when the `originatorType` is `MY_CLIENT` (full name format).
    - `originatorStreetAddress` string — The street address of the person or entity that is withdrawing the funds, must be specified when the `originatorType` is `MY_CLIENT`.
    - `originatorType` 'MY_ORGANIZATION' | 'MY_CLIENT' — Who is the originator of this withdrawal, must be specified when originator is a Financial Institution.
    - `purpose` 'TRADING_SETTLEMENT' | 'LENDING' | 'INVESTMENT' | 'EXPENSES' | 'FEE_PAYMENT' | 'GRANT_PAYMENT' | 'PRIZE_AWARD' | 'GIFT' | 'REIMBURSEMENT' | 'REBALANCE' | 'INTRA_COMPANY' | 'REWARDS_DISTRIBUTION', required — The purpose of the withdrawal.
    - `recipientCity` string — __DEPRECATED__ - The city of the person or entity that will receive the funds being withdrawn, can be specified when the `recipientType` is `PERSON` or `ENTITY` (optional, except if Street Address is indicated).
    - `recipientCountry` string — __DEPRECATED__ - The country of the entity or person that will receive the funds being withdrawn, must be specified when the `recipientType` is `PERSON` or `ENTITY` (ISO 3166-1 alpha-2 code).
    - `recipientFirstName` string — __DEPRECATED__ - The first name of the person that will receive the funds being withdrawn, must be specified when the `recipientType` is `PERSON`.
    - `recipientFullName` string — __DEPRECATED__ - The full name of the entity that will receive the funds being withdrawn, must be specified when the `recipientType` is `ENTITY`.
    - `recipientLastName` string — __DEPRECATED__ - The last name of the person that will receive the funds being withdrawn, must be specified when the `recipientType` is `PERSON`.
    - `recipientPostalCode` string — __DEPRECATED__ - The zip code/postal code of the person or entity that will receive the funds being withdrawn, can be specified when the `recipientType` is `PERSON` or `ENTITY` (optional).
    - `recipientStateProvince` string — __DEPRECATED__ - The state/province of the person or entity that will receive the funds being withdrawn, can be specified when the `recipientType` is `PERSON` or `ENTITY` (full name format) (optional).
    - `recipientStreetAddress` string — __DEPRECATED__ - The street address of the person or entity that will receive the funds being withdrawn, can be specified when the `recipientType` is `PERSON` or `ENTITY` (optional, except if City is indicated).
    - `recipientType` 'DESTINATION_INSTITUTION' | 'MY_ORGANIZATION' | 'PERSON' | 'ENTITY' — __DEPRECATED__ - The entity or person that will receive the funds being withdrawn. * `DESTINATION_INSTITUTION` - Financial institution specified above in `institutionName` * `MY_ORGANIZATION` - Same organization initiating the withdrawal, the Anchorage Digital account owner * `PERSON` - Other person * `ENTITY` - Other entity
    - `selfhostedDescription` string — __DEPRECATED__ - A description of the self-hosted wallet, must be specified when the `destinationType` is `SELFHOSTED_WALLET`.
  - `transferMemo` string, nullable — A user-supplied description that will become the description of the subsequent transfer transaction (optional)
  - `useGasStation` boolean, nullable — If true, the Anchorage Digital gas station will pay gas fees, for supported asset types and organizations.

## Response `201`

Successfully initiate a transfer

- TransfersResponse1
  - `data` Data3, required
    - `status` 'IN_PROGRESS' | 'COMPLETED' | 'FAILED' | 'QUEUED', required — A string describing the status of the given transfer * IN_PROGRESS - This transfer is in progress and is not final. * COMPLETED - This transfer has been completed and is confirmed on the blockchain. * FAILED - This transfer has failed. Funds were not successfully transferred. * QUEUED - This transfer has been queued behind another transfer of the same asset.
    - `transferId` string, required — The ID of this transfer, which can be used to retrieve further details

## Other responses

- `400` — Bad Request or Insufficient Funds
- `401` — Unauthenticated
- `403` — Forbidden
- `404` — Not Found
- `429` — Too Many Requests
- `500` — Internal Server Error

---

[API](https://skmtc.net/anchorage/apis/anchorage-digital-api-reference.md) · [All operations](https://skmtc.net/anchorage/apis/anchorage-digital-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/anchorage/anchorage-digital-api-reference/versions/166864b1ec6d/schema)
