Vendre des comptes Nextcloud par abonnement avec Stripe : formules, quotas, essai

Guide pratique pour facturer des comptes Nextcloud : connectez votre propre compte Stripe, définissez des formules avec quotas et groupes, gérez renouvellements, TVA et échecs de paiement.

Si vous faites déjà tourner Nextcloud pour vous-même, la question suivante est souvent de savoir s'il peut financer son propre disque. Cashier, un plugin de MediaLab Works, transforme votre instance en un petit service payant : un visiteur choisit une formule, paie par carte via votre propre compte Stripe et reçoit un compte avec le bon quota et les bons groupes, connecté immédiatement. Aucune vérification d'identité, aucune validation manuelle, aucun tableur pour suivre qui a payé jusqu'à quand.

Ce guide traite de l'angle cloud payant : les formules avec quota et groupes, les comptes créés au paiement, les mises à niveau pour les utilisateurs existants, le délai de grâce en cas d'échec de carte, et la TVA via Stripe Tax ou Managed Payments. Il suppose que vous êtes à l'aise avec occ, cron et un tableau de bord Stripe. La référence complète se trouve dans le guide Cashier ; ce qui suit en est le parcours pratique. Vous pouvez en lire davantage sur le plugin sur la page produit.

Avant de vendre quoi que ce soit : droits, TVA et votre propre compte Stripe

Deux choses précèdent toute configuration.

D'abord, le côté juridique. Cashier facture vos utilisateurs via votre propre compte Stripe, et vous seul êtes responsable de détenir les droits sur le contenu ou le service que vous facturez. MediaLab Works fournit le logiciel et n'est pas partie à vos ventes. Stripe tient une liste des activités restreintes et peut fermer ou restreindre un compte qui facture un contenu sans en détenir les droits ; limitez donc votre offre à des médias que vous possédez ou pour lesquels vous disposez d'une licence.

