Overview
This guide covers testing crypto transactions in the Yativo Crypto sandbox. You can test sending testnet tokens, estimating gas fees, and querying transaction history — all without spending real funds.
Sandbox base URL: https://crypto-sandbox.yativo.com/api/
The sandbox uses testnet blockchains. Never send real mainnet tokens to sandbox wallet addresses. All sandbox transactions use valueless testnet tokens.
Get Gas Fee Estimate
Before sending a transaction, estimate the gas fee required.
GET https://crypto-sandbox.yativo.com/api/transactions/fee-estimate
Blockchain network. Example: solana, ethereum, polygon.
Token to be sent. Example: USDC, ETH, SOL.
Amount to be sent (used for accurate fee estimation on some chains).
Solana USDC fee estimate
Ethereum ETH fee estimate
curl -X GET 'https://crypto-sandbox.yativo.com/api/transactions/fee-estimate?chain=solana&token=USDC&amount=50' \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN'
Solana (low fees)
Ethereum (higher fees)
{
"status" : "success" ,
"data" : {
"chain" : "solana" ,
"token" : "USDC" ,
"network" : "devnet" ,
"estimated_fee" : 0.000025 ,
"fee_token" : "SOL" ,
"fee_usd_equivalent" : 0.004 ,
"estimated_confirmation_time_seconds" : 15
}
}
Send a Transaction
Send testnet tokens from your sandbox wallet to another address.
POST https://crypto-sandbox.yativo.com/api/transactions/send
The wallet ID to send funds from.
The destination wallet address (must be a valid testnet address for the specified chain).
The blockchain to use for the transaction.
Optional memo or note attached to the transaction.
Send USDC on Solana Devnet
Send ETH on Sepolia
curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/send' \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"from_wallet_id": "wlt_sandbox_01HX9KZMB3F7VNQP8R2WDGT010",
"to_address": "9gHp7qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5Cx",
"chain": "solana",
"token": "USDC",
"amount": 25.00,
"memo": "Test payment"
}'
Transaction Submitted
Insufficient Balance
{
"status" : "success" ,
"data" : {
"transaction_id" : "txn_sandbox_01HX9KZMB3F7VNQP8R2WDGT100" ,
"from_wallet_id" : "wlt_sandbox_01HX9KZMB3F7VNQP8R2WDGT010" ,
"to_address" : "9gHp7qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5Cx" ,
"chain" : "solana" ,
"token" : "USDC" ,
"amount" : 25.00 ,
"fee" : 0.000025 ,
"fee_token" : "SOL" ,
"status" : "pending" ,
"tx_hash" : "4xKp9qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5CxABCDEFGHIJKL" ,
"network" : "devnet" ,
"created_at" : "2026-03-25T11:00:00Z" ,
"block_explorer_url" : "https://explorer.solana.com/tx/4xKp9qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5CxABCDEFGHIJKL?cluster=devnet"
}
}
Get a Single Transaction
Retrieve the status and details of a specific transaction.
GET https://crypto-sandbox.yativo.com/api/transactions/{transactionId}
The transaction ID returned when the transaction was submitted.
curl -X GET 'https://crypto-sandbox.yativo.com/api/transactions/txn_sandbox_01HX9KZMB3F7VNQP8R2WDGT100' \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN'
{
"status" : "success" ,
"data" : {
"transaction_id" : "txn_sandbox_01HX9KZMB3F7VNQP8R2WDGT100" ,
"type" : "send" ,
"from_wallet_id" : "wlt_sandbox_01HX9KZMB3F7VNQP8R2WDGT010" ,
"to_address" : "9gHp7qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5Cx" ,
"chain" : "solana" ,
"token" : "USDC" ,
"amount" : 25.00 ,
"fee" : 0.000025 ,
"fee_token" : "SOL" ,
"status" : "completed" ,
"tx_hash" : "4xKp9qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5CxABCDEFGHIJKL" ,
"block_number" : 289547123 ,
"network" : "devnet" ,
"created_at" : "2026-03-25T11:00:00Z" ,
"confirmed_at" : "2026-03-25T11:00:18Z"
}
}
List Transactions
Retrieve a paginated list of all transactions for your sandbox account.
GET https://crypto-sandbox.yativo.com/api/transactions
Results per page. Default: 20. Max: 100.
Pagination offset. Default: 0.
Filter by blockchain. Example: solana, ethereum.
Filter by token symbol. Example: USDC, ETH.
Filter by transaction type: send, receive, swap, fee.
Filter by status: pending, completed, failed.
List recent completed transactions
Filter by chain and token
curl -X GET 'https://crypto-sandbox.yativo.com/api/transactions?limit=10&status=completed' \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN'
{
"status" : "success" ,
"data" : {
"transactions" : [
{
"transaction_id" : "txn_sandbox_01HX9KZMB3F7VNQP8R2WDGT100" ,
"type" : "send" ,
"chain" : "solana" ,
"token" : "USDC" ,
"amount" : 25.00 ,
"status" : "completed" ,
"to_address" : "9gHp7qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5Cx" ,
"tx_hash" : "4xKp9qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5CxABCDEFGHIJKL" ,
"created_at" : "2026-03-25T11:00:00Z"
},
{
"transaction_id" : "txn_sandbox_01HX9KZMB3F7VNQP8R2WDGT099" ,
"type" : "receive" ,
"chain" : "solana" ,
"token" : "USDC" ,
"amount" : 100.00 ,
"status" : "completed" ,
"from_address" : "3mBc4qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5Cx" ,
"tx_hash" : "8yLp5qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5CxMNOPQRSTUVWX" ,
"created_at" : "2026-03-25T10:30:00Z"
}
],
"total" : 2 ,
"limit" : 10 ,
"offset" : 0
}
}
Transaction Status Values
Status Description pendingTransaction has been submitted to the blockchain and is awaiting confirmation. completedTransaction has been confirmed on the blockchain. failedTransaction failed — could be due to insufficient gas, network error, or rejected.
Testing Tips
Testing insufficient balance errors
Try sending more than your wallet balance to verify your application handles the INSUFFICIENT_BALANCE error gracefully. curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/send' \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"from_wallet_id": "wlt_sandbox_01HX9KZMB3F7VNQP8R2WDGT010",
"to_address": "9gHp7qLmKv3xFjNw4aBcYhUeT8sGkZoP2iMnDuWr5Cx",
"chain": "solana",
"token": "USDC",
"amount": 99999999.00
}'
Testing with invalid addresses
Submit a transaction to a malformed address to verify validation error handling: curl -X POST 'https://crypto-sandbox.yativo.com/api/transactions/send' \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"from_wallet_id": "wlt_sandbox_01HX9KZMB3F7VNQP8R2WDGT010",
"to_address": "invalid_address_format",
"chain": "solana",
"token": "USDC",
"amount": 1.00
}'
After submitting a transaction, poll the transaction status until it confirms: # Poll every 10 seconds until status == "completed"
while true ; do
STATUS = $( curl -s -X GET "https://crypto-sandbox.yativo.com/api/transactions/txn_sandbox_01HX9KZMB3F7VNQP8R2WDGT100" \
-H 'Authorization: Bearer YOUR_SANDBOX_TOKEN' | jq -r '.data.status' )
echo "Status: $STATUS "
if [ " $STATUS " = "completed" ] || [ " $STATUS " = "failed" ]; then
break
fi
sleep 10
done