# Transfer Asset

`POST /wallets/{walletId}/transfers`

Transfer an asset out of the specified wallet to a destination address. For all fungible token transfers, the transfer amount must be specified in the minimum denomination of that token. For example, use the amount in `Satoshi` for a Bitcoin transfer, or the amount in `Wei` for an Ethereum transfer etc.

{% hint style="info" %}

* User action signature required. See [User Action Signing](/d/api-docs/authentication/user-action-signing.md) for more information.
* Request headers required. See [Request Headers](/d/advanced-topics/authentication/request-headers.md) for more information.
* Authentication required. See [Authentication Headers](/d/advanced-topics/authentication/request-headers.md#authentication-headers) for more information.
  {% endhint %}

## Required Permissions

| Name                       | Conditions                               |
| -------------------------- | ---------------------------------------- |
| `Wallets:Transfers:Create` | Always Required                          |
| `FeeSponsors:Use`          | Required if `feeSponsorId` is specified. |

## Parameters

### Path parameters

| Path parameter | Description                      |
| -------------- | -------------------------------- |
| `walletId`     | Unique identifier of the wallet. |

## Request Body

### Native Token

Transfer the native token of the network. All networks support the native token type.

| Field                      | Description                                                                                                                                   | Type - Optional     |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| `kind`                     | `Native`                                                                                                                                      | String              |
| `to`                       | The destination address.                                                                                                                      | String              |
| `amount`                   | The amount of native tokens to transfer in minimum denomination.                                                                              | String              |
| `priority`                 | The priority that determines the fees paid for the transfer. \[1]                                                                             | String *(optional)* |
| `memo`                     | The memo or destination tag. \[2]                                                                                                             | String *(optional)* |
| `createDestinationAccount` | Whether to create the destination account on chains that require account creation (e.g., Stellar, Kadena).                                    | Boolean (optional)  |
| `targetChain`              | For multi-chain networks (e.g., Kadena), specify the destination chain for cross-chain transfers.                                             | String (optional)   |
| `externalId`               | A unique ID from your system. It can be leveraged to be used as an idempotency key. (read more [here](/d/advanced-topics/api-idempotency.md)) | String *(optional)* |
| `feeSponsorId`             | A fee sponsor id to sponsor the transaction fee by another wallet. (read more [here](/d/api-docs/fee-sponsors.md))                            | String *(optional)* |
| `travelRule`               | <p>A travel rule payload to associate with the transfer. <br>(read more <a href="/pages/zn6ugxDyvoc7sLo6sJPk">here</a>)</p>                   | Object (optional)   |

1. All EVM compatible networks and Bitcoin support `priority`. Not supported for other networks. The accepted values are `Slow`, `Standard` and `Fast`. It uses the [estimate fees](/d/api-docs/networks/estimate-fees.md) API to calculate the transfer fees. When not specified, defaults to `Standard` priority.
2. `Stellar`, `TON` and `XrpLedger` support `memo`. Not valid for other networks.

```json
{
  "kind": "Native",
  "to": "0xb282dc7cde21717f18337a596e91ded00b79b25f",
  "amount": "1000000000"
}
```

### Algorand Standard Asset <a href="#asa" id="asa"></a>

Transfer Algorand standard assets, or [ASAs](https://developer.algorand.org/docs/get-details/asa/).

| Field     | Description                                               | Type - Optional |
| --------- | --------------------------------------------------------- | --------------- |
| `kind`    | `Asa`                                                     | String          |
| `assetId` | The asset ID of the token.                                | String          |
| `to`      | The destination address.                                  | String          |
| `amount`  | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Asa",
  "assetId": "31566704",
  "to": "FRZP423Y7MNMTG4OOLESESTPCFGGHZMY7QN462YEQAJK5H6EOMFHZG73UA",
  "amount": "1000000"
}
```

### Aptos Fungible Asset (AIP-21) <a href="#aip-21" id="aip-21"></a>

Transfer Aptos fungible asset that implement the [AIP-21 specification](https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-21.md).

| Field      | Description                                               | Type - Optional |
| ---------- | --------------------------------------------------------- | --------------- |
| `kind`     | `Aip21`                                                   | String          |
| `metadata` | The asset metadata address.                               | String          |
| `to`       | The destination address.                                  | String          |
| `amount`   | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Aip21",
  "metadata": "0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b",
  "to": "0x470a59fbbaaf5dc6bd06eea917245f025a8024d23c4364acec0f377282ee269a",
  "amount": "1000000"
}
```

### Cardano Asset

Transfer Cardano assets following [Mary update](https://docs.cardano.org/about-cardano/evolution/upgrades/mary)

| Field     | Description                                               | Type - Optional |
| --------- | --------------------------------------------------------- | --------------- |
| `kind`    | `Asset`                                                   | String          |
| `assetId` | The asset ID of the token.                                | String          |
| `to`      | The destination address.                                  | String          |
| `amount`  | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Asset",
  "assetId": "c003c63129289a15b2d87216ce7366ea1832cfb9fc967f524ff1a8b564666e73636f696e",
  "to": "addr_test1vqucg65d0c2fmjexgeenwz4acajyfxj8qqewu9xl5vmq32casygkx",
  "amount": "1"
}
```

### EVM Fungible Token (ERC-20) <a href="#erc-20" id="erc-20"></a>

Transfer fungible tokens that implement the [ERC-20 specification](https://eips.ethereum.org/EIPS/eip-20).

| Field          | Description                                                                                                                                                        | Type - Optional     |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `kind`         | `Erc20`                                                                                                                                                            | String              |
| `contract`     | The ERC-20 contract address.                                                                                                                                       | String              |
| `to`           | The destination address.                                                                                                                                           | String              |
| `amount`       | The amount of tokens to transfer in minimum denomination.                                                                                                          | String              |
| `priority`     | The priority that determines the fees paid for the transfer.                                                                                                       | String *(optional)* |
| `feeSponsorId` | A fee sponsor id to sponsor the transaction fee by another wallet. (read more [here](https://github.com/dfns/dfns-api-docs/blob/m/api-docs/fee-sponsor/README.md)) | String *(optional)* |
| `travelRule`   | <p>A travel rule payload to associate with the transfer. <br>(read more <a href="/pages/zn6ugxDyvoc7sLo6sJPk">here</a>)</p>                                        | Object (optional)   |

```json
{
  "kind": "Erc20",
  "contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
  "to": "0xb282dc7cde21717f18337a596e91ded00b79b25f",
  "amount": "1000000"
}
```

### EVM Non Fungible Token (ERC-721) <a href="#erc-721" id="erc-721"></a>

Transfer non-fungible tokens that implement the [ERC-721 specification](https://eips.ethereum.org/EIPS/eip-721)

| Field          | Description                                                                                                                                                        | Type - Optional     |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `kind`         | `Erc721`                                                                                                                                                           | String              |
| `contract`     | The ERC-721 contract address.                                                                                                                                      | String              |
| `to`           | The destination address.                                                                                                                                           | String              |
| `tokenId`      | The token to transfer.                                                                                                                                             | String              |
| `priority`     | The priority that determines the fees paid for the transfer.                                                                                                       | String *(optional)* |
| `feeSponsorId` | A fee sponsor id to sponsor the transaction fee by another wallet. (read more [here](https://github.com/dfns/dfns-api-docs/blob/m/api-docs/fee-sponsor/README.md)) | String *(optional)* |

```shell
{
  "kind": "Erc721",
  "contract": "0x00fb58432ef9d418bf6688bcf0a226d2fcaa18e2",
  "to": "0xb282dc7cde21717f18337a596e91ded00b79b25f",
  "tokenId": "1"
}
```

### Solana Program Library Token (SPL and SPL 2022) <a href="#spl" id="spl"></a>

Transfer [SPL tokens](https://spl.solana.com/token) or [SPL 2022 tokens](https://spl.solana.com/token-2022).

| Field                      | Description                                                                                                                                                        | Type                 |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
| `kind`                     | `Spl` or `Spl2022`                                                                                                                                                 | String               |
| `mint`                     | The mint account address.                                                                                                                                          | String               |
| `to`                       | The destination address.                                                                                                                                           | String               |
| `amount`                   | The amount of tokens to transfer in minimum denomination.                                                                                                          | String               |
| `createDestinationAccount` | If `true`, pay to create the associated token account of the recipient if it doesn't exist. Defaults to `false`.                                                   | Boolean *(optional)* |
| `feeSponsorId`             | A fee sponsor id to sponsor the transaction fee by another wallet. (read more [here](https://github.com/dfns/dfns-api-docs/blob/m/api-docs/fee-sponsor/README.md)) | String *(optional)*  |
| `travelRule`               | <p>A travel rule payload to associate with the transfer. <br>(read more <a href="/pages/zn6ugxDyvoc7sLo6sJPk">here</a>)</p>                                        | Object (optional)    |

```json
{
  "kind": "Spl",
  "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "to": "3U6stgsD1FmA7o3omUguritCU8iWmUM7Rs6KqAHHxHVZ",
  "amount": "1000000"
}
```

### Stellar Classic Assets (SEP-41) <a href="#sep-41" id="sep-41"></a>

Transfer classic [Stellar Assets](https://developers.stellar.org/docs/issuing-assets/anatomy-of-an-asset). They all implement the [SEP-41 token interface](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0041.md).

| Field          | Description                                                                                                                                                        | Type                |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- |
| `kind`         | `Sep41`                                                                                                                                                            | String              |
| `issuer`       | The asset issuer address.                                                                                                                                          | String              |
| `assetCode`    | The asset code.                                                                                                                                                    | String              |
| `to`           | The destination address.                                                                                                                                           | String              |
| `amount`       | The amount of tokens to transfer in minimum denomination.                                                                                                          | String              |
| `memo`         | The memo.                                                                                                                                                          | String *(optional)* |
| `feeSponsorId` | A fee sponsor id to sponsor the transaction fee by another wallet. (read more [here](https://github.com/dfns/dfns-api-docs/blob/m/api-docs/fee-sponsor/README.md)) | String *(optional)* |

```json
{
  "kind": "Sep41",
  "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
  "assetCode": "USDC",
  "to": "GAZWLHTNAOJWW52GZCUJAS5MSXK7LAWCUC5TFOFFVDQ7CDTNFODJ37GB",
  "amount": "1000000"
}
```

### Sui Coin <a href="#sui-coin" id="sui-coin"></a>

Transfer Sui fungible assets that implement [coin standard](https://docs.sui.io/standards/coin).&#x20;

| Field    | Description                                               | Type - Optional |
| -------- | --------------------------------------------------------- | --------------- |
| `kind`   | `Coin`                                                    | String          |
| `coin`   | The coin identifier.                                      | String          |
| `to`     | The destination address.                                  | String          |
| `amount` | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Coin",
  "coin": "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
  "to": "0x1d9c96adb0eda0b3beca44ed89143444b4147b30f06eef7bfc39cbbff848f6e5",
  "amount": "1000000"
}
```

### TON Jetton (TEP-74) <a href="#tep-74" id="tep-74"></a>

Transfer [Jetton](https://github.com/ton-blockchain/TEPs/blob/master/text/0074-jettons-standard.md) tokens.

| Field    | Description                                               | Type - Optional |
| -------- | --------------------------------------------------------- | --------------- |
| `kind`   | `Tep74`                                                   | String          |
| `master` | The Jetton master contract address.                       | String          |
| `to`     | The destination address.                                  | String          |
| `amount` | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Tep74",
  "master": "EQAIZUJZxUgjovq8C6P5tRGwSsydiCtKiwRnycPnN1k4WpFo",
  "to": "EQBfYLuQwjbBd-LAZ6eNC26XmVVxEl86MQPKG981hdTSicL_",
  "amount": "1000000"
}
```

### TRON Native Fungible Token (TRC-10) <a href="#trc-10" id="trc-10"></a>

Transfer TRON's TRC-10 fungible tokens

| Field     | Description                                               | Type - Optional |
| --------- | --------------------------------------------------------- | --------------- |
| `kind`    | `Trc10`                                                   | String          |
| `tokenId` | The token ID.                                             | String          |
| `to`      | The destination address.                                  | String          |
| `amount`  | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Trc10",
  "tokenId": "1005273",
  "to": "TADDx31pdCFfp3XrYxp6fQGbRxriYFLTrx",
  "amount": "10000"
}
```

### TRON Smart Contract Fungible Token (TRC-20) <a href="#trc-20" id="trc-20"></a>

Transfer fungible tokens that implement the TRC-20 smart contract specification.

| Field      | Description                                               | Type - Optional |
| ---------- | --------------------------------------------------------- | --------------- |
| `kind`     | `Trc20`                                                   | String          |
| `contract` | The smart contract address.                               | String          |
| `to`       | The destination address.                                  | String          |
| `amount`   | The amount of tokens to transfer in minimum denomination. | String          |

```json
{
  "kind": "Trc20",
  "contract": "TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj",
  "to": "TQJNezrbfJ3akrGgR7eM2fWyFpsKeM8wzN",
  "amount": "1000000"
}
```

### TRON Non Fungible Token (TRC-721) <a href="#trc-721" id="trc-721"></a>

Transfer non-fungible tokens that implement the TRC-721 smart contract specification.

| Field      | Description                 | Type - Optional |
| ---------- | --------------------------- | --------------- |
| `kind`     | `Trc721`                    | String          |
| `contract` | The smart contract address. | String          |
| `to`       | The destination address.    | String          |
| `tokenId`  | The token to transfer.      | String          |

```json
{
  "kind": "Trc721",
  "contract": "TKgnDMWHYmwH24REe9XnrnwcNCvtb53n8Q",
  "to": "TQJNezrbfJ3akrGgR7eM2fWyFpsKeM8wzN",
  "tokenId": "1"
}
```

## Response Body

| Field                | Description                                                                                                                                                                                               | Type - Optional     |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| `id`                 | ID of the transfer request.                                                                                                                                                                               | String              |
| `walletId`           | ID of the wallet.                                                                                                                                                                                         | String              |
| `network`            | The network of the transfer.                                                                                                                                                                              | String              |
| `requester.userId`   | ID of the user made the transfer request.                                                                                                                                                                 | String              |
| `requester.tokenId`  | ID of the token used to make the transfer request.                                                                                                                                                        | String *(optional)* |
| `requestBody`        | The original request body.                                                                                                                                                                                | Object              |
| `externalId`         | External ID specified in the request.                                                                                                                                                                     | String *(optional)* |
| `feeSponsorId`       | The ID of the fee sponsor.                                                                                                                                                                                | String *(optional)* |
| `dateRequested`      | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string when the request was made.                                                                                                                 | String              |
| `status`             | The current status of the request. See table below for a list of possible statuses.                                                                                                                       | String              |
| `txHash`             | <p>The on-chain transaction hash.</p><p><a href="#in-the-ton-blockchain-what-gets-broadcast-is-a-message-not-a-transaction.-as-a-result-the-txhash-you"><sup><sub>Ton-specific note ↓</sub></sup></a></p> | String *(optional)* |
| `dateBroadcasted`    | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string when transaction was broadcasted to the blockchain.                                                                                        | String *(optional)* |
| `approvalId`         | ID of the approval when the request triggered a policy.                                                                                                                                                   | String *(optional)* |
| `datePolicyResolved` | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string when the triggered policy was either approved or denied.                                                                                   | String *(optional)* |
| `reason`             | The failure reason if the request failed to complete.                                                                                                                                                     | String *(optional)* |
| `fee`                | The transaction fee.                                                                                                                                                                                      | String *(optional)* |
| `dateConfirmed`      | [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date string when the transaction was confirmed on chain.                                                                                               | String *(optional)* |

{% hint style="info" %}
**In the Ton blockchain, what is broadcasted is a `Message`, not a `Transaction`. As a result, the `txHash` you receive is actually the hash of the External-In message. When the message is executed, it may result in multiple transactions. During indexing, we replace the `txHash` with the real transaction hash that has executed the External-In message. If you're subscribing to Blockchain Events, you can still retrieve the original message hash via the `externalHash` field.**
{% endhint %}

#### Request Statuses

<table><thead><tr><th width="149.91796875">Status</th><th>Definition</th></tr></thead><tbody><tr><td><code>Pending</code></td><td>The request is pending approval due to a <a href="https://docs.dfns.co/d/api-docs/policy-engine/policies#wallets-sign-activity">policy applied</a> to the wallet.</td></tr><tr><td><code>Executing</code></td><td>The request is approved and is in the process of being executed. note this status is only set for a short time between pending and broadcasted.</td></tr><tr><td><code>Broadcasted</code></td><td>The transaction has been successfully written to the mempool.</td></tr><tr><td><code>Confirmed</code></td><td>The transaction has been confirmed on-chain by our indexing pipeline.</td></tr><tr><td><code>Failed</code></td><td>Indicates either system failure to complete the request or the transaction failed on chain.</td></tr><tr><td><code>Rejected</code></td><td>The request has been rejected by a policy approval action.</td></tr></tbody></table>

### 200 Success

```json
{
  "id": "xfr-6ulmv-sa183-xxxxxxxxxxxxxxxx",
  "walletId": "wa-40f4f-51gpm-xxxxxxxxxxxxxxxx",
  "network": "Ethereum",
  "requester": {
    "userId": "us-4vu4v-kud3l-xxxxxxxxxxxxxxxx",
  },
  "requestBody": {
    "kind": "Erc20",
    "contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "amount": "1000000",
    "to": "0xb282dc7cde21717f18337a596e91ded00b79b25f"
  },
  "metadata": {
    "asset": {
      "symbol": "USDC",
      "decimals": 6,
      "verified": true,
      "quotes": {
        "USD": 1.000804849917271
      }
    }
  },
  "status": "Confirmed",
  "fee": "1542993669053672",
  "txHash": "0x8e88793607610a83798eb5ec6dde861f3e459c7e4a22e78b0d2e675b86d0d1e7",
  "dateRequested": "2024-01-18T23:03:53.739Z",
  "dateBroadcasted": "2024-01-18T23:03:55.685Z",
  "dateConfirmed": "2024-01-18T23:03:59.000Z"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-legacy.dfns.co/d/api-docs/wallets/transfer-asset.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
