Create transfer action
Create an intent to execute a token transfer via a wallet. The intent must be authorized by either the wallet owner or signers before it can be executed.
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 expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the request must be processed.
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"
}Amount as a decimal string in the token's standard unit (e.g. "1.5" for 1.5 USDC). For exact_input, the amount to send. For exact_output, the exact amount to receive. Takes precedence over source.amount when both are provided.
100Whether 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
Created transfer intent.
Response for a transfer intent
Unique ID for the intent
Display name of the user who created the intent
Unix timestamp when the intent was created
ID of the resource being modified (wallet_id, policy_id, etc)
Detailed authorization information including key quorum members, thresholds, and signature status
Current status of an intent.
pending, processing, executed, failed, expired, rejected, dismissed Whether this intent has a custom expiry time set by the client. If false, the intent expires after a default duration.
Unix timestamp when the intent expires
TRANSFER The original transfer request that would be sent to the wallet transfer endpoint
ID of the user who created the intent. If undefined, the intent was created using the app secret
Unix timestamp when the intent was rejected, present when status is 'rejected'
Unix timestamp when the intent was dismissed, present when status is 'dismissed'
Human-readable reason for dismissal, present when status is 'dismissed'
Current state of the wallet before any changes. If undefined, the resource was deleted and no longer exists
{
"id": "id2tptkqrxd39qo9j423etij",
"address": "0xF1DBff66C993EE895C8cb176c30b07A559d76496",
"display_name": "Treasury",
"external_id": "my-order-123",
"chain_type": "ethereum",
"policy_ids": [],
"additional_signers": [],
"owner_id": "rkiz0ivz254drv1xw982v3jq",
"created_at": 1741834854578,
"exported_at": null,
"imported_at": null,
"archived_at": null
}Result of transfer execution (only present if intent status is 'executed' or 'failed')

