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

# Moov Money

> Moov Africa Transfer API — sandbox developer.moov-africa.com

<div style={{ display: "inline-block", width: "1rem", height: "1rem", background: "#0066CC", borderRadius: "2px", marginRight: "0.5rem", verticalAlign: "middle" }} />

**Moov Money** — Transfer API (cash-in / cash-out).

## Pays couverts

| Pays          | Code | Devise |
| ------------- | ---- | ------ |
| Côte d'Ivoire | CI   | XOF    |
| Bénin         | BJ   | XOF    |
| Togo          | TG   | XOF    |

## URLs

| Type        | URL                                                            |
| ----------- | -------------------------------------------------------------- |
| Portail dev | [developer.moov-africa.com](https://developer.moov-africa.com) |
| Sandbox API | `https://developer.moov-africa.com/sandbox/v1`                 |
| Transfer    | `https://developer.moov-africa.com/sandbox/v1/transfer`        |
| Health      | `https://developer.moov-africa.com/sandbox/v1/health`          |
| USSD client | `*155#`                                                        |

## Credentials requis

À renseigner dans **Settings → Stores → Moov** :

| Champ        | Type     | Description                    |
| ------------ | -------- | ------------------------------ |
| `partner_id` | text     | ID partenaire Moov Africa.     |
| `username`   | text     | Username du compte partenaire. |
| `password`   | password | Mot de passe associé.          |

## Particularités

* **Basic auth** uniquement — Moov n'utilise pas OAuth pour son sandbox. L'en-tête `Authorization: Basic <base64(username:password)>` est envoyé sur chaque requête.
* L'URL sandbox vit sous le chemin `/sandbox/v1`. Aucun paramètre de query n'est nécessaire.
* Type d'opération porté par `type: "cashin"` dans le body — pour les payouts utilisez `cashout` (post-launch).
* `msisdn` envoyé **sans le `+`** dans le body.
* Réponse : `transactionId` (string) que SandPay stocke comme `provider_tx_id`.
* Pas de webhook natif : SandPay déclenche le statut final via le moteur de scénarios.

## Voir aussi

* [Scénarios](/fr/scenarios) — driver de résultat indépendant de l'opérateur
* [MTN](/fr/operators/mtn), [Orange](/fr/operators/orange), [Airtel](/fr/operators/airtel)