Ensuite, le côté financier. Ouvrez un compte Stripe (gratuit à l'ouverture ; Stripe prélève ses propres frais par paiement) et assurez-vous que votre instance est joignable en HTTPS, car Stripe doit appeler le webhook. Les prix dans Cashier sont dans la devise de votre compte Stripe. Si vous activez Stripe Tax ou Managed Payments, la TVA est calculée et ajoutée sur la page de paiement Stripe : les formules sont créées avec un code de taxe, et la page d'inscription affiche le prix hors taxe en le précisant.

Prérequis

  • Nextcloud 30 à 34, PHP 8.1 ou plus récent, et un cron fonctionnel pour les tâches d'arrière-plan.
  • Une application d'inscription de MediaLab Works, installée, activée et sous licence : Sign-up 1.0 ou plus récent ou IDRegister 2.1 ou plus récent. Cashier utilise sa page d'inscription, sa confirmation par e-mail et sa création de compte. Sans elle, Cashier ne dispose que de sa propre page d'inscription basique.
  • Une licence Cashier (une par instance Nextcloud, essai gratuit de 30 jours).
  • Un compte Stripe et HTTPS, comme ci-dessus.

Étape 1 : installer et activer la licence de Cashier

Téléchargez l'archive cashier-x.y.z.tar.gz depuis Licences dans votre compte MediaLab Works, extrayez-la de façon à obtenir apps/cashier/ appartenant à l'utilisateur du serveur web, puis activez l'application :

sudo -u www-data php occ app:enable cashier

Ouvrez Paramètres d'administration → Cashier → Licence, collez votre clé et enregistrez. L'application se lie à cette instance et affiche Active. La licence est vérifiée une fois par jour ; hors ligne, elle continue de fonctionner 7 jours après la dernière vérification réussie.

À savoir avant de vous y fier : sans licence valide, aucune nouvelle inscription payante ni aucun paiement n'est accepté et la tâche d'arrière-plan ne s'exécute pas, mais les comptes et abonnements existants ne sont pas touchés. Stripe continue de facturer, le webhook continue d'enregistrer les renouvellements, les échecs de paiement et les annulations, et les abonnés conservent leur page Abonnement et le portail client Stripe. Rien n'est supprimé. Il en va de même si l'application d'inscription perd sa licence : les nouvelles inscriptions payantes s'arrêtent, les abonnés existants restent, et un paiement déjà en cours obtient tout de même son compte.

Étape 2 : connecter Stripe

Dans le tableau de bord Stripe, ouvrez Développeurs → Clés API, copiez la clé publique, et créez une clé restreinte avec accès en écriture à Clients, Sessions Checkout, Portail client, Produits, Prix, Abonnements et Points de terminaison de webhook, et accès en lecture à Factures (éventuellement Compte, en lecture, pour que la page de paramètres puisse afficher le nom et la devise du compte).

Collez les deux clés sous Paramètres d'administration → Cashier → Stripe. Commencez avec les clés de test (pk_test_…, rk_test_…) et passez aux clés de production quand tout fonctionne.

Appuyez ensuite sur Créer le webhook. Cashier enregistre https://<votre-cloud>/index.php/apps/cashier/webhook dans Stripe avec les événements nécessaires et enregistre le secret de signature. Si vous préférez le faire à la main, ajoutez vous-même le point de terminaison et collez le secret whsec_….

La vérification de configuration Cashier (Stripe) sous Administration → Vue d'ensemble passe au vert dès qu'un événement vérifié est arrivé. Faites un paiement de test, ou envoyez-en un avec la CLI Stripe (stripe trigger checkout.session.completed) ou depuis la page webhook du tableau de bord.

Étape 3 : définir vos formules

Rendez-vous dans Paramètres d'administration → Cashier → Formules → Ajouter une formule. Pour chaque formule, vous définissez :

  • Nom et description en anglais et en roumain.
  • Prix : mensuel, annuel ou les deux, dans la devise de votre compte Stripe. Avec Stripe Tax ou Managed Payments, la TVA est ajoutée sur la page de paiement.
  • Quota de stockage, par exemple 100 Go, et les groupes que rejoint l'abonné.
  • Jours d'essai gratuit, en option — la carte est tout de même collectée.
  • Visible sur la page d'inscription, ou masquée et accessible uniquement par un lien direct, ce qui est pratique pour une offre d'entreprise.

Les formules sont créées automatiquement dans Stripe. Modifier un prix crée un nouveau prix Stripe et maintient les abonnés existants sur l'ancien jusqu'à ce qu'ils changent de formule ; vous pouvez donc augmenter les prix sans réécrire l'abonnement de tout le monde du jour au lendemain.

Étape 4 : choisir la page d'inscription

Avec Sign-up (recommandé pour une inscription payante simple), la page à /index.php/apps/signup/ propose vos formules à côté du compte gratuit, ou à sa place (Sign-up → Inscription). Le visiteur choisit une formule, remplit le formulaire de Sign-up avec ses données personnelles et un mot de passe, confirme l'adresse, paie sur la page Stripe et revient connecté à un compte créé par Sign-up avec le quota et les groupes de la formule.

Avec IDRegister, une fois Cashier sous licence et au moins une formule visible, la page d'inscription à /index.php/apps/idregister/ propose « Payer une formule au lieu de scanner une pièce d'identité » sous l'option carte d'identité, sur téléphone comme sur ordinateur. Le visiteur choisit une formule et une période de facturation, saisit une adresse e-mail, accepte les conditions et la confirme avec le code à six chiffres d'IDRegister, paie sur Stripe, et revient sur une page qui attend quelques secondes la confirmation de Stripe. IDRegister crée alors le compte marqué vérifié par paiement, avec le quota et les groupes de la formule ; le nom d'utilisateur et un mot de passe sont affichés une fois, le navigateur se connecte, et un e-mail de bienvenue avec un lien pour choisir un mot de passe suit. Ces comptes évitent la carte d'identité, le selfie et l'approbation de l'administrateur ; l'adresse e-mail est verrouillée et le nom peut être modifié par l'utilisateur.

Dans Paramètres d'administration → IDRegister → Inscription payante, vous pouvez désactiver l'offre payante, ou désactiver « Exiger la vérification d'identité uniquement pour le parcours gratuit » afin que les visiteurs payants présentent aussi leur document et prennent le selfie d'abord. Si les deux applications sont installées, Règles → Page d'inscription payante décide où pointent les liens propres à Cashier (/index.php/apps/cashier/signup et le lien direct d'une formule masquée …/signup/plan/<token>, la formule étant déjà choisie). Un visiteur qui annule sur la page Stripe revient aux formules et rien n'est débité.

Étape 5 : mises à niveau pour les utilisateurs existants

Un compte gratuit ou vérifié par IDRegister peut acheter une formule pour obtenir plus d'espace. Les utilisateurs existants ne passent pas par la page d'inscription : ils achètent depuis Paramètres personnels → Abonnement, où ils voient aussi leur formule actuelle, le prochain paiement et les factures, et peuvent changer de formule, mettre à jour la carte ou annuler via le portail client Stripe. Indiquez-leur ce chemin dans vos réponses de support ; cela évite beaucoup d'allers-retours.

