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

# Accepter un paiement

> Créez une session de checkout, redirigez votre client et confirmez le paiement par webhook.

Ce guide couvre le flux complet d'un encaissement, du montant jusqu'à la confirmation sur votre serveur, avec la page hébergée : la manière la plus rapide de démarrer.

Si vous préférez ne jamais rediriger votre client vers une page Mercy Pay, la charge directe fait la même chose depuis votre propre formulaire : votre serveur appelle `POST /api/v1/payments` avec le numéro et l'opérateur du client. Elle ne couvre que le mobile money pour l'instant, voir [Paiements](/api/payments).

<Steps>
  <Step title="Créez la session côté serveur">
    Ne créez jamais de session depuis le navigateur : votre clé API ne doit pas y figurer.

    ```bash theme={null}
    curl https://mercy-pay.com/api/v1/checkout-sessions \
      -H "Authorization: Bearer mp_live_XXXXXXXXXXXXXXXX" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: commande-4821" \
      -d '{
        "amount": 15000,
        "currency": "XAF",
        "description": "Commande 4821",
        "payer_email": "client@example.com",
        "success_url": "https://boutique-ada.example/commandes/4821/merci",
        "cancel_url": "https://boutique-ada.example/commandes/4821"
      }'
    ```

    Stockez `reference` dans votre commande.
  </Step>

  <Step title="Redirigez votre client">
    Envoyez le client vers `data.checkout_url`. Sur la page hébergée, il choisit son moyen de paiement :

    * **Mobile money** : pays, opérateur et numéro, parmi tous les pays disponibles. Même si leur devise diffère de celle de la session, le montant est alors converti automatiquement : voir [Sessions de checkout](/concepts/checkout-sessions).
    * **Carte bancaire** : disponible si le montant atteint le minimum de la devise, voir [Montants et devises](/concepts/amounts-and-currencies).
  </Step>

  <Step title="Attendez la confirmation par webhook">
    La redirection vers `success_url` ne prouve rien. Le client peut fermer l'onglet avant qu'elle n'ait lieu. Ne marquez une commande payée qu'à réception de `payment.succeeded`, voir [Gérer les webhooks](/guides/handle-webhooks).
  </Step>

  <Step title="Relisez la session si besoin">
    Pour vérifier l'état à tout moment :

    ```bash theme={null}
    curl https://mercy-pay.com/api/v1/checkout-sessions/01J9Z3V8QK4M2XW7R6TB5N0HYD \
      -H "Authorization: Bearer mp_live_XXXXXXXXXXXXXXXX"
    ```

    Le champ `status` passe de `created` à `pending_payment`, puis `completed`.
  </Step>
</Steps>

## Erreurs fréquentes

| Message | Cause |
| - | - |
| `Le montant minimum pour un paiement par carte est de 0.50 USD.` | Montant sous le minimum carte |
| `Opérateur Mobile Money invalide pour ce pays.` | Opérateur non disponible pour le pays choisi |
| `Une tentative de paiement est déjà en cours pour cette session.` | Deux paiements lancés en même temps |


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