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

# Effectuer un retrait

> Envoyer de l'argent sur le compte mobile money, orange money ou fapshi d'un utilisateur via un service activé pour les retraits.

## Endpoint

`POST /payout`

Envoyer de l'argent sur le compte mobile money, orange money ou fapshi d'un utilisateur via un service activé pour les retraits.

<Danger>Une fois les retraits activés pour un service, ce service ne peut plus collecter de paiements. Utilisez des services distincts pour la collecte et les retraits.</Danger>

<Warning>
  Le retrait est désactivé par défaut dans l'environnement live. Pour activer les retraits en environnement live, implémentez et testez d'abord les retraits en environnement sandbox, puis envoyez un email au Support Développeurs à [support.fapshi.com](mailto:support.fapshi.com) avec UNIQUEMENT votre <strong>LIVE API USER</strong> et mentionnez que vous souhaitez activer les retraits sur votre service.

  ⚠️ ASSUREZ-VOUS D'ENVOYER <strong>LE LIVE API USER</strong> de votre <strong>SERVICE DE RETRAIT</strong>.
</Warning>

## Paramètres

| Nom        | Requis       | Type   | Description                                                                                                                                                                            |
| :--------- | :----------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| amount     | Oui          | entier | Montant à envoyer (minimum 100 XAF).                                                                                                                                                   |
| phone      | Conditionnel | chaîne | Numéro de téléphone du bénéficiaire (ex. : 67XXXXXXX). Requis lorsque `medium` n'est pas spécifié ou n'est pas `"fapshi"`.                                                             |
| medium     | Non          | chaîne | `"mobile money"`, `"orange money"`, ou `"fapshi"`. Détecté automatiquement si omis (nécessite `phone`). Lorsqu'il est défini sur `"fapshi"`, `email` est requis à la place de `phone`. |
| name       | Non          | chaîne | Nom du bénéficiaire.                                                                                                                                                                   |
| email      | Conditionnel | chaîne | Email du bénéficiaire. Requis lorsque `medium` est `"fapshi"`. Facultatif pour recevoir le reçu de confirmation du retrait lorsque `medium` n'est pas `"fapshi"`.                      |
| userId     | Non          | chaîne | ID utilisateur de votre système pour le suivi des retraits (1-100 caractères; autorisés : a-z, A-Z, 0-9, -, \_).                                                                       |
| externalId | Non          | chaîne | ID de transaction/commande pour la réconciliation (1-100 caractères; autorisés : a-z, A-Z, 0-9, -, \_).                                                                                |
| message    | Non          | chaîne | Description ou motif du retrait.                                                                                                                                                       |

### Champs Requis

* **Lorsque `medium` n'est pas spécifié** : `amount` et `phone` sont requis.
* **Lorsque `medium` est `"fapshi"`** : `amount` et `email` sont requis.

### Tests en Environnement Sandbox

Lors des tests de retraits avec `medium` défini sur `"fapshi"` dans l'environnement sandbox :

* **Emails qui retournent toujours des transactions réussies** : `test.success@fapshi.com` et `messi.champion@fapshi.com`
* **Emails qui retournent toujours des transactions échouées** : `test.failed@fapshi.com` et `penaldo.test@fapshi.com`
* **Autres emails** : Le statut de la transaction sera déterminé de manière stochastique (aléatoire)


## OpenAPI

````yaml /fr/api-reference/openapi.json POST /payout
openapi: 3.1.0
info:
  title: API de Paiement Fapshi
  description: >-
    API pour générer des liens de paiement, des paiements directs, la
    surveillance des transactions, les retraits, et plus encore.
  version: 1.0.0
servers:
  - url: https://sandbox.fapshi.com
security:
  - apiAuth: []
    apiKey: []
paths:
  /payout:
    post:
      summary: Effectuer un Paiement Sortant
      description: >-
        Envoyer de l'argent sur le compte mobile money, orange money ou fapshi
        d'un utilisateur via un service activé pour les retraits. Lorsque
        `medium` n'est pas spécifié, `amount` et `phone` sont requis. Lorsque
        `medium` est défini sur `"fapshi"`, `amount` et `email` sont requis.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: integer
                  minimum: 100
                  description: Montant à envoyer (minimum 100 XAF).
                phone:
                  type: string
                  description: >-
                    Numéro de téléphone du destinataire. Requis lorsque `medium`
                    n'est pas spécifié ou n'est pas `"fapshi"`. Non requis
                    lorsque `medium` est `"fapshi"`.
                medium:
                  type: string
                  enum:
                    - mobile money
                    - orange money
                    - fapshi
                  description: >-
                    Moyen de paiement (facultatif). Détecté automatiquement si
                    omis (nécessite `phone`). Lorsqu'il est défini sur
                    `"fapshi"`, `email` est requis à la place de `phone`.
                name:
                  type: string
                  description: Nom du destinataire (facultatif).
                email:
                  type: string
                  format: email
                  description: >-
                    Email du destinataire. Requis lorsque `medium` est
                    `"fapshi"`. Facultatif pour le reçu de paiement lorsque
                    `medium` n'est pas `"fapshi"`.
                userId:
                  type: string
                  pattern: ^[a-zA-Z0-9\-_]{1,100}$
                  description: >-
                    Identifiant utilisateur pour le suivi du paiement
                    (facultatif).
                externalId:
                  type: string
                  pattern: ^[a-zA-Z0-9\-_]{1,100}$
                  description: >-
                    Identifiant de transaction/commande pour la réconciliation
                    (facultatif).
                message:
                  type: string
                  description: Motif du paiement (facultatif).
              required:
                - amount
      responses:
        '200':
          description: Accepté
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Message de succès
                  transId:
                    type: string
                    description: Identifiant de la transaction pour le paiement.
                  dateInitiated:
                    type: string
                    format: date
                    description: Date à laquelle le paiement a été initié.
        4XX:
          description: Requête invalide ou permissions insuffisantes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        message:
          type: string
          description: Message d'erreur.
  securitySchemes:
    apiAuth:
      type: apiKey
      in: header
      name: apiuser
    apiKey:
      type: apiKey
      in: header
      name: apikey

````