Étape 6 : renouvellements, échecs de paiement et délai de grâce

Les renouvellements prolongent automatiquement le compte. Quand un paiement échoue, Stripe retente la carte selon vos paramètres Stripe, et l'utilisateur reçoit une notification et un e-mail avec un lien pour mettre à jour la carte. Le compte continue de fonctionner pendant le délai de grâce, réglé dans Administration → Cashier → Règles de 0 à 90 jours (7 par défaut) ; 0 applique la règle suivante dès qu'un paiement échoue.

Après le délai de grâce, le compte passe en lecture seule (quota réduit à l'espace utilisé) ou est suspendu, selon votre choix. Les comptes inscrits via Sign-up suivent la règle de Sign-up, qui est la suspension par défaut. L'utilisateur reçoit un e-mail avec le lien pour payer la facture ouverte. Un utilisateur suspendu qui a perdu ce lien peut le redemander sur la page publique /index.php/apps/cashier/billing, liée depuis la page de Sign-up. Un paiement réussi rétablit immédiatement le compte, avec un e-mail.

La promesse importante à faire à vos utilisateurs : rien n'est jamais supprimé pour une facture impayée. Les fichiers, les partages et les données restent tels quels.

Étape 7 : garder un œil sur l'administration

Administration → Cashier liste vos abonnés et le revenu mensuel, et vous permet de prolonger manuellement un abonnement ou d'offrir une formule gratuite à un utilisateur. Chaque entrée renvoie au paiement dans Stripe. Les vérifications sous Administration → Vue d'ensemble couvrent à la fois Stripe et la page d'inscription, de sorte qu'un webhook cassé ou une application d'inscription manquante apparaît là plutôt que dans un ticket de support.

Conseils et dépannage

  • La vérification de configuration reste rouge. Aucun événement Stripe vérifié n'est encore arrivé. Faites un paiement de test ou déclenchez-en un avec la CLI Stripe, et confirmez que l'URL du webhook est joignable en HTTPS.
  • Aucune inscription payante n'apparaît. Vérifiez la licence Cashier et celle de Sign-up ou d'IDRegister, et confirmez qu'au moins une formule est visible. La section Page d'inscription des paramètres Cashier indique ce qui manque.
  • Un visiteur a payé mais n'a pas de compte. Recherchez le paiement dans Stripe et vérifiez les livraisons du webhook. Un paiement en cours au moment où l'application d'inscription a perdu sa licence obtient tout de même son compte, car Cashier le crée lui-même.
  • La TVA semble incorrecte sur la page d'inscription. Cette page affiche par conception les prix hors taxe quand Stripe Tax ou Managed Payments est activé ; la taxe est ajoutée sur la page de paiement Stripe.
  • Vous avez changé un prix. Les abonnés existants restent sur l'ancien prix Stripe jusqu'à ce qu'ils changent de formule. C'est le comportement attendu, pas un bug.
  • Questions de confidentialité. Les données de carte sont traitées uniquement par Stripe. Cashier stocke les identifiants client et abonnement Stripe, la formule et les dates de paiement, et les comptes créés par paiement sont marqués « vérifié par paiement », et non par document d'identité.

Conclusion

Cashier est un outil ciblé qui fait un seul travail : relier une page d'inscription Nextcloud à votre propre compte Stripe, pour qu'une formule devienne un compte avec le bon quota et les bons groupes, et qu'une carte en échec devienne un délai de grâce plutôt qu'un utilisateur supprimé. Définissez quelques formules, testez avec les clés de test Stripe, regardez les vérifications de la vue d'ensemble passer au vert, et vous avez un petit cloud payant qui tourne sur une infrastructure que vous comprenez déjà. Si quelque chose ne colle pas, la base de connaissances et la FAQ sont l'étape suivante, et vous pouvez toujours nous contacter. Les notes de version sont dans le journal des modifications.

Cet article a été rédigé avec l’aide de l’IA à partir de la documentation de nos produits ou des sources indiquées et vérifié automatiquement avant publication.

À lire ensuite

Vous utilisez Emby, Jellyfin ou Nextcloud ?

Nos plugins et applications ajoutent la TV en direct, les sous-titres, l’inscription et la sécurité à votre propre serveur, avec un essai gratuit.