Aller au contenu principal
Tous les articles
Guide13 min de lecture

Vendre une formation en ligne au Maroc : encaisser, puis donner l'accès après paiement

Vendre une formation en ligne au Maroc : vente à l'unité, cohorte à places limitées ou adhésion mensuelle, accès donné sur webhook, politique de remboursement.

Vendre une formation en ligne au Maroc, c'est d'abord choisir un modèle de vente, puis brancher l'accès sur la preuve du paiement. À l'unité — un e-book, un cours enregistré, une séance de coaching —, un lien de paiement ou une page produit suffisent. Pour une cohorte à places limitées, un lien à usage unique par inscrit, avec une date limite s'il est réglé par carte. Pour une adhésion mensuelle, un abonnement : un lien de paiement envoyé par e-mail à chaque échéance. Dans les trois cas, le client paie en dirhams sur une page hébergée, et c'est la preuve du paiement — jamais le retour sur votre site — qui ouvre l'accès. Ce guide détaille chaque modèle, l'attribution de l'accès au bon élève et la politique de remboursement.

Vendre une formation en ligne au Maroc : trois modèles, trois outils

ChariPay est une plateforme de paiement marocaine, un PSP opéré par Chari Money, établissement de paiement agréé par Bank Al-Maghrib. Elle encaisse ; elle ne remplace pas votre plateforme de cours, votre groupe privé ou votre outil d'envoi de fichiers, et elle n'y est pas branchée d'office. Votre travail consiste à relier les deux : quand le paiement est acquis, vous ouvrez l'accès. Tout est en dirhams marocains (MAD), sans conversion.

ModèleOutil ChariPayCe qui déclenche l'accès
Vente à l'unité : e-book, modèles, cours enregistré, séance de coachingLien de paiement, ou page produit de la boutique hébergéePaiement par carte : payment.succeeded (lien) ou order.paid (boutique)
Cohorte à places limitées : bootcamp, atelier en ligne, promotion de rentréeUn lien à usage unique par inscrit, avec date d'expiration s'il est réglé par carte, ou un produit à stockPaiement par carte : payment.succeeded (lien) ou order.paid (boutique) ; espèces sur un lien : le lien passe « Payé »
Adhésion mensuelle : club, bibliothèque de cours, suiviAbonnement : un lien de paiement par échéance, envoyé par e-mailsubscription.payment_succeeded

Deux voisins ont leur propre guide. Si vous éditez un logiciel vendu en abonnement, avec ouverture et coupure d'accès automatiques, lisez facturer un SaaS au Maroc. Si vous êtes une école, avec des familles et une année scolaire, lisez frais de scolarité en ligne. Ce guide s'adresse au formateur, au coach ou au créateur qui vend son savoir en ligne.

Vendre des produits numériques à l'unité : lien ou page produit

Pour un produit vendu à l'unité, deux outils.

Le lien de paiement. Un lien de paiement, c'est un montant et une description ; le client paie sur une page hébergée par ChariPay. Il se partage par lien, QR code, affiche PDF à imprimer, e-mail ou WhatsApp. Depuis le portail, chaque lien de paiement créé est à usage unique : un lien par acheteur, au prix de la formation. Le lien réutilisable — un même montant payé par plusieurs clients, celui qu'on place dans une bio, une newsletter ou un groupe d'élèves — se crée par l'API, avec singleUse: false ; une fois créé, il apparaît dans le portail comme les autres. Un lien porte un montant fixe : pour un prix de lancement ou un tarif étudiant, créez un lien distinct.

Une limite à connaître : l'événement de paiement d'un lien renvoie le metadata du lien ; avec un lien réutilisable, c'est donc le même pour tous les acheteurs — il dit ce qui a été vendu, pas à qui. Pour rattacher chaque paiement à un élève précis — ce qui compte dès que l'accès est personnel —, un lien à usage unique par élève, créé avec ses coordonnées, reste le plus sûr.

