Lister les pays et opérateurs
curl --request GET \
--url https://api.kemypay.com/v1/mobile-money/countries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.kemypay.com/v1/mobile-money/countries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.kemypay.com/v1/mobile-money/countries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kemypay.com/v1/mobile-money/countries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kemypay.com/v1/mobile-money/countries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kemypay.com/v1/mobile-money/countries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kemypay.com/v1/mobile-money/countries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": [
{
"country": "CMR",
"name": "Cameroon",
"currencies": [
"XAF"
],
"operators": [
{
"operator": "MTN_CMR",
"name": "MTN",
"currency": "XAF",
"decimals": 0,
"collection": {
"status": "operational",
"available": true,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "3.25",
"fixed_tiers": [],
"fixed_currency": null
}
},
"payout": {
"status": "operational",
"available": true,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "2.3",
"fixed_tiers": [],
"fixed_currency": null
}
},
"refund": {
"status": "operational",
"available": false,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": null
}
},
{
"operator": "ORANGE_CMR",
"name": "Orange",
"currency": "XAF",
"decimals": 0,
"collection": {
"status": "closed",
"available": false,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "3.27",
"fixed_tiers": [],
"fixed_currency": null
}
},
"payout": {
"status": "operational",
"available": true,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "2",
"fixed_tiers": [],
"fixed_currency": null
}
},
"refund": {
"status": "operational",
"available": false,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": null
}
}
]
}
],
"meta": {
"request_id": "a4f8e2c1b3d97056",
"timestamp": "2026-10-29T10:00:00+00:00",
"mode": "live"
}
}{
"success": false,
"error": {
"code": "COUNTRY_NOT_SUPPORTED",
"message": "Mobile money is not available in GHA for your account."
},
"meta": {
"request_id": "a4f8e2c1b3d97056",
"timestamp": "2026-10-29T10:00:00+00:00",
"mode": "live"
}
}Catalog
List Countries and Operators
Countries available to your account, with their operators. For each operator and currency, collection,
payout and refund give the live status, whether the operation is available right now, the minimum and
maximum amount per transaction, and your all-in price (fee).
- Operator data is refreshed every 10 minutes. Cache it for a few minutes on your side.
- Show an operator to your customer only when
collection.availableistrue. - Round amounts to the
decimalsof the operator: it can differ between operators of the same currency. - Payouts and refunds are not open yet: their status is shown for information.
GET
/
mobile-money
/
countries
Lister les pays et opérateurs
curl --request GET \
--url https://api.kemypay.com/v1/mobile-money/countries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.kemypay.com/v1/mobile-money/countries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.kemypay.com/v1/mobile-money/countries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kemypay.com/v1/mobile-money/countries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.kemypay.com/v1/mobile-money/countries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.kemypay.com/v1/mobile-money/countries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kemypay.com/v1/mobile-money/countries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": [
{
"country": "CMR",
"name": "Cameroon",
"currencies": [
"XAF"
],
"operators": [
{
"operator": "MTN_CMR",
"name": "MTN",
"currency": "XAF",
"decimals": 0,
"collection": {
"status": "operational",
"available": true,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "3.25",
"fixed_tiers": [],
"fixed_currency": null
}
},
"payout": {
"status": "operational",
"available": true,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "2.3",
"fixed_tiers": [],
"fixed_currency": null
}
},
"refund": {
"status": "operational",
"available": false,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": null
}
},
{
"operator": "ORANGE_CMR",
"name": "Orange",
"currency": "XAF",
"decimals": 0,
"collection": {
"status": "closed",
"available": false,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "3.27",
"fixed_tiers": [],
"fixed_currency": null
}
},
"payout": {
"status": "operational",
"available": true,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": {
"percent": "2",
"fixed_tiers": [],
"fixed_currency": null
}
},
"refund": {
"status": "operational",
"available": false,
"min_amount": "1.00",
"max_amount": "1000000.00",
"fee": null
}
}
]
}
],
"meta": {
"request_id": "a4f8e2c1b3d97056",
"timestamp": "2026-10-29T10:00:00+00:00",
"mode": "live"
}
}{
"success": false,
"error": {
"code": "COUNTRY_NOT_SUPPORTED",
"message": "Mobile money is not available in GHA for your account."
},
"meta": {
"request_id": "a4f8e2c1b3d97056",
"timestamp": "2026-10-29T10:00:00+00:00",
"mode": "live"
}
}Authorizations
Votre clé API secrète : sk_live_… (argent réel) ou sk_test_… (mode test).
Query Parameters
Seulement ce pays (ISO 3166-1 alpha-3, par exemple CMR).
Pattern:
^[A-Za-z]{3}$Example:
"CMR"