Documentation
Encaissez en Mobile Money ou par carte, et reversez vers un compte Mobile Money — avec une seule API.
Vous êtes sur WordPress ? Encaissez avec WooCommerce sans écrire de code.
Clés d’API
Sandbox- Clé d’API
- kpay_test_xxxxxxxxxxxxxxxx
- En-tête
- x-api-key
- URL de base
- https://test.admin.kpay.site
Une seule URL : la clé décide de l’environnement.
Données de test →Essayer
Choisissez la façon dont vous encaissez. Chaque parcours part de la même clé et de la même URL.
curl -X POST https://test.admin.kpay.site/api/v1/payments/init \
-H "x-api-key: kpay_test_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"externalId": "CMD-2026-001",
"returnUrl": "https://monsite.com/paiement/retour",
"description": "Commande #2026-001"
}'
# → { "mode": "GATEWAY", "gatewayUrl": "https://…/pay/gw_…" }
# Redirigez le client vers gatewayUrl.Parcourir par sujet
Démarrer
Encaisser
Reverser
Automatiser
Bon à savoir
Ce qui vaut pour tous les endpoints, quel que soit le parcours.
Format des réponses
Toutes les réponses sont en JSON. Une erreur porte toujours un `statusCode`, un `message` lisible et un libellé `error`.
{
"id": "pay_abc123",
"reference": "KPAY-20260514-ABC123",
"status": "PENDING",
"amount": 5000,
"currency": "XAF",
"externalId": "CMD-2026-001"
}{
"statusCode": 400,
"message": "Description lisible de l'erreur",
"error": "Bad Request"
}Codes HTTP
- 200
- OKRequête traitée.
- 201
- CreatedRessource créée (init de paiement ou de retrait).
- 400
- Bad RequestChamp manquant ou mal formé.
- 401
- UnauthorizedClé d’API absente, inconnue ou révoquée.
- 403
- ForbiddenClé valide mais non autorisée sur cette ressource.
- 404
- Not FoundRessource introuvable.
- 409
- ConflictexternalId déjà utilisé — la transaction existe.
- 422
- UnprocessableMontant hors limites ou opérateur non autorisé.
- 429
- Too Many RequestsLimite de débit atteinte.
- 500
- Server ErrorErreur côté KPay. Réessayez avec un backoff.
Environnements
Une seule URL, deux clés. `kpay_test_` route vers le bac à sable, `kpay_live_` vers la production — rien d’autre ne change dans votre code.
Environnements →Limites de débit
Un dépassement renvoie un 429. Réessayez avec un délai exponentiel plutôt qu’en boucle serrée.
Tarifs & limites →Versionnement
L’API est en `v1`, portée par l’URL. Les ajouts de champs sont rétrocompatibles : ignorez ceux que vous ne connaissez pas.
Spécification OpenAPI →