Documentation Index
Fetch the complete documentation index at: https://docs.sendai.fun/llms.txt
Use this file to discover all available pages before exploring further.
Transfer SOL or any SPL token to another wallet address. The function automatically handles both native SOL transfers and SPL token transfers with proper decimal adjustment.
Usage
// Transfer SOL
const signature = await agent.methods.transfer(
new PublicKey("recipient-address"),
1.5 // amount in SOL
);
// Transfer SPL token
const signature = await agent.methods.transfer(
new PublicKey("recipient-address"),
100, // amount in token units
new PublicKey("token-mint-address")
);
Parameters
| Parameter | Type | Required | Description |
|---|
| to | PublicKey | Yes | Recipient’s wallet address |
| amount | number | Yes | Amount to transfer |
| mint | PublicKey | No | Token mint address (omit for SOL) |
Example Prompts
Natural Language Prompts
"Send 1 SOL to wallet 8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk"
"Transfer 100 USDC to Dm9Un6DVCrCfkiUmPAhE4zVgxeUK8kZtUAgH3QUoQmHP"
"Send 50 tokens to recipient using mint address EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
// SOL transfer
{
"to": "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk",
"amount": 1
}
// USDC transfer
{
"to": "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk",
"amount": 100,
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
// Custom SPL token transfer
{
"to": "8x2dR8Mpzuz2YqyZyZjUbYWKSWesBo5jMx2Q9Y86udVk",
"amount": 50,
"mint": "SENDdRQtYMWaQrBroBrJ2Q53fgVuq95CV9UPGEvpCxa"
}
Example Implementation
Here’s a complete example showing different types of transfers:
import { SolanaAgentKit } from "solana-agent-kit";
import { PublicKey } from "@solana/web3.js";
async function executeTransfers(agent: SolanaAgentKit) {
// Transfer SOL
const solTransfer = await agent.methods.transfer(
new PublicKey("recipient"),
1.5 // 1.5 SOL
);
console.log("SOL transfer:", solTransfer);
// Transfer USDC
const usdcTransfer = await agent.methods.transfer(
new PublicKey("recipient"),
100, // 100 USDC
new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v")
);
console.log("USDC transfer:", usdcTransfer);
}
Implementation Details
- Automatically detects SOL vs SPL token transfers
- Handles decimal adjustment for SPL tokens
- Creates Associated Token Accounts if needed
- Uses single-instruction transactions for efficiency
Error Handling
try {
const signature = await agent.methods.transfer(recipient, amount, mint);
} catch (error) {
if (error.message.includes("insufficient funds")) {
// Handle insufficient balance
} else if (error.message.includes("invalid account")) {
// Handle invalid addresses
}
}
Best Practices
-
Amount Validation
- Always verify token decimals
- Check balances before transfer
- Account for transaction fees
-
Address Validation
- Validate recipient addresses
- Double-check mint addresses
- Use address checksums
-
Transaction Management
- Monitor transaction status
- Implement retry logic
- Handle timeouts appropriately
-
Security
- Verify recipient addresses carefully
- Implement confirmation dialogs
- Consider using transaction previews
Common Token Addresses
- SOL: Native token (no mint address needed)
- USDC:
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
- USDT:
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
- BONK:
DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263