Liens de paiement
Créez un lien de paiement en une seule requête API et partagez-le par SMS, WhatsApp ou email. Aucun code à intégrer côté client.
Introduction
Un lien de paiement est une URL unique que vous créez depuis l'API ou le dashboard. Vous la partagez avec votre client — il clique, choisit son opérateur et paie sur la page SigmaPay. Vous recevez une notification webhook dès la confirmation.
Cas d'usage typiques : Factures à distance · Paiement de droits d'inscription · Collecte de fonds · Commerce sur WhatsApp
Créer un lien de paiement
/api/v1/payment-links| Champ | Type | Requis | Description |
|---|---|---|---|
| amount | integer | Oui | Montant en centimes XOF. Si absent le client saisit lui-même. |
| description | string | Non | Libellé affiché sur la page de paiement. |
| expiresAt | string | Non | Date d'expiration ISO 8601. Ex : "2026-07-31T23:59:59Z" |
| maxUses | integer | Non | Nombre maximum de paiements via ce lien. Défaut : illimité. |
| metadata | object | Non | Données libres retournées dans chaque webhook. |
const res = await fetch('https://bluepay.myfad.org/api/v1/payment-links', {
method: 'POST',
headers: {
'Authorization': 'Bearer sigmapay_live_votre_cle',
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: 75000, // 750 XOF
description: 'Frais de dossier — Concours Master 2026',
expiresAt: '2026-07-31T23:59:59Z',
maxUses: 500,
metadata: { promotion: 'master-2026' },
}),
});
const { url, id } = await res.json();
// url = "https://bluepay.myfad.org/pay/link_abc123..."
console.log('Lien :', url);{
"id": "link_abc123def456",
"url": "https://bluepay.myfad.org/pay/link_abc123def456",
"amount": 75000,
"currency": "XOF",
"description": "Frais de dossier — Concours Master 2026",
"status": "ACTIVE",
"usedCount": 0,
"maxUses": 500,
"expiresAt": "2026-07-31T23:59:59.000Z",
"createdAt": "2026-06-30T10:00:00.000Z"
}Partager le lien
Une fois le lien créé, partagez l'URL retournée comme bon vous semble. Le client cliquera sur la page de paiement SigmaPay directement.
// Envoi via votre provider SMS habituel
const linkUrl = 'https://bluepay.myfad.org/pay/link_abc123def456';
await smsProvider.send({
to: '+221771234567',
text: `Bonjour, veuillez régler vos frais de dossier via ce lien sécurisé SigmaPay : ${linkUrl}`,
});// Via l'API WhatsApp Business
const message = {
type: 'template',
template: {
name: 'payment_reminder',
components: [
{ type: 'body', parameters: [{ type: 'text', text: linkUrl }] }
],
},
};QR code
Chaque lien de paiement a automatiquement un QR code à afficher ou imprimer — utile pour un paiement en présentiel (comptoir, affiche, facture papier). Le QR encode l'URL du lien : le client le scanne avec son téléphone et arrive directement sur la page de paiement.
/link/:slug/qrcodeRetourne directement une image PNG (320×320px) — utilisable telle quelle dans une balise <img src="...">, aucune authentification requise.
<img src="https://bluepay.myfad.org/link/link_abc123def456/qrcode" alt="Payer par QR code" />Le même QR code est aussi affiché directement sur la page de paiement hébergée (bouton « Afficher le QR code »), et sur la page de checkout à usage unique (/checkout/:token/qrcode).
Notifications de paiement
Chaque paiement via un lien déclenche un webhook identique à celui de l'API de paiement — structure à plat, le champ event vaut toujours transaction.updated, le résultat réel est dans status. Le webhook ne contient pas votre metadata d'origine — utilisez transactionId pour retrouver votre commande.
{
"event": "transaction.updated",
"transactionId": "clxyz5678efgh",
"reference": "TXN-...",
"status": "SUCCESS",
"amount": 75000,
"currency": "XOF",
"channel": "WAVE"
}Gérer les liens
| Méthode | Endpoint | Action |
|---|---|---|
| GET | /api/v1/payment-links | Lister tous vos liens |
| GET | /api/v1/payment-links/:id | Détail et statistiques d'un lien |
| PATCH | /api/v1/payment-links/:id | Modifier montant, description, expiration |
| DELETE | /api/v1/payment-links/:id | Désactiver un lien (ne supprime pas l'historique) |
Essayer les liens de paiement
Créez votre premier lien depuis le dashboard en 30 secondes.