La page produit de la boutique hébergée. Pas encore de site ? Publiez vos produits sur votre vitrine hébergée et suivez vos commandes — en attente de paiement, payée, expédiée, livrée — depuis votre portail. Chaque formation y devient un produit avec son prix et sa page de vente, et chaque achat une commande que vous suivez. C'est la voie sans développeur pour vendre plusieurs fois une formation au même prix : partagez le lien de sa page. Le pas-à-pas est dans boutique hébergée.

Dans les deux cas, ni le lien ni la boutique ne livrent votre cours : c'est vous qui envoyez l'accès, une fois le paiement confirmé.

Essayez avec votre première formation avant de la mettre en vente : Commencer en mode test. Trois champs (nom, e-mail professionnel, entreprise), un lien d'activation reçu par e-mail pour choisir votre mot de passe, puis le portail, où vous créez vous-même votre clé de test. Créez le lien de votre formation et payez-le avec la carte de test, comme le ferait un élève : aucun argent réel ne circule.

Cohorte à places limitées : un lien par inscrit, une date limite

Une cohorte a deux contraintes : un nombre de places et une date de clôture. Le lien de paiement à usage unique répond aux deux. Un lien est à usage unique ou réutilisable, avec une expiration au choix — 24 heures, 7 jours, 30 jours, jamais, ou une date précise — et un statut clair : actif, payé, annulé, expiré.

La méthode :

  1. 1Un lien à usage unique par inscrit, au prix de la formation, avec son nom dans la description.
  2. 2Une expiration à une date précise pour un lien réglé par carte, la veille du démarrage par exemple, ou la date limite que vous avez annoncée.
  3. 3Autant de liens que de places : c'est vous qui fixez le plafond, en ne créant pas un lien de plus.
  4. 4Une liste d'attente : quand un lien expire sans être payé, la place revient au suivant, avec un nouveau lien.

Autre option si vous vendez par la boutique hébergée : un produit avec un stock optionnel, réglé sur le nombre de places, et la liste des commandes payées dans le portail.

Le lien à usage unique a un dernier atout pour une cohorte : sur sa page, l'élève peut aussi régler en espèces en agence. Il choisit les espèces, reçoit une référence, la règle dans une agence du réseau Chari, et vous êtes notifié dès que le réseau confirme le dépôt. Une session de paiement créée par l'API, elle, n'encaisse que la carte.

Un réglage compte ici. Dans le portail, activer « Paiement en agence » sur un lien désactive son expiration : le lien reste payable sans limite de temps. Un lien qui porte une date d'expiration se présente donc comme un lien à régler par carte ; pour un élève qui paie en espèces, créez un lien avec « Paiement en agence », sans expiration. Les autres réglages sont décrits sur la page des liens de paiement.

Adhésion mensuelle : un lien de paiement à chaque échéance

Un club de formation, une bibliothèque de cours renouvelée chaque mois, un suivi de coaching mensuel : c'est un abonnement. À chaque échéance, ChariPay génère un lien de paiement à usage unique et l'envoie par e-mail à votre élève, qui le règle par carte sur la page de paiement hébergée, avec 3-D Secure. Le premier paiement active l'abonnement.

Ce que vit l'élève, et ce que vous gérez :

  • Un lien à chaque échéance : il reçoit par e-mail un lien de paiement pour la période, avec la description de l'abonnement ; aucun lien n'est envoyé avant la date de première échéance que vous avez choisie.
  • Des rappels tant que l'échéance n'est pas réglée : un rappel part chaque jour par e-mail, avec le même lien, et aucune nouvelle période ne s'ouvre ; le lien reste payable 14 jours après la date d'échéance.
  • Une fin propre : si le lien expire sans paiement, l'abonnement est annulé automatiquement ; subscription.canceled signale cette annulation automatique, et c'est à sa réception que vous coupez l'accès, pas avant. Quand c'est vous qui annulez — depuis le portail ou par l'API —, n'attendez pas d'événement : la réponse de POST /v1/subscriptions/{reference}/cancel porte déjà le statut CANCELED ; mettez votre système à jour à ce moment-là. Arrivé à sa date de fin, l'abonnement passe à « terminé ».
  • Des statuts lisibles : à démarrer, actif, en pause, terminé, annulé ; pause, reprise et annulation depuis le portail ou par l'API.

