Skip to main content
POST
/
wallets
/
{walletId}
/
transfers
curl --request POST \ --url https://api.dfns.io/wallets/{walletId}/transfers \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'X-DFNS-USERACTION: <api-key>' \ --data ' { "kind": "Native", "to": "0xe5a2ebc128e262ab1e3bd02bffbe16911adfbffb", "amount": "1" } '
{
  "id": "xfr-20g4k-nsdpo-mg6arrifgvid4orn",
  "walletId": "wa-5pfuu-9euek-h0odgb6snva8ph3k",
  "network": "Algorand",
  "requester": {
    "userId": "us-6b58p-r53sr-rlrd3l5cj3uc4ome",
    "tokenId": "to-202a0-cdo33-o65mbt6q758lvvnt"
  },
  "requestBody": {
    "kind": "Native",
    "to": "<string>",
    "amount": "<string>",
    "memo": "<string>",
    "priority": "Slow",
    "createDestinationAccount": true,
    "offer": true,
    "expiresAt": "2023-11-07T05:31:56Z",
    "externalId": "<string>",
    "travelRule": {
      "kind": "Notabene",
      "originator": {},
      "beneficiary": {},
      "beneficiaryVASPdid": "<string>",
      "beneficiaryProof": {}
    },
    "feeSponsorId": "<string>"
  },
  "metadata": {
    "asset": {
      "symbol": "<string>",
      "decimals": 123,
      "verified": true,
      "quotes": {
        "EUR": 123,
        "USD": 123
      }
    }
  },
  "status": "Pending",
  "dateRequested": "2023-04-14T20:41:28.715Z",
  "reason": "<string>",
  "txHash": "<string>",
  "fee": "<string>",
  "datePolicyResolved": "2023-04-14T20:41:28.715Z",
  "dateBroadcasted": "2023-04-14T20:41:28.715Z",
  "dateConfirmed": "2023-04-14T20:41:28.715Z",
  "approvalId": "<string>",
  "externalId": "<string>",
  "feeSponsorId": "fs-5vqdl-gliqk-b4rfukqauov1sp7j"
}

Authentication

✅ Organization User (CustomerEmployee)
✅ Delegated User (EndUser)
✅ Service Account

Required Permissions

Wallets:Transfers:Create: Always required
FeeSponsors:Use: Required if feeSponsorId is specified.

Authorizations

Authorization
string
header
required

Bearer Token: Used to authenticate API requests. More details how to generate the token: Authentication flows

X-DFNS-USERACTION
string
header
required

User Action Signature: Used to sign the change-inducing API requests. More details how to generate the token: User Action Signing flows

Path Parameters

walletId
string
required

The source wallet id (wa-...).

Required string length: 1 - 64

Body

application/json

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

kind
enum<string>
required
Available options:
Native
to
string
required

The destination address.

amount
string
required

The amount of native tokens to transfer in minimum denomination.

memo
string

The memo or destination tag. Algorand, Cosmos, Hedera, Stellar, TON, XrpLedger support memo. Not valid for other networks.

priority
enum<string>

The priority that determines the fees paid for the transfer. All EVM compatible networks and Bitcoin support priority. Not supported for other networks. It uses the estimate fees API to calculate the transfer fees. When not specified, defaults to Standard priority.

Available options:
Slow,
Standard,
Fast
createDestinationAccount
boolean

Whether to create the destination account on chains that require account creation (e.g., Stellar). Only valid for chains that require the receiver account to exist before transfer.

offer
boolean

Optional field for Canton, if true it will create a transfer offer.

expiresAt
string<date-time>

Optional field for Canton, especially useful in the context of offers

externalId
string

A unique ID from your system. It can be leveraged to be used as an idempotency key. (read more here)

Required string length: 1 - 50
travelRule
Notabene Travel Rule · object

A travel rule payload to associate with the transfer. (read more here)

feeSponsorId
string

Id of the fee sponsor that will be used to pay for your transfer fees, it might not be available for all blockchains. (read more here)

Required string length: 1 - 50

Response

200 - application/json

Success

id
string
required

Transfer id.

Required string length: 1 - 64
Example:

"xfr-20g4k-nsdpo-mg6arrifgvid4orn"

walletId
string
required

