Référence de l’API
Compte marchand
Le compte auquel appartient la clé qui signe la requête.
Lire le profil du compte
GET/v1/merchant
Le compte auquel appartient la clé : statut, offre et comptes de reversement. Permet de vérifier qu'un compte est activé avant d'encaisser en live.
Réponse
Code 200, avec les champs suivants.
merchant_refchaînerequis- Référence du compte marchand.
display_namechaînerequis- Nom affiché aux payeurs.
merchant_codechaîne ou null- Code court imprimé sur les reçus. null tant que le compte n'est pas activé.
statuschaînerequis- pending, in_review, active, rejected ou suspended. Les clés live n'encaissent qu'au statut active.
planchaîne- Offre : standard ou pro.défaut : standard
account_typechaîne ou null- personne_morale ou developpeur. null tant que non déclaré.
profile_completebooléen- Profil d'identification complet.défaut : false
payout_methodsliste de objetrequis- Comptes de reversement.
payout_methods[].idUUIDrequis- Identifiant du compte de reversement.
payout_methods[].currencychaînerequis- Devise du compte.
payout_methods[].railchaînerequis- Canal de reversement.valeurs : mpesa
payout_methods[].beneficiary_refchaînerequis- Numéro du bénéficiaire.
payout_methods[].labelchaîne ou null- Libellé choisi par le marchand.
payout_methods[].statuschaînerequis- pending_verification ou verified.
payout_methods[].is_defaultbooléenrequis- Compte utilisé par défaut.
payout_methods[].verified_atdate-heure ou null- Date de vérification (UTC, ISO 8601).
Erreurs
401Authentification manquante ou invalide.404Aucun profil marchand pour cette clé.
Forme commune et conduite à tenir : les erreurs.
GET /v1/merchant
KEY="ak_sandbox"
SECRET="sk_sandbox_demo"
P="/v1/merchant"
TS=$(date +%s)
SIG=$(printf '%s' "$TS.GET.$P.." \
| openssl dgst -sha256 -hmac "$SECRET" | sed 's/^.*= //')
curl "https://sandbox.inopas.net$P" \
-H "X-Inopas-Key: $KEY" \
-H "X-Inopas-Timestamp: $TS" \
-H "X-Inopas-Signature: sha256=$SIG"import { createHmac } from "node:crypto";
const KEY = "ak_sandbox";
const SECRET = "sk_sandbox_demo";
const path = "/v1/merchant"; // signé sans la query string
const ts = String(Math.floor(Date.now() / 1000));
const sig = createHmac("sha256", SECRET)
.update(`${ts}.GET.${path}..`)
.digest("hex");
const res = await fetch(`https://sandbox.inopas.net${path}`, {
headers: {
"X-Inopas-Key": KEY,
"X-Inopas-Timestamp": ts,
"X-Inopas-Signature": `sha256=${sig}`,
},
});
console.log(res.status, await res.json());import hashlib, hmac, json, time, urllib.error, urllib.request
KEY = "ak_sandbox"
SECRET = b"sk_sandbox_demo"
path = "/v1/merchant" # signé sans la query string
body = b""
idem = ""
ts = str(int(time.time()))
sig = hmac.new(SECRET, f"{ts}.GET.{path}.{idem}.".encode() + body, hashlib.sha256).hexdigest()
entetes = {"X-Inopas-Key": KEY, "X-Inopas-Timestamp": ts, "X-Inopas-Signature": "sha256=" + sig}
req = urllib.request.Request("https://sandbox.inopas.net" + path, headers=entetes)
try:
with urllib.request.urlopen(req) as resp:
print(resp.status, json.load(resp))
except urllib.error.HTTPError as e:
print(e.code, json.load(e))Réponse 200
HTTP/2 200
{
"merchant_ref": "sandbox",
"display_name": "Boutique Kin",
"merchant_code": "BKN-4021",
"status": "active",
"plan": "standard",
"account_type": "personne_morale",
"profile_complete": true,
"payout_methods": [
{
"id": "35e96a9c-16cf-4f2d-bcc9-0b6f21ea8bac",
"currency": "CDF",
"rail": "mpesa",
"beneficiary_ref": "+243820000000",
"label": "Compte principal",
"status": "verified",
"is_default": true,
"verified_at": "2026-08-25T17:46:03.968105Z"
}
]
}