Skip to main content
L’API Marchand Kori permet à votre application d’encaisser des paiements auprès de vos clients, de verser des fonds, de lancer des payouts et des paiements en masse, de créer des liens de paiement et de gérer votre équipe — le tout en mobile money (Orange Money, Wave, Moov). Tout ce qui est documenté ici s’utilise avec une clé API marchand, avec exactement les permissions (« scopes ») affichées dans l’écran Clés API de votre tableau de bord Kori.
Tous les montants sont en XOF (franc CFA ouest-africain), la devise dans laquelle les opérateurs mobile money du Mali règlent. Le XOF n’a pas de sous-unité : 5000 signifie 5 000 francs — jamais des centimes. Le champ currency vaut XOF par défaut et c’est la seule valeur que l’API renvoie.Les minimums diffèrent selon le sens : 100 XOF pour encaisser un paiement, 1 000 XOF pour en envoyer un (payouts, paiements en masse et /deposit). En dessous, la requête est rejetée avec un 400 et un message indiquant le minimum.

Démarrage rapide

Effectuez votre première requête authentifiée en quelques minutes.

Authentification

Échangez votre clé et votre secret contre un token Bearer.

Scopes

Comprenez ce que chaque permission d’une clé API autorise.

Référence API

Référence complète des endpoints, avec les schémas de requête et de réponse.

URL de base

Tous les endpoints marchands sont servis sous le chemin /merchant/api, par exemple https://api.kori.ml/merchant/api/balance.

Fonctionnement

1

Créez une clé API

Dans le tableau de bord, ouvrez Clés API et créez une clé. Choisissez les scopes qu’elle doit porter (par exemple pay, balance, webhooks). Vous recevez une clé API (mk_...) et un secret (ms_...).
2

Obtenez un token

Appelez POST /merchant/api/auth avec votre clé et votre secret pour recevoir un token Bearer de courte durée portant vos scopes.
3

Appelez l'API

Envoyez le token dans Authorization: Bearer <token> à chaque requête. Chaque endpoint vérifie le scope qu’il exige.
4

Recevez les webhooks

Enregistrez un endpoint webhook pour être notifié quand un paiement est confirmé, qu’un payout aboutit, et plus encore.

Format des réponses

Toutes les réponses utilisent la même enveloppe :
En cas d’erreur, success vaut false et message explique le problème. Voir Erreurs.
Les encaissements sont asynchrones. POST /merchant/api/pay renvoie un 202 avec status: "pending" — le client a seulement reçu une demande de confirmation. Ne considérez une commande comme payée qu’après le webhook payment_received. Voir Webhooks.