The source wallet for this tranfer.

Required string length: 1 - 64
Example:

"wa-5pfuu-9euek-h0odgb6snva8ph3k"

network
enum<string>
required

The blockchain network this transfer is on.

Available options:
Algorand,
AlgorandTestnet,
Aptos,
AptosTestnet,
ArbitrumOne,
ArbitrumSepolia,
ArcTestnet,
AvalancheC,
AvalancheCFuji,
BabylonGenesis,
BabylonTestnet5,
Base,
BaseSepolia,
Berachain,
BerachainBepolia,
Bitcoin,
BitcoinSignet,
BitcoinTestnet3,
BitcoinCash,
Bob,
BobSepolia,
Bsc,
BscTestnet,
Canton,
CantonTestnet,
Cardano,
CardanoPreprod,
Concordium,
ConcordiumTestnet,
Celo,
CeloAlfajores,
Codex,
CodexSepolia,
CosmosHub4,
CosmosIcsTestnet,
Dogecoin,
Ethereum,
EthereumClassic,
EthereumClassicMordor,
EthereumGoerli,
EthereumSepolia,
EthereumHolesky,
EthereumHoodi,
FantomOpera,
FantomTestnet,
FlareC,
FlareCCoston2,
FlowEvm,
FlowEvmTestnet,
Hedera,
HederaTestnet,
Ink,
InkSepolia,
InternetComputer,
Ion,
IonTestnet,
Iota,
IotaTestnet,
Kaspa,
Kusama,
KusamaAssetHub,
Litecoin,
Near,
NearTestnet,
Optimism,
OptimismSepolia,
Origyn,
Plasma,
PlasmaTestnet,
Plume,
PlumeSepolia,
Paseo,
PaseoAssetHub,
Polkadot,
PolkadotAssetHub,
Polygon,
PolygonAmoy,
Polymesh,
PolymeshTestnet,
Race,
RaceSepolia,
SeiAtlantic2,
SeiPacific1,
Solana,
SolanaDevnet,
Starknet,
StarknetSepolia,
Stellar,
StellarTestnet,
Sui,
SuiTestnet,
Tezos,
TezosGhostnet,
TempoAndantino,
Tsc,
TscTestnet1,
Ton,
TonTestnet,
Tron,
TronNile,
Westend,
WestendAssetHub,
XrpLedger,
XrpLedgerTestnet
requester
object
required

The user (including Service Accounts) who requested this transfer.

requestBody
Native Asset · object
required

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

metadata
object
required

Additional metadata about the transfered asset.

status
enum<string>
required

Transfer status.

StatusDefinition
PendingThe request is pending approval due to a policy applied to the wallet.
ExecutingThe 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.
BroadcastedThe transaction has been successfully written to the mempool.
ConfirmedThe transaction has been confirmed on-chain by our indexing pipeline.
FailedIndicates either system failure to complete the request or the transaction failed on chain.
RejectedThe request has been rejected by a policy approval action.
Available options:
Pending,
Executing,
Broadcasted,
Confirmed,
Failed,
Rejected
dateRequested
string<date-time>
required

ISO 8601 date (must be UTC). When the transfer was requested.

Example:

"2023-04-14T20:41:28.715Z"

reason
string

The reason for a failed transfer.

txHash
string

The blockchain transaction hash for this transfer.

fee
string

The fee paid for this transfer in minimum denomination.

datePolicyResolved
string<date-time>

ISO 8601 date (must be UTC). When the transfer was approved by policy reviewers.

Example:

"2023-04-14T20:41:28.715Z"

dateBroadcasted
string<date-time>

ISO 8601 date (must be UTC). When the transfer was broadcasted to the blockchain.

Example:

"2023-04-14T20:41:28.715Z"

dateConfirmed
string<date-time>

ISO 8601 date (must be UTC). When the transfer was confirmed on chain.

Example:

"2023-04-14T20:41:28.715Z"

approvalId
string

The id of the approval request if this transfer triggered a policy.

externalId
string

The external id provided at transfer creation time.

feeSponsorId
string

The fee sponsor id used to pay for the transfer fees.

Required string length: 1 - 64
Example:

"fs-5vqdl-gliqk-b4rfukqauov1sp7j"