Liens de paiement (CashChap Link)
Avec CashChap Link, un lien de paiement transforme une demande de paiement en une adresse https://payment.cashchap.com/live/… à partager par WhatsApp, SMS, e-mail ou réseaux sociaux. Le client ouvre le lien, paie par Mobile Money, et la transaction apparaît dans votre portail. Aucun site web nécessaire.
Créer un lien
- Ouvrez Paiements › CashChap Link (sous-titre « Encaissement à distance ») et cliquez sur Générer un lien : la page « Créer un lien de paiement » s'ouvre.
- Décrivez le paiement : Motif du paiement (le titre vu par le client), Produit ou service, Montant et Description. La Monnaie n'est pas à choisir : c'est la devise de votre service (« Devise du service »), et le montant peut avoir des décimales dans une devise qui en a (25,50 EUR). Comme le rappelle l'encadré du formulaire : si vous indiquez un montant, vos clients paieront exactement ce montant (prix fixe) ; sinon, ils saisiront eux-mêmes le montant à payer (prix libre : dons, acomptes).
- Ajoutez une image si vous le souhaitez (Image du produit) : elle sert de couverture à la page produit que voit le client.
- Enregistrez : le lien est créé avec un identifiant unique (
https://payment.cashchap.com/live/…). Dans la liste, Détail l'affiche et le menu … permet de le Copier pour le partager. - Imprimez ou publiez son QR code si vous le souhaitez : le bouton QR de la ligne ouvre le QR code du lien, à télécharger (PNG, SVG) ou à imprimer en affiche A4 ou A6. Le scan ouvre la page produit du lien. Voir QR codes.
La page de paiement
Le lien s'ouvre en deux pages, à la même adresse : d'abord le produit, puis le paiement.
- Page produit (en-tête « Lien de paiement sécurisé ») : la couverture (l'image du produit, ou à défaut l'initiale et le nom de votre service), le titre, la description, votre nom (Marchand) et le Service, puis le prix dans le bandeau sombre « Prix (hors frais et arrondi éventuels) ». Pour un lien à prix libre, le client saisit sur cette page le montant à payer. Le bouton Procéder au paiement ouvre la page suivante. Sur ordinateur, la marque CashChap et une illustration s'affichent à gauche de la carte.
- Page de paiement (en-tête « Paiement sécurisé ») : le parcours du widget (Opérateur, Coordonnées, Validation), avec un onglet par moyen de paiement ouvert pour votre service (Mobile Money aujourd'hui). Le client voit le total exact, frais et arrondi compris, avant de confirmer. Tant que le paiement n'est pas lancé, le bouton ✕ en haut à droite, comme le bouton Retour du navigateur, ramène à la page produit.
Un lien désactivé ou inconnu affiche « Lien de paiement indisponible ». Le client reçoit son reçu par e-mail s'il a indiqué son adresse.
Après un paiement réussi, la page affiche un écran final « Paiement effectué » (« Merci ! Vous pouvez fermer cette page. ») sous le bandeau « Montant à payer », avec le reçu complet (logo et coordonnées du marchand, produit, montant, frais, total payé, opérateur, numéro, nom et e-mail du payeur, canal, date de Porto-Novo, références), son QR code d'authentification, les boutons Télécharger le reçu et Partager, puis Télécharger la facture (voir Reçu du client). Cet écran ne propose plus de payer à nouveau, et le bouton Retour du navigateur n'y revient pas sur le formulaire : le client peut fermer la page. Après un échec ou une expiration, il peut réessayer depuis la même page (Réessayer).
Sur ces écrans, le reçu est celui du payeur : son numéro est affiché en entier, sans « + », par groupes de deux chiffres (« 229 01 66 00 00 00 »), avec son nom et son e-mail s'il l'a donné ; seule la page publique de vérification les masque ; l'API, les webhooks et les journaux le donnent au format international sans « + » (2290166000000).
Pour un service réglé en euros, les mêmes écrans sont en euros : voir Ce que voit votre client. Les captures ci-dessous montrent un lien à prix fixe joué en mode test (d'où le bandeau « Mode test »), payé par Koffi Mensah avec le numéro de test 01 66 00 00 00 :
Devise du lien
Un nouveau lien est toujours dans la devise de votre service (Compte › Préférences), avec ses décimales (25,00 EUR ; 15 000 XOF). Le client voit le prix, les frais et le total dans cette devise, de la page produit jusqu'au reçu ; l'opérateur prélève dans la sienne (XOF au Bénin) et sa demande de confirmation peut annoncer ce montant-là. Voir Devise du service.
- Aucun lien n'est réécrit quand vous changez la devise du service. Un lien à prix fixe créé avant dans une autre devise garde son prix : le client le voit converti dans la devise du service au taux du moment (un lien à 15 000 XOF s'affiche 22,87 EUR sur un service en euros).
- En haut de Paiements › CashChap Link, un bandeau compte ces liens actifs et les nomme, chacun avec sa pastille « Prix en XOF, service en EUR » ; leur Détail le rappelle. Pour un prix rond dans la devise du service, créez un nouveau lien et désactivez l'ancien.
- Un lien à prix libre se paie toujours dans la devise du service : le client y saisit son montant.
- Dans Modifier, passer un lien à prix fixe à la devise du service demande une confirmation et vide le montant : saisissez le prix dans la nouvelle devise (15 000 XOF ne deviennent jamais 15 000 EUR par erreur).
- Un prix dans une autre devise que celle prélevée par l'opérateur (par exemple en euros, prélevé en XOF) porte des frais de change de 1 %, payés comme vos frais CashChap ; un ancien lien en XOF n'en a pas.
Suivre les paiements
- Les paiements reçus par un lien figurent dans Paiements › Paiements client ; dans l'API v2, ils portent
channel=payment_linketpayment_link={id, title}. - Un lien peut être modifié ou supprimé depuis le menu … de la liste (Modifier, Supprimer) ; les paiements déjà reçus sont conservés. Un lien désactivé (statut « Désactivé ») n'accepte plus de paiement.
- Vos webhooks sont appelés pour ces paiements comme pour les autres.
API publique des liens
La page de paiement s'appuie sur deux routes publiques de l'API v2, sans clé : vous pouvez les utiliser pour construire votre propre page de paiement autour d'un lien.
GET https://api.cashchap.com/v2/payment-links/{id}
{
"data": {
"id": "9b2f6c1e-3d4a-4e8b-a1c2-5f6e7d8c9b0a",
"object": "payment_link",
"title": "Atelier couture — acompte",
"description": "Acompte de la commande de septembre",
"product_name": "Robe sur mesure",
"amount": 15000,
"amount_fixed": true,
"currency": "XOF",
"display": {
"currency": "XOF",
"amount": 15000,
"converted": false,
"rate": { "value": 1, "per_unit": 1, "at": null, "source": "fixed" }
},
"cover_url": "https://…",
"active": true,
"mode": "live",
"kind": "link",
"merchant": { "public_name": "Atelier Hounkpè", "service_name": "Boutique en ligne" }
},
"meta": { "request_id": "req_…" }
}
curl -X POST https://api.cashchap.com/v2/payment-links/9b2f6c1e-3d4a-4e8b-a1c2-5f6e7d8c9b0a/collections \
-H "Idempotency-Key: 6f1e2d3c-4b5a-4968-8776-5a4b3c2d1e0f" \
-H "Content-Type: application/json" \
-d '{ "provider": "auto", "phone": "2290197000000",
"customer": { "name": "Afi Dossou", "email": "afi.dossou@example.com" } }'
- Le mode (Live ou Sandbox) est celui du lien ; aucune clé n'est exposée.
kindindique ce que représente l'adresse :link(un CashChap Link),shop(le QR code de la boutique, montant libre) oucheckout(un QR de caisse, avec en plusstatus,expires_at,expires_inetterminal). Un QR de caisse expiré, annulé, déjà payé ou en cours de paiement est refusé par ces routes (payment_link_expired,payment_link_cancelled,payment_link_already_paid,payment_link_in_progress).display(API 2.2.0) donne le prix à montrer au client :currency(devise du service),amount(prix du lien converti une seule fois,nullpour un prix libre),converted(truequand la devise du lien diffère de celle du service) etrate(value,per_unit,at,source). Sur un service en euros, ce lien donne"currency": "EUR", "amount": 22.87, "converted": true. Le devis et le reçu du lien portent aussi un blocdisplay.- Pour un lien à prix fixe, le montant est imposé par CashChap : un
amountdifférent est refusé (payment_link_amount_fixed). Pour un prix libre, envoyezamountetcurrency, dans la devise du service (celle que voit le client) ou dans celle du lien. - La réponse est la même que
POST /v2/collections: 202 avec la transactionpending, à suivre parGET /v2/transactions/{id}. - Pour protéger les payeurs, le nombre de demandes par lien et par numéro est limité (
rate_limited). Un lien désactivé répondpayment_link_inactive, un lien inconnupayment_link_not_found.
Tester un lien en mode Sandbox
Quand le portail est en environnement Sandbox, les liens créés s'ouvrent sur https://payment.cashchap.com/sandbox/{identifiant} : la page et le parcours sont les mêmes, les paiements sont simulés avec les numéros de test, et les transactions restent dans l'environnement de test. Idéal pour montrer le parcours à un client ou former une équipe.
Usages recommandés
- Vente directe d'articles ou de prestations sans boutique en ligne.
- Règlement de factures : un lien par facture, avec son numéro dans la description.
- Collecte de dons et cotisations, prix libre.
- Acomptes et réservations.
- Catalogue, vitrine ou prospectus imprimé : le QR code du lien mène directement à la page produit.