Le fonctionnement complet — échéancier, rappels, pause, résiliation — est décrit dans abonnements et paiements récurrents ; ce qui se passe quand une échéance reste impayée est détaillé dans échéance d'abonnement impayée. Retenez l'essentiel pour une formation : l'accès suit le statut de l'abonnement, et c'est votre système qui l'applique.

Donner l'accès après paiement, jamais avant l'événement

La règle de toute vente en ligne vaut doublement pour un produit numérique, qui se copie et se partage. Confirmez la commande sur réception du webhook, jamais sur la seule redirection : la redirection dit que l'acheteur est revenu, pas que le paiement est acquis. Un élève qui revient sur votre page « merci » n'a pas forcément payé ; ne lui envoyez rien avant l'événement.

ModèleL'événement qui ouvre l'accès
Lien de paiement ou session, payés par cartepayment.succeeded
Commande de la boutique hébergée, payée par carteorder.paid
Échéance d'abonnementsubscription.payment_succeeded
Lien à usage unique réglé en espècesLe lien passe « Payé » : notification dans le portail ; côté serveur, GET /v1/payment-links/{reference}

Sans développeur, la méthode reste valable : vous êtes notifié dans le portail à l'encaissement, et vous envoyez l'accès à la main — l'invitation au groupe, le lien de téléchargement, les identifiants de la plateforme. Avec un développeur, votre serveur reçoit l'événement, vérifie sa signature, et ouvre l'accès tout seul. Les cinq erreurs qui font rater cette étape — signature, doublons, travail lourd dans la requête — sont dans réussir son intégration des webhooks.

Attribuer l'accès au bon élève

Un événement de paiement ne sert à rien si vous ne savez pas à qui il correspond. L'outil, c'est metadata : un objet plat — chaînes, nombres, booléens, sans objet imbriqué ni tableau, 4 Ko au plus — que vous envoyez à la création du lien ou de la session, et qui vous est renvoyé tel quel dans l'événement de paiement. Mettez-y ce dont votre système a besoin pour ouvrir le bon accès : courseId, cohort, votre identifiant d'élève.

Trois règles évitent les mauvaises surprises :

  • Retrouvez votre commande par votre `metadata`, renvoyé tel quel dans l'événement ; pour une session, l'événement porte aussi votre `orderId`. L'externalId d'une session ou d'un lien, lui, ne revient pas dans l'événement : il sert à ne pas créer deux fois la même ressource.
  • Pour la boutique hébergée, le metadata du produit revient dans le payment.succeeded compagnon, pas dans order.paid : écoutez les deux.
  • Aucune donnée sensible dans `metadata` : un identifiant suffit, jamais un mot de passe ni un numéro de pièce d'identité.

Le tableau complet des identifiants — qui les crée, où ils reviennent — est dans relier un paiement à sa commande.

Politique de remboursement d'une formation

Un produit numérique pose une question qu'une paire de chaussures ne pose pas : une fois le cours consulté, que rendre ? La réponse vous appartient, mais elle doit être écrite avant la vente, sur votre page ou dans le message qui accompagne le lien. Une politique claire distingue au moins deux moments : avant le début (ou avant le premier accès) et après l'accès.

Pour un paiement par carte, le geste est toujours le même : remboursez un client, en totalité ou partiellement, depuis le portail ou par l'API. Le remboursement est gratuit ; son montant est déduit de votre solde disponible, et si le solde ne suffit pas, l'opération est bloquée plutôt que de créer un découvert. Un remboursement n'est pas instantané côté banque : prévenez l'élève sans lui promettre de date. Et coupez l'accès au moment où vous remboursez, pas avant ni des semaines après.

Pour la facturation et la fiscalité de vos formations, votre conseil reste seul à pouvoir se prononcer. Le mode d'emploi du remboursement — appel API, suivi, message au client — est dans rembourser un client, et la vue d'ensemble de la vente en ligne dans le guide du paiement e-commerce au Maroc.

