Facturation
Stripe héberge les pages de paiement et le portail de facturation. Vos forfaits sont écrits en code, et un espace de travail ne change de forfait que sur un webhook signé de Stripe.
En bref
- Stripe Checkout et portail client : votre serveur ne voit jamais un numéro de carte.
- Forfaits et prix tiennent dans un fichier ; une commande les copie chez Stripe.
- Les forfaits s'affichent sans compte Stripe tant que la facturation reste désactivée.
Vos forfaits sont du code
Les forfaits et leurs prix tiennent dans une seule liste, partagée par le serveur et l'app web. Une commande crée les produits, les prix et les réglages de portail correspondants chez Stripe ; la relancer ne change rien.
- Un nouveau montant crée un nouveau prix ; les abonnés gardent le leur jusqu'à leur prochain changement de forfait
- La commande refuse une clé Stripe live sauf si vous ajoutez --live
- Des prix mensuels et annuels, en euros jusqu'à ce que vous changiez une constante
{ key: 'pro', monthlyPriceInCents: 1200, yearlyPriceInCents: 12000, memberLimit: 20, isHighlighted: true, },| Forfait | Mensuel | Annuel | Membres |
|---|---|---|---|
| Gratuit | 0 € | 0 € | Jusqu'à 3 membres |
| Pro | 12 € | 120 € | Jusqu'à 20 membres |
| Business | 29 € | 290 € | Sans limite |
Paiement et portail, hébergés par Stripe
« Passer à ce forfait » ouvre Stripe Checkout. Une fois abonné, un changement de forfait ouvre le portail de Stripe sur une confirmation avec le montant au prorata, et « Gérer la facturation » l'ouvre pour la carte, les factures, les coordonnées de facturation et la résiliation.
- Seuls les admins ouvrent Checkout ou le portail ; les membres voient le forfait et son état
- Stripe affiche les moyens de paiement que vous activez dans son tableau de bord
- Un espace de travail n'a jamais deux abonnements
- Un admin clique sur « Passer à ce forfait »Le serveur demande d'abord à Stripe si l'espace de travail paie déjà un forfait.
createCheckoutSession - Stripe Checkout encaisse le paiementSur la page de Stripe, dans la langue de l'utilisateur. Votre serveur ne voit jamais la carte.
- Stripe envoie un webhook signéLe serveur vérifie la signature, enregistre l'événement et répond aussitôt.
POST /webhooks/stripe - Le worker synchronise l'abonnementIl lit les abonnements du client chez Stripe et enregistre ce que Stripe indique à cet instant.
- Le nouveau forfait est en vigueurLa page Facturation, qui vérifie toutes les 2 secondes après un paiement, l'affiche.
Des webhooks dans une table de réception, traités en arrière-plan
Chaque événement Stripe est vérifié, enregistré une seule fois dans une table de réception et confié au worker. Le worker relit l'abonnement chez Stripe à chaque fois : un événement en retard, en double ou dans le désordre donne le même résultat.
- La page de succès du paiement n'accorde rien : n'importe qui peut ouvrir son adresse
- Une tâche en échec est relancée 10 fois, à intervalles croissants ; un cron reprend tout événement laissé en route
- Un espace de travail impayé garde son forfait pendant un délai de grâce, 14 jours par défaut
checkout.session.completedTraitécustomer.subscription.createdTraitéinvoice.paidTraitéorganizationMembership.createdTraitécustomer.subscription.updatedEn fileDes forfaits qui fixent la taille de l'équipe
Chaque forfait peut limiter son nombre de membres. Dès la première requête d'un espace de travail, puis après chaque changement de forfait, une tâche de fond transmet la limite de son forfait à son organisation Clerk, et les écrans d'invitation de Clerk refusent quiconque la dépasse.
- Les limites figurent dans la même liste que les prix
- Fixer deux fois la même limite ne change rien : la tâche peut se répéter sans risque
Litiges et remboursements, jamais manqués
Quand un client conteste un paiement, qu'une banque signale une fraude ou qu'un paiement est remboursé, l'app l'enregistre avec l'espace de travail concerné et vous alerte, avec un lien vers le tableau de bord Stripe et ce qu'il faut faire avant l'échéance.
- L'accès ne change jamais tout seul : c'est vous qui décidez, dans Stripe
- Les alertes vous parviennent dans les logs, et par e-mail une fois Sentry connecté
| Ce qui s'est passé | Alerte | Ce que vous faites |
|---|---|---|
| Un litige est ouvert | Erreur, avec l'échéance | Y répondre dans Stripe avant l'échéance |
| Une alerte précoce de fraude | Erreur | Rembourser le paiement, pour qu'il ne puisse plus être contesté |
| Un litige est clos | Erreur si perdu, avertissement si gagné | Résilier l'abonnement, si vous le souhaitez |
| Un paiement est remboursé | Avertissement | En général, rien |
Questions
Faut-il un compte Stripe pour commencer ?
Non. Facturation désactivée, le réglage par défaut, la page Facturation montre vos forfaits avec des boutons « Bientôt » et tout le reste fonctionne. Activez-la avec une sandbox Stripe quand vous êtes prêt.
Les taxes sont-elles gérées ?
Stripe Tax s'en charge, une fois votre immatriculation fiscale faite : votre immatriculation dans Stripe, puis quelques lignes dans un seul fichier, détaillées pas à pas dans le guide de facturation. Un expert-comptable doit confirmer les règles de votre pays.
Les remboursements et les litiges sont-ils gérés ?
Oui. Litiges, remboursements et alertes précoces de fraude sont enregistrés avec l'espace de travail concerné, et vous recevez une alerte avec un lien vers le tableau de bord Stripe et ce qu'il faut faire. L'accès ne change jamais tout seul : vous gardez la main.
Découvrir les autres fonctionnalités
- Connexion et espaces de travailComptes Clerk, équipes et rôles vérifiés dans votre code.
- Garde-fous pour l'IAUn règlement, des règles de lint qui expliquent, et yarn verify.
- Design system70 composants, 466 icônes et des tokens pour le clair et le sombre.
- ArchitectureUn seul dépôt : app web, API, worker et code partagé.
- SécuritéEndpoints verrouillés, limites de débit, sauvegardes, alertes.
Démarrez votre prochaine app sur une base propre
Payez une fois et obtenez tout le code source, avec toutes les mises à jour futures.