> ## 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.

# Montants et devises

> Les montants sont des entiers en unités mineures. Le nombre de décimales dépend de la devise (norme ISO 4217).

Tous les montants de l'API sont des **entiers en unités mineures** : la plus petite unité que la devise permet de compter. Vous n'envoyez donc jamais de décimales, et le calcul dépend de la devise.

## Nombre de décimales par devise

| Devise | Décimales | Montant `1 000` signifie |
| - | - | - |
| XAF, XOF (franc CFA) | 0 | 1 000 XAF |
| RWF, UGX | 0 | 1 000 RWF, 1 000 UGX |
| USD, EUR, GBP | 2 | 10,00 USD (soit 1 000 centimes) |
| CDF, GHS, KES, MZN, NGN, SLE, ZMW | 2 | 10,00 (soit 1 000 centimes) |

Pour convertir un montant lu par un humain, multipliez-le par `10` à la puissance du nombre de décimales : `10,50 USD` s'envoie `1050`, `5 000 XAF` s'envoie `5000` tel quel puisque le XAF n'a pas de sous-unité.

> [!WARNING]
>
> N'envoyez jamais `5000.00` ou `10.50`. Une valeur décimale est refusée par la validation de l'API.

## Codes devise

Le code devise est un code **ISO 4217** de trois lettres (`XAF`, `USD`, `EUR`, la casse n'importe pas : Mercy Pay normalise en majuscules). Un code qui n'existe pas dans la norme, comme `ABC`, est refusé.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl https://mercy-pay.com/api/v1/checkout_sessions \
  -H "Authorization: Bearer mp_sandbox_XXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{"amount": 1050, "currency": "USD", "description": "Abonnement mensuel"}'
```

## Minimums carte

En dessous d'un certain montant, le réseau carte lui-même refuse la transaction. Mercy Pay bloque donc la tentative en amont plutôt que de vous laisser découvrir l'échec après coup :

| Devise | Minimum carte |
| - | - |
| XAF | 500 XAF |
| USD | 0,50 USD (`50`) |
| EUR | 0,50 EUR (`50`) |
| GBP | 0,30 GBP (`30`) |

Sous ce seuil, la page de paiement ne propose plus que le mobile money, et une tentative de paiement par carte échoue avec le minimum exprimé en unités que votre client comprend (pas en unités mineures).

## Payer depuis un autre pays

Vous fixez un seul prix, dans votre devise. Votre client paie depuis n'importe quel pays pris en charge, sur le checkout, un lien de paiement, la page de paiement d'un abonnement ou par `POST /api/v1/payments` :

* **Mobile money** : un opérateur ne déplace que la monnaie de son pays. Si elle diffère de votre devise, le montant est converti au taux du jour, arrondi au-dessus, avant la demande sur le téléphone. Le paiement porte le montant et la devise réellement prélevés, et il crédite le solde de ce pays et de cet opérateur, voir [Soldes](https://docs.mercy-pay.com/payouts/balances.md).
* **Carte** : le montant est prélevé tel quel, dans votre devise. Si la carte est dans une autre monnaie, c'est la banque de votre client qui convertit.

Pour un abonnement, chaque échéance est convertie de la même façon, quel que soit le pays du numéro enregistré par votre client.


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