Putting it together: token → signed request → response.
# 1. Get a token (see Access Tokens)
TOKEN=$(curl -s -X POST https://v4api.pokeapay.com/api/v4/auth/token -H 'Content-Type: application/json' \
-d "$AUTH_PROOF" | jq -r .access_token)
# 2. Signed call — canonical fields: accountNo, currency (route params) + nonce + ts
curl https://v4api.pokeapay.com/api/v4/accounts/ACC-1001/balance/KES \
-H "Authorization: Bearer $TOKEN" \
-H "X-PP-Signature: $SIGNATURE" \
-H "X-PP-Nonce: $NONCE" \
-H "X-PP-Timestamp: $TS"
Response — 200
{
"account_no": "ACC-1001",
"currency": "KES",
"balance_minor": 1254500
}
That is KES 12,545.00 — remember, integer minor units everywhere. If you get a 401/403/409, check the three factors in order: bearer token valid? calling IP whitelisted? signature canonical built correctly with a fresh nonce?