> ## 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 transfert d'argent

> Envoyez de l'argent à un bénéficiaire pour le compte d'un utilisateur via votre compte professionnel Yabetoo.

## Préparer votre requête

Pour créer un transfert d'argent, utilisez le point de terminaison suivant :

* **Sandbox** : `POST https://pay.sandbox.yabetoopay.com/v1/remittance`
* **Production** : `POST https://pay.api.yabetoopay.com/v1/remittance`

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

1. Authentifiez votre requête en utilisant votre clé secrète dans l'en-tête `Authorization`.
2. Incluez les champs requis dans le corps de la requête :

```json theme={null}
{
  "amount": "100",
  "currency": "XAF",
  "first_name": "Jean",
  "last_name": "Dupont",
  "payment_method_data": {
    "type": "momo",
    "momo": {
      "msisdn": "242066594470",
      "country": "CG",
      "operator_name": "mtn"
    }
  },
  "metadata": {
    "internal_ref": "tr_8493983"
  }
}
```

### Corps de la requête

Envoyez une charge utile `JSON` avec les champs suivants :

### Champs requis

| Champ                 | Type     | Description                                                                  |
| --------------------- | -------- | ---------------------------------------------------------------------------- |
| `amount`              | `string` | Le montant à transférer (dans la plus petite unité monétaire, ex. centimes). |
| `currency`            | `string` | Code de la devise (ex., `xaf`, `usd`).                                       |
| `first_name`          | `string` | Prénom du bénéficiaire.                                                      |
| `last_name`           | `string` | Nom de famille du bénéficiaire.                                              |
| `payment_method_data` | `object` | Détails du moyen de paiement (voir ci-dessous).                              |

### Champs optionnels

| Champ      | Type     | Description                                                        |
| ---------- | -------- | ------------------------------------------------------------------ |
| `metadata` | `object` | Métadonnées clé-valeur pour le suivi interne ou la logique métier. |

### Structure de `payment_method_data`

```json theme={null}
{
  "type": "momo",
  "momo": {
    "country": "cg",
    "msisdn": "242066594470",
    "operator_name": "mtn"
  }
}
```

## Créer un transfert d'argent

Utilisez le point de terminaison suivant :

* **Sandbox** : `POST https://pay.sandbox.yabetoopay.com/v1/remittance`
* **Production** : `POST https://pay.api.yabetoopay.com/v1/remittance`

Cet exemple montre comment créer un transfert d'argent, vous devez l'adapter à vos besoins.

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

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

### Réponse

Dans cette section, vous trouverez les réponses possibles de l'API.

#### 200 OK

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

```json theme={null}
{
  "id": "rem_RMqehxy8NNi1ocJFG2SSAZMj81m6spo72vnZ",
  "object": "remittance",
  "amount": 1000,
  "currency": "xaf",
  "status": "succeeded",
  "firstName": "Jean",
  "lastName": "Dupont",
  "operatorName": "mtn",
  "country": "cg",
  "phone": "242066594470",
  "type": 1,
  "shouldExecutedAt": "2025-03-18T09:24:57.555Z",
  "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é

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