Skip to main content
A transfer is a Wallet Transfer Request to move an asset from a wallet to a destination address. A transfer request creates an action that moves native tokens or on-chain assets (ERC-20, ERC-721, SPL, etc.) from a specified wallet to a recipient. It requires the transfer payload (kind, destination, amount, and any asset-specific fields), appropriate permissions, and may trigger policies (approvals, screening, fee sponsorship). The API returns a transfer object with status, txHash, fees, and timestamps. Use Transfer when you want a high-level, tracked asset transfer.

Speed up and cancel

If a transfer is stuck in the mempool (status Broadcasted), you can speed it up or cancel it: These endpoints work for:
  • EVM networks: Both speed-up and cancel are available
  • Bitcoin: Only speed-up is available (via RBF)
Success is not guaranteed. If the original transaction confirms before the replacement is mined, the speed-up or cancel will fail.
What endpoint should I use for my transactions?
  • Transfer: call the Transfer Asset endpoint for native tokens, ERC-20/721, SPL, Cardano assets, etc. It creates a wallet transfer request, requires user action signing, supports fee sponsorship, idempotency via externalId, policy approvals, status tracking, and indexing (txHash, dateConfirmed).
  • Broadcast (Sign & Broadcast): use the Broadcast Transaction endpoint when you’ve built a raw/serialized transaction (or need to call arbitrary smart contract functions, mint, deploy contracts). This endpoint signs the transaction with the wallet key and broadcasts it; it also returns request status and txHash. See Broadcast.
  • Sign (Generate Signature): use Generate Signature only when you need an off-chain signature (no broadcast). Note this wallet endpoint is deprecated in favor of the Keys API; it does not submit anything to the chain. See Sign.

Transfer request object

id
string
required

Transfer id.

Required string length: 1 - 64
Pattern: ^xfr-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
Example:

"xfr-20g4k-nsdpo-mg6arrifgvid4orn"

walletId
string
required

The source wallet for this tranfer.

Required string length: 1 - 64
Pattern: ^wa-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
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,
DogecoinTestnet,
Ethereum,
EthereumClassic,
EthereumClassicMordor,
EthereumSepolia,
EthereumHolesky,
EthereumHoodi,
FantomOpera,
FantomTestnet,
FlareC,
FlareCCoston2,
FlowEvm,
FlowEvmTestnet,
Hedera,
HederaTestnet,
Ink,
InkSepolia,
InternetComputer,
Ion,
IonTestnet,
Iota,
IotaTestnet,
Kaspa,
Kusama,
KusamaAssetHub,
Litecoin,
LitecoinTestnet,
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,
Tempo,
TempoModerato,
Tsc,
TscTestnet1,
Ton,
TonTestnet,
Tron,
TronNile,
Westend,
WestendAssetHub,
XrpLedger,
XrpLedgerTestnet
requester
object
required

The user who initiated the request.

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.

Required string length: 1 - 64
Pattern: ^ap-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
Example:

"ap-2a9in-tt2a1-983lho480p35ejd0"

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
Pattern: ^fs-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{14,16}$
Example:

"fs-5vqdl-gliqk-b4rfukqauov1sp7j"

Last modified on March 9, 2026