> ## Documentation Index
> Fetch the complete documentation index at: https://doc.ashtechpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Payouts

> Envoyez des payouts Mobile Money et USDT depuis les wallets AshTech Pay.

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.

> [!NOTE]
>
> 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

> [!NOTE]
>
> Les numéros fictifs de [la page Sandbox](https://doc.ashtechpay.com/docs/sandbox.md) 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.

```http theme={null}
POST https://www.ashtechpay.com/v1/payouts/mobile-money
Authorization: Bearer ASHTECH_API_KEY
Content-Type: application/json
```

```json theme={null}
{
  "user_id": "VOTRE_USER_ID",
  "reference": "retrait-commande-8201",
  "country_code": "CM",
  "operator": "MTN Money",
  "phone": "237000000000",
  "recipient_name": "Client",
  "amount": "5000",
  "fee_bearer": "sender",
  "notify_url": "https://example.com/webhooks/ashtechpay"
}
```

* Récupérez les pays et opérateurs actifs pour les retraits avec [`GET /v1/countries?operation=payout`](https://doc.ashtechpay.com/docs/reference/countries). 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.

```http theme={null}
POST https://www.ashtechpay.com/v1/payouts/crypto
Authorization: Bearer ASHTECH_API_KEY
Content-Type: application/json
```

```json theme={null}
{
  "user_id": "VOTRE_USER_ID",
  "reference": "retrait-usdt-8202",
  "asset_code": "USDT.TRC20",
  "destination_address": "T...",
  "destination_memo": "",
  "amount": "25",
  "fee_bearer": "sender",
  "notify_url": "https://example.com/webhooks/ashtechpay"
}
```

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 :

```http theme={null}
GET https://www.ashtechpay.com/v1/transaction/TRANSACTION_ID?user_id=VOTRE_USER_ID
Authorization: Bearer ASHTECH_API_KEY
```

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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.