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

# Environnements

> Sandbox et live sont deux espaces totalement isolés : clés, soldes et webhooks séparés.

Mercy Pay sépare **sandbox** et **live** de bout en bout. Chaque clé API appartient à un seul des deux. Un paiement créé en sandbox n'apparaît jamais dans un solde live.

## Ce qui change entre les deux

| Élément | Sandbox | Live |
| - | - | - |
| Clés | `mp_sandbox_…` | `mp_live_…` |
| Soldes | Soldes de test | Soldes réels |
| Paiements | De test, aucun argent réel ne circule | Réels |
| Retraits | De test, versés ou refusés selon le numéro, sans examen | Examinés par notre équipe, une fois le KYC approuvé |
| Webhooks | `livemode: false` | `livemode: true` |
| Accès | Immédiat dès la création de l'espace | Après approbation du KYC |

Le sandbox sert à intégrer et à tester sans attendre d'approbation. Le live ouvre après le KYC, car c'est là que de l'argent réel circule.

Dans le tableau de bord, le sélecteur **Sandbox / Live** en haut de page choisit les données affichées. Un endpoint de webhook peut écouter le sandbox, le live ou les deux, voir [Webhooks](https://docs.mercy-pay.com/developers/webhooks/overview.md).

## Clés sandbox et live

Une clé sandbox reste lisible : copiez-la quand vous voulez depuis la console Développeurs. Une clé live ne s'affiche qu'une seule fois, à sa création. Gardez-la dans vos secrets serveur.

## Tester un paiement

En sandbox, la page de paiement affiche directement les données de test. Choisissez **Paiement réussi** ou **Paiement refusé** pour le mobile money, ou copiez la carte de test.

### Carte

| Numéro | Expiration | Code |
| - | - | - |
| `4242 4242 4242 4242` | `12/34` | `123` |

### Mobile money

Ces numéros ne fonctionnent qu'en sandbox. Chacun donne toujours le même résultat.

| Pays | Opérateur | Réussite | Échec |
| - | - | - | - |
| Bénin | MTN Mobile Money | `22951345789` | `22951345029` |
| Bénin | Moov Money | `22995345789` | `22995345679` |
| Cameroun | MTN Mobile Money | `237653456789` | `237653456019` |
| Cameroun | Orange Money | `237693456789` | `237693456049` |
| Congo | Airtel Money | `242053456789` | `242053456049` |
| Congo | MTN Mobile Money | `242063456789` | `242063456049` |
| Côte d'Ivoire | MTN Mobile Money | `2250503456789` | `2250503456029` |
| Côte d'Ivoire | Moov Money | `2250103456789` | `2250103456049` |
| Côte d'Ivoire | Orange Money | `2250734567890` | `2250734567030` |
| Gabon | Airtel Money | `24174345678` | `24174345048` |
| Kenya | M-Pesa | `254703456789` | `254703456049` |
| Ouganda | Airtel Money | `256753456789` | `256753456049` |
| Ouganda | MTN Mobile Money | `256783456789` | `256783456019` |
| RD Congo | Airtel Money | `243973456789` | `243973456069` |
| RD Congo | M-Pesa | `243813456789` | `243813456049` |
| RD Congo | Orange Money | `243893456789` | `243893456049` |
| Rwanda | Airtel Money | `250733456789` | `250733456049` |
| Rwanda | MTN Mobile Money | `250783456789` | `250783456019` |
| Sierra Leone | Orange Money | `23276123456` | Aucun |
| Sénégal | Free Money | `221763456789` | `221763456049` |
| Sénégal | Orange Money | `221773456789` | `221773456049` |
| Zambie | Airtel Money | `260973456789` | `260973456049` |
| Zambie | MTN Mobile Money | `260763456789` | `260763456019` |
| Zambie | Zamtel Money | `260953456700` | `260953456704` |

Moov Money Gabon, M-Pesa Mozambique : pas encore de numéro de test. Testez sur un autre opérateur.

## Tester les cas difficiles

### Une cause d'échec précise

Sur la page de paiement sandbox, des boutons remplissent le numéro qui produit chaque cause, quand l'opérateur la propose : **Solde insuffisant**, **Refusé par le client**, **Plafond atteint**, **Numéro inconnu**, ou **Reste en attente** pour un paiement qui ne se conclut pas. Le paiement échoue avec le `failure_code` correspondant, et votre webhook `payment.failed` le reçoit.

### Un retrait

Un retrait sandbox part tout de suite, sans examen et sans KYC, depuis votre solde de test. Vers le numéro de réussite de l'opérateur, il passe à `paid`. Pour un échec, utilisez le numéro de retrait refusé :

| Opérateur | Retrait refusé |
| - | - |
| MTN Mobile Money Cameroun | `237653456089` |
| Orange Money Cameroun | `237693456119` |
| MTN Mobile Money Congo | `242063456089` |
| Airtel Money Congo | `242053456089` |
| Airtel Money Gabon | `24174345088` |
| MTN Mobile Money Bénin | `22951345089` |
| Moov Money Bénin | `22995345219` |
| MTN Mobile Money Côte d'Ivoire | `2250503456089` |
| Orange Money Côte d'Ivoire | `2250734567110` |
| Moov Money Côte d'Ivoire | `2250103456119` |
| Zamtel Money Zambie | `260953456712` |
| M-Pesa Kenya | `254703456089` |

Vous recevez `payout.paid` ou `payout.failed`, comme en live.

### Un renouvellement d'abonnement

Sans attendre la vraie date : sur un abonnement sandbox, **Gérer** puis **Passer à l'échéance (test)**, ou [`POST /api/v1/subscriptions/{id}/advance`](https://docs.mercy-pay.com/api/subscriptions/advance). La facture est créée et son paiement lancé tout de suite.


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