Transfer
Transfer tokens from a wallet to a destination address.
fee_configuration parameter to control
fee distribution between Privy and your app. Use the quote
endpoint to preview fees before executing a transfer.Authorizations
Basic Auth header with your app ID as the username and your app secret as the password.
Headers
ID of your Privy app.
Request authorization signature. If multiple signatures are required, they should be comma separated.
Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.
Idempotency keys ensure API requests are executed only once within a 24-hour window.
Path Parameters
ID of the wallet.
Body
Request body for initiating a sponsored token transfer from an embedded wallet.
Source for a transfer identified by a named asset (e.g. "usdc", "eth"). Use this variant for first-class assets maintained by Privy.
- NamedTokenTransferSource
- CustomTokenTransferSource
{
"asset": "usdc",
"amount": "10.5",
"chain": "base"
}The destination address for a token transfer. Optionally specify a different asset or chain for cross-asset or cross-chain transfers.
{
"address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
}Whether the amount refers to the input token or output token.
exact_input, exact_output Maximum allowed slippage in basis points (1 bps = 0.01%). Only applicable for cross-chain or cross-asset transfers; omit to use the provider default.
0 <= x <= 10000Optional fee configuration for the transfer. If omitted, cross-chain transfers will not charge additional fees.
{ "type": "total_fee_bps", "value": 50 }Response
Transfer initiated successfully.
Response for a transfer action.
The ID of the wallet action.
The current status of the wallet action.
pending, succeeded, rejected, failed The ID of the wallet involved in the action.
ISO 8601 timestamp of when the wallet action was created.
transfer Chain name (e.g. "base", "ethereum").
Recipient address.
Amount received on the destination chain. Set at creation for same-chain transfers. Null until fill confirmation for cross-chain or cross-asset transfers.
Top-level failure context for the wallet action. Present on rejected or failed actions when available.
The steps of the wallet action. Only returned if ?include=steps is provided.
A wallet action step consisting of an EVM transaction.
- EVMTransactionWalletActionStep
- EVMUserOperationWalletActionStep
- SVMTransactionWalletActionStep
- ExternalTransactionWalletActionStep
Asset identifier (e.g. "usdc", "eth"). Present when the transfer was initiated with a named asset; omitted for custom-token transfers.
Token contract address (EVM) or mint address (Solana). Present when the transfer was initiated with asset_address.
Number of decimals for the transferred token. Present when the transfer was initiated with asset_address and the decimals were resolved on-chain.
Decimal amount sent on the source chain (e.g. "1.5"). Omitted for exact_output cross-chain transfers until the source amount is determined.
Destination asset for cross-asset transfers. Omitted for same-asset transfers.
Destination chain for cross-chain transfers. Omitted for same-chain transfers.
Estimated fee breakdown from the provider quote. Only present for cross-chain or cross-asset transfers. Populated after on-chain confirmation.
Estimated fee paid to the relayer.
- RelayerFee
- PrivyFee
- DeveloperFee
{
"type": "privy",
"recipient": "0x1234567890abcdef1234567890abcdef12345678",
"amount": "0.20"
}Estimated source-chain gas cost from the provider quote. Only present for cross-chain or cross-asset transfers. Populated after on-chain confirmation.
{
"base_amount": "100000000000000",
"amount": "0.0001",
"gas_asset": "ETH"
}Actual fees paid for the transfer. Populated after on-chain confirmation. Only present for cross-chain transfers.
Estimated fee paid to the relayer.
- RelayerFee
- PrivyFee
- DeveloperFee
{
"type": "privy",
"recipient": "0x1234567890abcdef1234567890abcdef12345678",
"amount": "0.20"
}Actual source-chain gas cost. Populated after on-chain confirmation. Only present for cross-chain transfers.
{
"base_amount": "100000000000000",
"amount": "0.0001",
"gas_asset": "ETH"
}
