Token Support and Discovery

Why doesn’t /assets/list return Solana tokens?

The /assets/list endpoint currently only returns EVM tokens. For Solana tokens, you need to use specific asset IDs in CAIP-19 format:
# SOL (Solana native token)
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501

# USDC on Solana
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

# JUP token on Solana
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
We’re working on expanding our aggregated asset list to include more tokens across all chains, including Solana. This will improve asset discovery significantly.

Which Solana tokens are currently supported?

OneBalance supports any Solana token that exists on the network, but currently offers aggregated assets for major tokens: Current Aggregated Assets:
  • SOL: Native Solana token (ob:sol)
  • USDC: USD Coin on Solana (ob:usdc)
Any Other Token: You can use any Solana token by specifying its CAIP-19 asset ID:
  • Format: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:TOKEN_ADDRESS
  • For SOL: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501
For token metadata (names, symbols, images), we recommend using third-party services, then combining that data with OneBalance for quotes and executions.

API Key Configuration

Why don’t Solana operations work with my custom API key?

Solana support must be explicitly enabled for custom API keys. By default, new API keys only have EVM chain access. Solutions:
  1. Contact support to enable Solana for your API key
  2. Use the public API key for testing: 42bb629272001ee1163ca0dbbbc07bcbb0ef57a57baf16c4b1d4672db4562c11
The public API key has rate limits and should only be used for testing and development, not production applications.

How do I request Solana access for my API key?

Contact our support team with your API key prefix: Enablement is typically completed within 24 hours.

Asset ID Formats

When should I use aggregated vs specific asset IDs?

Use Aggregated Assets (ob:*) when:
  • You want to spend from combined balances across all chains
  • Working with major tokens (USDC, SOL, ETH, etc.)
  • Building simplified UX where users don’t care about specific chains
{
  asset: { assetId: "ob:usdc" } // Spends USDC from any supported chain
}
Use Specific Assets (CAIP-19) when:
  • You need to spend from a specific chain
  • Working with tokens not yet aggregated
  • Building advanced UX where chain selection matters
{
  asset: { assetId: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }
}

How do I find the CAIP-19 asset ID for a Solana token?

Format: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:TOKEN_MINT_ADDRESS For SOL (native token): solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501 For SPL tokens:
  1. Find the token mint address (from Solana Explorer, Jupiter, etc.)
  2. Use format: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:MINT_ADDRESS
Examples:
  • USDC: ...token:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
  • JUP: ...token:JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN

Cross-Chain Operations

Can I use Solana with EVM accounts in the same operation?

Yes! This is one of OneBalance’s key features. You can use multiple account types in a single transaction:
{
  "from": {
    "accounts": [
      // EVM smart account
      {
        "type": "kernel-v3.1-ecdsa",
        "accountAddress": "0x...",
        "deploymentType": "ERC4337",
        "signerAddress": "0x..."
      },
      // Solana account
      {
        "type": "solana",
        "accountAddress": "J5CCzBULFax899tcirb6wMbenQUd8whbaetG7EfSick5"
      }
    ],
    "asset": { "assetId": "ob:usdc" }, // Spends from both chains
    "amount": "1000000"
  }
}
This enables:
  • EVM → Solana: Use EVM tokens to buy Solana assets
  • Solana → EVM: Use Solana tokens to buy EVM assets
  • Aggregated spending: Use combined balances optimally

Which v3 endpoints do I need for Solana?

Solana requires v3 API endpoints that support multiple accounts:
v1 endpoints only support single EVM accounts and cannot be used with Solana.

Integration Issues

My Solana wallet signing isn’t working

Common Issues:
  1. Incorrect data format: Ensure you’re converting base64 data to MessageV0
  2. Wrong signature encoding: Use bs58.encode() for signatures
  3. Wallet not connected: Check wallet.connected before signing
Correct signing pattern:
import { MessageV0, VersionedTransaction } from '@solana/web3.js';
import bs58 from 'bs58';

async function signSolanaOperation(dataToSign: string, wallet: any) {
  // 1. Convert base64 to Message
  const message = MessageV0.deserialize(Buffer.from(dataToSign, 'base64'));
  
  // 2. Create versioned transaction
  const transaction = new VersionedTransaction(message);
  
  // 3. Sign with wallet
  const signedTx = await wallet.signTransaction(transaction);
  
  // 4. Extract signature in base58
  return bs58.encode(Buffer.from(signedTx.signatures[signedTx.signatures.length - 1]));
}

Why am I getting “insufficient balance” errors?

Check these common causes:
  1. Wrong asset ID: Ensure you’re using correct CAIP-19 format
  2. No SOL for gas: Fund account with ~0.005 SOL
  3. API key not enabled: Verify Solana is enabled for your API key
  4. Decimals mismatch: Check token decimals (SOL = 9, USDC = 6)
Debug with balance check:
curl -X GET 'https://be.onebalance.io/api/v3/balances/aggregated-balance?account=solana:YOUR_ADDRESS&aggregatedAssetId=ob:sol,ob:usdc' \
  -H 'x-api-key: YOUR_API_KEY'

Getting Help

For additional support:
  • Intercom chat (bottom right corner) for instant help
  • Email: support@onebalance.io
  • Join our Discord: Community support and updates