Skip to main content

Base URL

Toutes les requêtes doivent être adressées à :

Authentification

Toutes les routes marchand nécessitent votre clé API secrète, transmise dans le header Authorization au format Bearer :
Utilisez une clé sk_test_... en environnement de test, sk_live_... en production. Retrouvez vos clés API dans votre tableau de bord, section Développeur.
Votre clé secrète donne accès complet à votre compte marchand (encaissement, retraits, solde). Ne l’exposez jamais côté client (navigateur, application mobile) — utilisez-la uniquement depuis votre backend.

Format des réponses

Toutes les réponses de l’API partagent la même enveloppe, qu’il s’agisse d’un succès ou d’une erreur.
Le champ error prend deux formes selon le type d’erreur :
  • Erreur métier ({"message": "...", "code": "..."}) — un code d’erreur stable que vous pouvez tester dans votre code, ex. insufficient_balance, merchant_suspended.
  • Erreur de validation ({"champ": ["message"], "autre_champ": ["message"]}) — une entrée par champ invalide du corps de la requête.

Codes d’erreur HTTP

Idempotence

Les endpoints de création sensibles (paiement, retrait, nouvelle tentative) exigent un header Idempotency-Key : une valeur unique que vous générez par tentative logique d’opération (un UUID, par exemple). Si le réseau coupe et que vous rejouez la même requête avec la même clé, SasPay renvoie le résultat de la première tentative au lieu de créer un doublon.
Rejouer la même clé avec le même corps de requête renvoie la réponse exacte de la première tentative (même code HTTP, même contenu) sans rien recréer. La rejouer avec un corps différent renvoie 409 Conflict — la clé est déjà associée à une autre requête. Si la première tentative est encore en cours de traitement, un rejeu concurrent renvoie aussi 409.
Générez une nouvelle Idempotency-Key à chaque nouvelle intention de paiement, mais réutilisez la même clé pour chaque retry réseau de cette même tentative.

Limite de débit

Les appels authentifiés (clé API ou dashboard) sont limités à 300 requêtes par minute par compte par défaut. Un dépassement renvoie 429 Too Many Requests. Espacez vos appels ou mettez en cache les réponses peu volatiles (ex. liste des pays/réseaux supportés).

Ressources

Paiements

Encaissez via checkout hébergé ou softpay

Liens de paiement

Créez des liens de paiement réutilisables

Retraits

Payez un bénéficiaire en mobile money

Wallet

Consultez et retirez votre solde

Webhooks

Recevez vos événements en temps réel

KYC

Soumettez votre dossier d’identité