Skip to main content
Les payouts utilisent le wallet du profil associé à la clé API. user_id est obligatoire dans chaque JSON et doit correspondre au propriétaire de la clé Bearer. Il ne peut pas servir à sélectionner un autre profil. Les retraits Direct API sont autorisés par la clé Bearer et cette correspondance; aucun PIN de transaction n’est demandé. Gardez la clé uniquement sur votre serveur marchand, jamais dans le navigateur.
Les payouts Direct API sont désactivés par défaut. Un administrateur doit les autoriser séparément pour chaque marchand dans la gestion des marchands. L’activation de l’API générale ne suffit pas.

Payout Mobile Money

Les numéros fictifs de la page Sandbox simulent uniquement les dépôts via /v1/collect. Ils ne simulent pas un retrait et ne doivent pas être utilisés comme numéros de bénéficiaire d’un payout.
  • Récupérez les pays et opérateurs actifs pour les retraits avec GET /v1/countries?operation=payout. Copiez le champ code retourné (par exemple CM, GA ou CG) dans country_code; n’envoyez pas le nom du pays. Transmettez le nom d’opérateur de retrait renvoyé pour ce pays.
  • Le wallet débité est résolu côté serveur à partir de country_code (CM → XAF, GA → XAFG, CG → XAFC, etc.). Vous n’avez pas à connaître ni à envoyer le code interne du wallet. AshTech Pay ne convertit jamais automatiquement un autre wallet pour couvrir le payout.
  • reference est obligatoire et idempotente. Réutilisez-la uniquement pour rejouer la même demande; une référence réutilisée avec des paramètres différents renvoie 409 reference_conflict.
  • phone doit être une chaîne de chiffres avec l’indicatif pays. Les lettres ne sont pas acceptées. 237000000000 est un exemple fictif à remplacer par le vrai numéro du bénéficiaire; ce n’est pas un numéro de test et ne doit pas être utilisé pour envoyer un payout.
  • fee_bearer vaut sender (frais ajoutés au débit) ou recipient (frais retranchés au montant envoyé). La valeur par défaut est sender.
  • notify_url est facultative et doit être une URL HTTPS publique.
Un solde insuffisant renvoie 409 insufficient_balance avant l’envoi de la demande. Un payout accepté renvoie 202 avec status: "pending". Si le résultat initial est incertain, le statut peut être pending_manual; le montant reste réservé, sans nouvel envoi automatique. N’envoyez pas une autre demande pour contourner cet état : vérifiez la transaction ou contactez l’équipe AshTech Pay.

Payout USDT

Le payout crypto utilise le réseau indiqué par asset_code et le wallet USDT. Consultez GET /v1/crypto/assets pour choisir un réseau actif; renseignez un memo/tag lorsque le réseau l’exige.
Le compte doit être vérifié, les limites et frais crypto actifs s’appliquent, et le réseau doit accepter la destination. Une réponse 202 peut indiquer pending, completed, failed ou pending_manual. Un résultat incertain conserve le débit en attente de rapprochement; ne répétez pas le payout avec une nouvelle référence.

Lire le statut d’un payout

Utilisez l’identifiant transaction_id renvoyé par la création :
Le résultat final est également livré au notify_url sous forme d’événement payout.completed ou payout.failed. Vérifiez toujours la signature du webhook avant de mettre à jour votre commande.