> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onebalance.io/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ: Solana

> Frequently asked questions about Solana integration with OneBalance, covering token support, API configuration, limitations, and troubleshooting.

## 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:

```bash theme={null}
# SOL (Solana native token)
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501

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

# JUP token on Solana
solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
```

<Info>
  We're working on expanding our aggregated asset list to include more tokens across all chains, including Solana. This will improve asset discovery significantly.
</Info>

### 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`

<Tip>
  For token metadata (names, symbols, images), we recommend using third-party services, then combining that data with OneBalance for quotes and executions.
</Tip>

## 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`

<Warning>
  The public API key has rate limits and should only be used for testing and development, not production applications.
</Warning>

### How do I request Solana access for my API key?

Contact our support team with your API key prefix:

* **Intercom chat**: Use the widget in the bottom right corner
* **Email**: [support@onebalance.io](mailto:support@onebalance.io)

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

```javascript theme={null}
{
  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

```javascript theme={null}
{
  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:

```javascript theme={null}
{
  "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:

* [Get Quote v3](/api-reference/quotes/get-quote-v3) - `POST /api/v3/quote`
* [Execute Quote v3](/api-reference/quotes/execute-quote-v3) - `POST /api/v3/quote/execute`
* [Aggregated Balance v3](/api-reference/balances/aggregated-balance-v3) - `GET /api/v3/balances/aggregated-balance`
* [Transaction History v3](/api-reference/status/get-transaction-history-v3) - `GET /api/v3/status/get-transaction-history`
* [Quote Status v3](/api-reference/status/get-quote-status-v3) - `GET /api/v3/status/get-execution-status`

<Warning>
  v1 endpoints only support single EVM accounts and cannot be used with Solana.
</Warning>

## 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:**

```typescript theme={null}
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:**

```bash theme={null}
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

<CardGroup cols={3}>
  <Card title="Solana Examples" icon="code" href="/guides/solana/examples">
    Complete working examples for all Solana operations
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/guides/solana/troubleshooting">
    Common issues and detailed debugging steps
  </Card>

  <Card title="API Reference" icon="terminal" href="/api-reference/introduction">
    Full API documentation with Solana-specific notes
  </Card>
</CardGroup>

<Info>
  For additional support:

  * **Intercom chat** (bottom right corner) for instant help
  * **Email**: [support@onebalance.io](mailto:support@onebalance.io)
  * **Join our Discord**: Community support and updates
</Info>
