Endpoint

GET https://api.rohopay.com/api/v1/wallet/balance
Authorization: Bearer {api_key}
No request body or query parameters required.

Response (200 OK)

{
  "success": true,
  "data": {
    "balance_live": 1250000,
    "balance_test": 500000,
    "currency": "UGX"
  }
}
FieldTypeDescription
balance_liveintegerLive wallet balance in UGX
balance_testintegerTest wallet balance (virtual, no real value)
currencystringAlways "UGX" currently

Caching Recommendations

Avoid fetching balance on every request. Cache the balance for 5–30 seconds server-side:
let cachedBalance: { value: number; expiry: number } | null = null;

async function getBalance(apiKey: string): Promise<number> {
  if (cachedBalance && Date.now() < cachedBalance.expiry) {
    return cachedBalance.value;
  }

  const res = await fetch("https://api.rohopay.com/api/v1/wallet/balance", {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const { data } = await res.json();

  cachedBalance = { value: data.balance_live, expiry: Date.now() + 15_000 };
  return data.balance_live;
}

Error Responses

HTTPCodeDescription
401UNAUTHORIZEDInvalid or missing API key
429RATE_LIMIT_EXCEEDEDToo many requests (100/min)