Skip to content

Account, balance and banks

Who the key belongs to, its limits and today's usage, the balance payouts are paid from, and the bank codes payouts accept.

Call GET /api/v1/account first in any integration: it confirms the key works, tells you whether it's test or live, and returns your limits and what you have left today.

Send your API key as Authorization: Bearer apk_test_… (sandbox) or apk_live_… (live). Each endpoint lists the scope the key needs. See API keys.

Get the account

GET/api/v1/account
API keyaccount:read

The workspace and key behind this request, your limits, and how much of today's and this month's limit you've used.

Request
curl "https://api.autopayke.com/api/v1/account" \
  -H "Authorization: Bearer $AUTOPAYKE_API_KEY"
Response200 application/json
{
  "ok": true,
  "data": {
    "object": "account",
    "livemode": false,
    "workspace": {
      "id": "2f6c1a4e-7b3d-4e58-9c21-5a8d0e7f3b64",
      "name": "Acme Payroll",
      "kind": "merchant",
      "tier": "starter",
      "live_access": true
    },
    "key": {
      "prefix": "apk_test_7Hq2aB",
      "name": "Production server",
      "scopes": [
        "account:read",
        "payouts:read",
        "payouts:write"
      ],
      "expires_at": "2027-11-03T09:10:00.000Z"
    },
    "limits": {
      "per_payout_kes": 150000,
      "daily_kes": 1000000,
      "monthly_kes": 10000000,
      "requests_per_second": 10,
      "methods": [
        "mobile_money",
        "till",
        "paybill",
        "bank"
      ],
      "countries": [
        "KE"
      ]
    },
    "usage": {
      "today_kes": 45000,
      "this_month_kes": 820000,
      "remaining_today_kes": 955000,
      "remaining_this_month_kes": 9180000
    }
  }
}
Response fields
  • livemodeboolean

    true for an apk_live_ key.

  • workspaceobject

    id, name, kind (personal, merchant or organization), tier (sandbox, starter, growth, enterprise) and live_access.

  • keyobject

    The calling key: prefix (first 16 characters), name, scopes and expires_at.

  • limitsobject

    Limits in whole KES (not cents): per_payout_kes, daily_kes, monthly_kes, requests_per_second, the payout methods and countries you may use.

  • usageobject

    Whole KES paid out today and this month (Nairobi time), and what's left of each limit.

  • Limits here are in whole shillings, unlike payout amounts, which are cents.
  • Days and months follow Africa/Nairobi time.

Get the balance

GET/api/v1/balance
API keybalance:read

What your payouts are paid from. Live: the workspace's USDC and USDT on Avalanche C-Chain and the wallet address to fund it. Test: your sandbox balance of free test USDC.

Request
curl "https://api.autopayke.com/api/v1/balance" \
  -H "Authorization: Bearer $AUTOPAYKE_API_KEY"
Response200 application/json
{
  "ok": true,
  "data": {
    "object": "balance",
    "livemode": true,
    "wallet_address": "0x4B2e8F1a9C3d7E6b5A0f2D8c1E9b3A7d6F4c2E10",
    "usdc": "1520.402100",
    "usdt": "0.000000",
    "total_usd": "1520.40"
  }
}
Response fields
  • wallet_addressstring

    Live only. Send USDC or USDT on Avalanche C-Chain here to fund payouts.

  • usdcstring

    USDC balance, 6 decimal places.

  • usdtstring

    USDT balance, 6 decimal places. Always 0 in the sandbox.

  • total_usdstring

    Both together, 2 decimal places.

  • Payouts are paid from USDC today. Check total_usd before a large batch, or listen for the balance.low webhook.

List banks

GET/api/v1/banks
API key

Kenyan banks you can pay out to, with the bank_code a bank destination needs. Cache it for a day.

Request
curl "https://api.autopayke.com/api/v1/banks" \
  -H "Authorization: Bearer $AUTOPAYKE_API_KEY"
Response200 application/json
{
  "ok": true,
  "data": {
    "object": "list",
    "data": [
      {
        "code": "KCBLKENX",
        "name": "KCB Bank"
      },
      {
        "code": "EQBLKENA",
        "name": "Equity Bank"
      },
      {
        "code": "KCOOKENA",
        "name": "Co-operative Bank"
      }
    ]
  }
}
  • Any valid key can call this; no scope needed.