Encaissez par mobile money et par carte
Une page de paiement hébergée prête à l'emploi, ou une intégration directe pour construire votre propre formulaire.
Mobile money et carte
Mobile money dans 11 pays d'Afrique et carte bancaire (Visa, Mastercard), sur une même page de paiement.
Reçus et idempotence
Reçu PDF téléchargeable pour chaque paiement, et une clé d'idempotence sur chaque création pour ne jamais encaisser deux fois.
Votre image de marque
Votre logo et votre couleur sur la page de paiement et sur le reçu envoyé à votre client, pas les nôtres.
MTN Mobile Money
Orange Money
Carte bancaireUne page de paiement hébergée, prête à l'emploi
Votre client choisit son opérateur mobile money ou sa carte sur la même page, saisit son numéro ou ses coordonnées bancaires, et confirme. Aucune redirection tierce à gérer de votre côté.
Préférez construire votre propre formulaire de paiement plutôt que rediriger vers une page hébergée ? La charge directe fait exactement la même chose depuis votre propre interface, via la même API.
const response = await fetch("/api/v1/checkout-sessions", { method: "POST", headers: { Authorization: `Bearer ${process.env.MERCY_PAY_KEY}`, "Content-Type": "application/json", "Idempotency-Key": crypto.randomUUID(), }, body: JSON.stringify({ amount: 15000, currency: "XAF", description: "Commande 1042", success_url: "https://boutique-akwa.cm/merci", }),}); const { data } = await response.json();// Redirigez votre client vers data.checkout_urlUne API pensée pour vos développeurs
Une requête crée une session de paiement et vous renvoie le lien du checkout. JSON en entrée comme en sortie, clés sandbox et live séparées, requêtes rejouables sans double débit grâce à l’en-tête Idempotency-Key.
import { createHmac, timingSafeEqual } from "node:crypto"; app.post("/webhooks/mercy-pay", (req, res) => { const expected = createHmac("sha256", SECRET) .update(req.rawBody) .digest("hex"); const received = req.header("X-MercyPay-Signature"); if (!timingSafeEqual(Buffer.from(expected), Buffer.from(received))) { return res.sendStatus(401); } const { type, data } = req.body; if (type === "payment.succeeded") { markOrderPaid(data); } res.sendStatus(200);});Des webhooks signés
Chaque changement de statut arrive sur votre serveur, signé en HMAC-SHA256 dans l’en-tête X-MercyPay-Signature. Une livraison qui échoue est relancée, et son historique reste dans votre dashboard.
Vérifiez la signature avant de traiter l’événement : un webhook non signé ou falsifié est rejeté par votre code, pas par Mercy Pay.
Encaissez vos premiers paiements dès aujourd’hui
Le mobile money et la carte sur une seule page de paiement.
Pour démarrer
Inscrivez-vous en quelques minutes : votre clé API sandbox vous attend dès l’inscription, sans carte bancaire.
Le KYC n’est demandé que pour passer en live et recevoir vos payouts.