Skip to main content

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
chain
string
required
Blockchain network. Example: solana, ethereum, polygon.
token
string
required
Token to be sent. Example: USDC, ETH, SOL.
amount
number
required
Amount to be sent (used for accurate fee estimation on some chains).
curl -X GET 'https://crypto-sandbox.yativo.com/api/transactions/fee-estimate?chain=solana&token=USDC&amount=50' \
  -H 'Authorization: Bearer YOUR_SANDBOX_TOKEN'
{
  "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
from_wallet_id
string
required
The wallet ID to send funds from.
to_address
string
required
The destination wallet address (must be a valid testnet address for the specified chain).
chain
string
required
The blockchain to use for the transaction.
token
string
required
The token to send.
amount
number
required
The amount to send.
memo
string
Optional memo or note attached to the transaction.
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"
  }'
{
  "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}
transactionId
string
required
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
limit
integer
Results per page. Default: 20. Max: 100.
offset
integer
Pagination offset. Default: 0.
chain
string
Filter by blockchain. Example: solana, ethereum.
token
string
Filter by token symbol. Example: USDC, ETH.
type
string
Filter by transaction type: send, receive, swap, fee.
status
string
Filter by status: pending, completed, failed.
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

StatusDescription
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

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
  }'
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