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

# Créer un décaissement

> Créez un décaissement pour transférer des fonds de votre compte vers le compte d'un client

## Préparer votre requête

Le point de terminaison à utiliser est `POST https://pay.sandbox.yabetoopay.com/v1/disbursements` pour l'environnement sandbox et `POST https://pay.api.yabetoopay.com/v1/disbursements` pour l'environnement de production.

<Note>
  Sécurité de la clé secrète : La clé secrète (secret\_key) doit rester confidentielle et
  ne doit jamais être exposée dans le frontend ou le code client. Elle doit uniquement être utilisée
  côté serveur.
</Note>

1. Utilisez la clé secrète fournie `secret_key` pour vous authentifier auprès de l'API. Pour des raisons de sécurité, cette clé ne doit être utilisée que côté serveur.
2. Le corps de la requête doit contenir les paramètres suivants :

```javascript theme={null}
{
    "amount": 10000,
    "currency": "XAF",
    "first_name": "Jean",
    "last_name": "Dupont",
    "payment_method_data": {
        "type": "momo",
        "momo": {
            "msisdn": "242066594471",
            "country": "CG",
            "operator_name": "mtn"
        }
    }
}
```

### Paramètres

* `amount` : Le montant à payer
* `currency` : La devise du paiement
* `first_name` : Le prénom du client
* `last_name` : Le nom de famille du client
* `payment_method_data` : Les données du moyen de paiement
  * `type` : Le type de moyen de paiement
  * `momo` : Les données du paiement mobile money
    * `msisdn` : Le numéro de téléphone du client
    * `country` : Le code pays
    * `operator_name` : Le nom de l'opérateur

## Créer un décaissement

```javascript theme={null}
{
  const response = await fetch(
    "https://pay.sandbox.yabetoopay.com/v1/disbursements",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${secret_key}`,
      },
      body: JSON.stringify({
        amount: 10000,
        currency: "XAF",
        first_name: "Jean",
        last_name: "Dupont",
        payment_method_data: {
          type: "momo",
          momo: {
            msisdn: "242066594471",
            country: "CG",
            operator_name: "mtn",
          },
        },
      }),
    }
  );

  const data = await response.json();
  console.log(data);
}
```

## Réponse

### 200 OK

Lorsque le décaissement a été créé avec succès, l'API renverra une réponse 200 OK avec le corps suivant :

Le statut du décaissement est `processing` car le paiement est toujours en cours de traitement et n'a pas encore été exécuté.

```json theme={null}
{
  "amount": 1000,
  "currency": "xaf",
  "status": "processing",
  "firstName": "Jean",
  "lastName": "Dupont",
  "operatorName": "mtn",
  "country": "cg",
  "phone": "242066594470",
  "object": "disbursement",
  "type": 1,
  "shouldExecutedAt": "2025-03-18T09:24:57.555Z",
  "id": "wt_RMqehxy8NNi1ocJFG2SSAZMj81m6spo72vnZ",
  "createdAt": "2025-03-17T10:24:57.559+01:00",
  "updatedAt": "2025-03-17T10:24:57.559+01:00"
}
```

### 400 Mauvaise requête

Lorsque la requête est invalide, l'API renverra une réponse 400 Bad Request avec le corps suivant :

```json theme={null}
{
  "errors": [
    {
      "rule": "required",
      "field": "currency",
      "message": "La validation requise a échoué"
    }
  ]
}
```

### 401 Non autorisé

Lorsque la clé secrète est invalide, l'API renverra une réponse 401 Unauthorized avec le corps suivant :

```json theme={null}
{
  "message": "Non autorisé"
}
```
