Skip to main content
Toutes les routes nécessitent votre clé API secrète (Authorization: Bearer sk_...) ou une session dashboard. Voir Authentification.

Un wallet par (marchand, pays)

Contrairement à une approche par devise, SasPay tient un solde distinct pour chaque pays où vous encaissez — jamais un solde global par devise. C’est un choix structurant : plusieurs pays partagent parfois la même devise (le XOF pour le Bénin, le Togo, la Côte d’Ivoire, le Sénégal…), et confondre les deux masquerait dans quel pays l’argent se trouve réellement.
Un wallet est créé automatiquement dès qu’un mouvement l’exige (premier encaissement dans ce pays, par exemple) — il n’y a pas de création manuelle.

Soldes

Lecture seule stricte : aucune écriture n’est possible côté marchand, le solde ne bouge que via les mouvements internes de la plateforme (encaissement, retrait, ajustement admin…).
Pas de filtre ?country= disponible sur la liste — récupérez tous vos soldes et filtrez côté client.
Le champ is_frozen mérite attention : quand il vaut true, les entrées restent acceptées (vos encaissements continuent d’être crédités) mais toutes les sorties sont bloquées (retrait, transfert sortant). Un gel est toujours décidé côté plateforme, jamais déclenché par le marchand.

Relevé de mouvements (ledger)

Journal append-only de tous les mouvements ayant affecté un de vos soldes — encaissement, retrait, frais, ajustement, remboursement, transfert entrant/sortant. Chaque ligne est immuable et porte le solde avant/après pour reconstituer l’historique sans ambiguïté.
Pas de filtre ?type= ni ?country= disponible sur cette vue — récupérez et filtrez côté client.

Méthodes de retrait

Une méthode de retrait (mobile money ou virement bancaire) doit être enregistrée avant de pouvoir demander un retrait.
Aucune validation croisée serveur ne force les champs pertinents selon type : rien n’empêche aujourd’hui de créer une méthode MOBILE_MONEY sans network/phone_number, ou BANK_TRANSFER sans coordonnées bancaires. Validez ces champs vous-même côté intégration avant de les envoyer.
Toute méthode nouvellement créée a is_verified: false — un administrateur SasPay doit la vérifier avant qu’elle puisse servir à un retrait. Ce délai de vérification est volontaire : c’est le point de contrôle contre le détournement d’un retrait vers des coordonnées non validées.

Retraits

Demandez un retrait de votre solde disponible vers une méthode de retrait déjà vérifiée.
Un retrait fait sortir de l’argent réel de la plateforme — l’endpoint de création exige un header Idempotency-Key. Sans lui, deux requêtes identiques (double-clic, retry réseau) créeraient deux retraits distincts, débitant chacun votre solde séparément. Voir Idempotence.
Les frais (client_fee, gateway_fee, platform_fee) sont calculés côté serveur selon votre configuration tarifaire — jamais saisis par vous. Le fee_charge_mode détermine si les frais sont déduits du montant retiré (DEDUCTED) ou facturés séparément.

Transferts interwallet

Déplacez des fonds entre deux de vos wallets (pays différents), avec conversion de devise automatique si nécessaire.
Un seul transfert PENDING est autorisé à la fois par marchand. Selon votre configuration, le transfert peut soit passer directement à COMPLETED dans la même requête (auto-approbation activée par un administrateur), soit rester PENDING jusqu’à validation manuelle.
Comme pour un retrait, l’endpoint de création exige un header Idempotency-Key — un transfert reste un mouvement d’argent, même s’il ne quitte pas la plateforme.

Taux de change

Les taux appliqués aux transferts interwallet lors d’une conversion de devise.
Pas de filtre par paire de devises — listez tout et filtrez côté client.