Questions fréquentes

Comment encaisser une formation en ligne sans site web ?

Avec un lien de paiement à usage unique par élève, créé depuis le portail et partagé par WhatsApp, e-mail ou QR code : le client paie sur une page hébergée par ChariPay, et vous êtes notifié dans le portail à l'encaissement. Pour vendre plusieurs fois la même formation au même prix, ou tout un catalogue, la boutique hébergée vous donne une page de vente par produit et le suivi des commandes, toujours sans site à construire.

Comment donner l'accès automatiquement après le paiement ?

En branchant votre serveur sur l'événement de paiement par carte : payment.succeeded pour un lien ou une session, order.paid pour la boutique hébergée, subscription.payment_succeeded pour une adhésion. Votre serveur vérifie la signature, lit votre metadata pour identifier l'élève et le cours, puis ouvre l'accès. Jamais sur la redirection : elle dit que l'acheteur est revenu, pas qu'il a payé.

Peut-on vendre une formation en abonnement mensuel ?

Oui, avec un abonnement. À chaque échéance, l'élève reçoit par e-mail un lien de paiement qu'il règle par carte sur la page hébergée, avec 3-D Secure ; tant qu'il n'a pas payé, un rappel part chaque jour, et si le lien reste impayé 14 jours après l'échéance, l'abonnement est annulé automatiquement. Ouvrez l'accès à chaque subscription.payment_succeeded et coupez-le sur subscription.canceled ; si c'est vous qui annulez, depuis le portail ou par l'API, coupez-le aussitôt, sans attendre d'événement.

Comment limiter le nombre de places d'une cohorte ?

En créant exactement autant de liens à usage unique que de places, un par inscrit, avec une expiration à la date de clôture pour ceux qui paient par carte. Un lien expiré sans paiement libère la place pour la personne suivante. Si vous vendez par la boutique hébergée, réglez le stock optionnel du produit sur le nombre de places et suivez les commandes payées dans le portail.

Un élève peut-il payer sa formation en espèces ?

Oui, avec un lien de paiement à usage unique, créé dans le portail avec « Paiement en agence », donc sans expiration : sur sa page, l'élève choisit les espèces, reçoit une référence et la règle dans une agence du réseau Chari. Dès que le réseau confirme le dépôt, le lien passe « Payé » et vous êtes notifié dans le portail. Une session de paiement créée par l'API ou un lien réutilisable n'encaissent que la carte.

Comment rembourser un élève qui annule son inscription ?

S'il a payé par carte, selon votre politique écrite avant la vente, en totalité ou partiellement, depuis le portail ou par l'API. Le remboursement est gratuit, son montant est déduit de votre solde disponible, et il n'est pas instantané côté banque. Coupez l'accès au moment du remboursement. Si l'élève n'avait pas encore payé, annulez simplement son lien : un lien annulé ne peut plus être payé.

Dans quelle devise vendre ses formations en ligne ?

En dirhams marocains : tout est en MAD — encaissements, soldes, virements et versements —, sans conversion. Les montants de l'API sont en unités majeures (149.90 = 149,90 MAD). Affichez donc vos prix en dirhams sur votre page de vente, pour que le montant lu par l'élève soit exactement celui qu'il retrouvera sur la page de paiement.

Prochaine étape

Choisissez votre modèle — unité, cohorte ou adhésion —, puis créez en mode test le lien, le produit ou l'abonnement qui lui correspond : Commencer en mode test. Branchez ensuite l'ouverture de l'accès sur l'événement de paiement, en suivant réussir son intégration des webhooks, et préparez votre catalogue avec la boutique hébergée.

Écrit par Équipe ChariPay.

À lire ensuite

Prêt à essayer par vous-même ?

Créez votre compte et encaissez en mode test dès aujourd'hui : c'est gratuit, sans validation à attendre. Une question ? Notre équipe répond aux commerçants comme aux développeurs.

  • Gratuit, sans engagement
  • Mode test dès l'inscription
  • Aucune validation à attendre