Skip to main content
POST
/
v1
/
wallets
/
{wallet_id}
/
transfer
Transfer
curl --request POST \
  --url https://api.privy.io/v1/wallets/{wallet_id}/transfer \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '
{
  "amount_type": "exact_input",
  "source": {
    "asset": "usdc",
    "amount": "10.5",
    "chain": "base"
  },
  "destination": {
    "asset": "usdc",
    "chain": "base",
    "address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
  },
  "slippage_bps": 100
}
'
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "pending",
  "wallet_id": "fmfdj6yqly31huorjqzq38zc",
  "type": "transfer",
  "source_asset": "usdc",
  "source_amount": "10.5",
  "source_chain": "base",
  "destination_address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
}

Documentation Index

Fetch the complete documentation index at: https://docs.privy.io/llms.txt

Use this file to discover all available pages before exploring further.

If your app has gas sponsorship configured, usage of the /transfer endpoint will be gas-sponsored by default. There is no need to specify additional parameters for sponsorship.

Authorizations

Authorization
string
header
required

Basic Auth header with your app ID as the username and your app secret as the password.

Headers

privy-app-id
string
required

ID of your Privy app.

privy-authorization-signature
string

Request authorization signature. If multiple signatures are required, they should be comma separated.

Path Parameters

wallet_id
string
required

ID of the wallet.

Body

application/json

Request body for initiating a sponsored token transfer from an embedded wallet.

source
NamedTokenTransferSource · object
required

Source for a transfer identified by a named asset (e.g. "usdc", "eth"). Use this variant for first-class assets maintained by Privy.

Example:
{
"asset": "usdc",
"amount": "10.5",
"chain": "base"
}
destination
TokenTransferDestination · object
required

The destination address for a token transfer. Optionally specify a different asset or chain for cross-asset or cross-chain transfers.

Example:
{
"address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2"
}
amount_type
enum<string>

Whether the amount refers to the input token or output token.

Available options:
exact_input,
exact_output
slippage_bps
integer

Maximum allowed slippage in basis points (1 bps = 0.01%).

Required range: 0 <= x <= 10000

Response

200 - application/json

Transfer initiated successfully.

Response for a transfer action.

id
string
required

The ID of the wallet action.

status
enum<string>
required

The current status of the wallet action.

Available options:
pending,
succeeded,
rejected,
failed
wallet_id
string
required

The ID of the wallet involved in the action.

created_at
string<date-time>
required

ISO 8601 timestamp of when the wallet action was created.

type
enum<string>
required
Available options:
transfer
source_chain
string
required

Chain name (e.g. "base", "ethereum").

destination_address
string
required

Recipient address.

failure_reason
FailureReason · object

Top-level failure context for the wallet action. Present on rejected or failed actions when available.

steps
(EVMTransactionWalletActionStep · object | EVMUserOperationWalletActionStep · object | SVMTransactionWalletActionStep · object)[]

The steps of the wallet action. Only returned if ?include=steps is provided.

A wallet action step consisting of an EVM transaction.

source_asset
string

Asset identifier (e.g. "usdc", "eth"). Present when the transfer was initiated with a named asset; omitted for custom-token transfers.

source_asset_address
string

Token contract address (EVM) or mint address (Solana). Present when the transfer was initiated with asset_address.

source_asset_decimals
integer

Number of decimals for the transferred token. Present when the transfer was initiated with asset_address and the decimals were resolved on-chain.

source_amount
string

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
string

Destination asset for cross-asset transfers. Omitted for same-asset transfers.

destination_chain
string

Destination chain for cross-chain transfers. Omitted for same-chain transfers.

destination_amount
string

Amount received on the destination chain. Populated immediately for exact_output transfers, or after fill confirmation for exact_input transfers.