Skip to main content
GET
/
payments-tsq-service
/
v1
/
wallet-balances
Get wallet balances
curl --request GET \
  --url https://sandbox.waftpay.io/api/payments-tsq-service/v1/wallet-balances \
  --header 'Authorization: Bearer <token>'
{
  "code": 200,
  "status": "SUCCESS",
  "description": "Request processed successfully",
  "results": [
    {}
  ]
}
Fetch wallet balances associated with the product tied to your token (e.g., Collections, Payouts). Optionally filter by a specific currency (e.g., KES). If omitted, all balances for the product are returned.
Base URL (Sandbox) {{payments_tsq_base_url}}

Endpoint

GET /payments-tsq-service/v1/wallet-balances?currency={CURRENCY}

Example request

curl -X GET \
  'https://sandbox.waftpay.io/api/payments-tsq-service/v1/wallet-balances?currency=KES' \
  -H 'Authorization: Bearer <access_token>'

Authentication

This endpoint requires a Bearer token that is scoped to the product you are querying (e.g., a Collections token can only view Collections balances; a Payouts token can only view Payouts balances).
Authorization: Bearer <access_token>
If the token is invalid, expired, or not authorized for the requested product, you’ll receive 401 Unauthorized.

Query parameters

NameInTypeRequiredDescription
currencyquerystringNoISO currency code (e.g., KES, UGX). If omitted, returns all balances for the product tied to your token.

Successful responses

200 OK — All balances (no filter)

{
  "code": 200,
  "status": "SUCCESS",
  "description": "Request processed successfully",
  "results": [
    {
      "currency": "KES",
      "actual_balance": 10010110.0,
      "available_balance": 10010110.0,
      "alert_limit": 0.0,
      "status": "ACTIVE"
    }
  ]
}

200 OK — Specific currency (present)

{
  "code": 200,
  "status": "SUCCESS",
  "description": "Request processed successfully",
  "results": [
    {
      "currency": "UGX",
      "actual_balance": 12345.0,
      "available_balance": 12345.0,
      "alert_limit": 0.0,
      "status": "ACTIVE"
    }
  ]
}
Notes
  • actual_balance is the total ledger balance.
  • available_balance is the spendable amount after holds/reserves.
  • alert_limit is your configured low-balance threshold (if any).
  • status reflects wallet state (e.g., ACTIVE, INACTIVE, SUSPENDED).

Error responses

404 Not Found — Currency not provisioned for this product

{
  "code": 404,
  "status": "FAILED",
  "description": "Balances not found",
  "results": {}
}

401 Unauthorized — Bad/expired token or wrong scope

{
  "code": 401,
  "status": "FAILED",
  "description": "Unauthorized",
  "results": {}
}

Behavior & constraints

  • Product scoping: The Bearer token determines which product’s wallets are visible (e.g., Collections vs Payouts).
  • Filtering: currency is optional; when omitted, all provisioned wallets for the token’s product are returned.
  • Idempotency: This is a GET and does not change state; no idempotency key required.
  • Caching: Avoid caching balances client‑side if you need real‑time accuracy.
  • Rate limits: Standard platform rate limits apply. Handle 429 with retries and backoff.
  • Currency codes: Must be ISO 4217 uppercase; unrecognized codes return 404 or an empty list depending on provisioning.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

currency
string

ISO currency code to filter the balance (e.g., KES, UGX, USD).

Example:

"KES"

Response

Balances fetched successfully

code
integer
required
Example:

200

status
string
required
Example:

"SUCCESS"

description
string
required
Example:

"Request processed successfully"

results
object[]
required