Supported assets
Supported assets
The
/transfer API supports the following assets:| Asset | API value |
|---|---|
| USDC | usdc |
| USDT | usdt |
| USDB | usdb |
| EURC | eurc |
| ETH | eth |
| POL | pol |
Supported chains
Supported chains
The
/transfer API supports the following chains:| Chain | CAIP-2 | API value |
|---|---|---|
| Ethereum | eip155:1 | ethereum |
| Base | eip155:8453 | base |
| Arbitrum | eip155:42161 | arbitrum |
| Polygon | eip155:137 | polygon |
| Ethereum Sepolia | eip155:11155111 | ethereum_sepolia |
| Base Sepolia | eip155:84532 | base_sepolia |
| Arbitrum Sepolia | eip155:421614 | arbitrum_sepolia |
| Polygon Amoy | eip155:80002 | polygon_amoy |
To transfer assets or chains not listed above, use the low-level RPC
API to construct and send transactions directly.
Usage
To execute a transfer, make aPOST request to /v1/wallets/{wallet_id}/transfer.
Body
The amount of tokens to transfer, as a decimal string in standard units (e.g.
"10.0" for 10
USDC). The API handles decimal precision based on the asset — stablecoins like USDC use six
decimal places, while native tokens like ETH use 18. There is no need to convert to the smallest
unit (e.g. wei or micro-units) before sending the request.The source asset and chain for the transfer.
The destination for the transfer.
Response
The endpoint returns a200 response with a pending wallet action resource.
The transfer action is processed asynchronously. The response contains a pending wallet
action resource with
status: "pending" that Privy processes in the
background.The unique identifier for the wallet action.
The ID of the wallet initiating the transfer.
The type of action. For transfers, this is always
transfer.The current status of the action.
The source asset and chain for the transfer.
The destination asset, chain, and address for the transfer.
A list of balance changes resulting from the action. Empty while the action is pending.
A list of steps executed as part of the action. Empty while the action is pending.
Example
Example response

