API ReferenceRates and Banks
API REFERENCE

Rates and Banks

Payout countries, exchange rate quotes and the list of supported banks.

Get Countries

Get the countries you can pay out to, with the current USD rate for each.

POST/getCountriesgetCountries@getCountries

Request Body

FieldTypeRequiredDescription
paramsobjectYesParameters for the operation. Send {} if there are none.

Request Body Example

json
{
  "jsonrpc": "2.0",
  "method": "getCountries@getCountries",
  "params": {},
  "id": "1"
}

JSON-RPC response

Response Fields

FieldTypeDescription
resultobjectOperation result
result.countriesarray<object>Countries you can pay out to
result.countries[].countryNamestringCountry name
result.countries[].currencyCodestringISO currency code
result.countries[].conversionRatenumberUSD rate for the local currency

Example Response

json
{
  "jsonrpc": "2.0",
  "result": {
    "countries": [
      {
        "conversionRate": 129.5,
        "countryName": "Kenya",
        "currencyCode": "KES"
      }
    ]
  },
  "id": "1"
}

The bearer token is missing, invalid or expired. The response is plain JSON with HTTP 401, not a JSON-RPC envelope. Log in again and retry once.

Response Fields

FieldTypeDescription
statusstringAlways 401.
messagestringError message

Example Response

json
{
  "status": 401,
  "message": "Failed, Not authorized"
}

Get Conversion Rate Fee and Amount

Get the rate, your fee and the payout amount for a given send amount.

POST/getConversionRateFeeAndAmountrates@getConversionRateFeeAndAmount

Request Body

FieldTypeRequiredDescription
paramsobjectYesParameters for the operation. Send {} if there are none.
currencyCodestringYesRecipient currency One of: KES, USD.
senderAmountnumberYesAmount in the sender currency
senderCurrencystringYesSender currency One of: KES, USD.

Request Body Example

json
{
  "jsonrpc": "2.0",
  "method": "rates@getConversionRateFeeAndAmount",
  "params": {
    "currencyCode": "KES",
    "senderAmount": 100,
    "senderCurrency": "USD"
  },
  "id": "1"
}
Error codeMessage
400Can only send KES or USD
400Recipient currency not available for inbound transactions
400Error getting currency details (no active rate configured)

Response Fields

FieldTypeDescription
resultobjectOperation result
result.ratenumberRate applied (1 if both currencies are the same)
result.amountnumberConverted amount including localFee
result.localFeenumberFee charged for this amount
result.currencyCodestringRecipient currency

Example Response — Quote

json
{
  "jsonrpc": "2.0",
  "result": {
    "amount": 12980,
    "currencyCode": "KES",
    "localFee": 30,
    "rate": 129.5
  },
  "id": "1"
}

Example Response — Unsupported Currency

json
{
  "jsonrpc": "2.0",
  "error": {
    "code": 400,
    "message": "Can only send KES or USD"
  },
  "id": "1"
}

The bearer token is missing, invalid or expired. The response is plain JSON with HTTP 401, not a JSON-RPC envelope. Log in again and retry once.

Response Fields

FieldTypeDescription
statusstringAlways 401.
messagestringError message

Example Response

json
{
  "status": 401,
  "message": "Failed, Not authorized"
}

Get All Banks

Get the Kenyan banks you can send to. Use code as destination_bank_code in bank lookups and transfers. The list rarely changes. Cache it and refresh it daily.

POST/banksbanks@getAllBanks

Request Body

FieldTypeRequiredDescription
paramsobjectYesParameters for the operation. Send {} if there are none.

Request Body Example

json
{
  "jsonrpc": "2.0",
  "method": "banks@getAllBanks",
  "params": {},
  "id": "1"
}

JSON-RPC response

Response Fields

FieldTypeDescription
resultarray<object>Operation result
result[].idintegerInternal ID
result[].namestringBank name
result[].codestringBank code to send in requests

Example Response

json
{
  "jsonrpc": "2.0",
  "result": [
    {
      "id": 1,
      "name": "Kenya Commercial Bank Limited",
      "code": "40401000"
    },
    {
      "id": 2,
      "name": "Standard Chartered Bank Kenya Limited",
      "code": "40402000"
    },
    {
      "id": 3,
      "name": "Absa Bank Kenya PLC",
      "code": "40403000"
    }
  ],
  "id": "1"
}

The bearer token is missing, invalid or expired. The response is plain JSON with HTTP 401, not a JSON-RPC envelope. Log in again and retry once.

Response Fields

FieldTypeDescription
statusstringAlways 401.
messagestringError message

Example Response

json
{
  "status": 401,
  "message": "Failed, Not authorized"
}
© 2026 Afrisend