Principes de facturation

Comprendre comment la facturation est modélisée dans Starter Free et où brancher Stripe sans réécriture.

Starter FreeMise à jour 27 avril 2026
DémarrageFacturation

Vue d’ensembleLien vers la section

La facturation est l’un des flux de travail SaaS les plus importants, mais aussi l’un des plus faciles à câbler de manière incorrecte.

Starter Free vous donne le surface UX de facturation complète tout en gardant la mise en œuvre intentionnellement simulée.

Vous obtenez la structure orientée produit:

  • plan actuel
  • date de renouvellement
  • sièges
  • mode de paiement
  • Historique des factures
  • point d'entrée du portail de facturation

Mais vous n'avez pas encore le moteur de facturation.

Idée de base

Starter Free modélise l'expérience de facturation. Starter Pro câble la couche métier de facturation.

Philosophie de facturationLien vers la section

Starter Gratuit expédie le surface de facturationPas le moteur de facturation.

InclusNon inclus
Affichage des plansStripe Checkout
Informations sur le renouvellementWebhooks à rayures
Sièges conceptsynchronisation du cycle de vie de l'abonnement
Historique des factures UILes vraies factures Stripe
Point d'entrée du portail de facturationCréation de session de portail client
Mode de paiement SurfaceContrats de facturation backend

Cette séparation vous permet de valider l'UX de monétisation avant de vous engager dans une architecture Stripe complète.

Pourquoi cela compte

La facturation n’est pas qu’une page. C’est un workflow de revenus. L'interface utilisateur peut être simulée tôt, mais la mise en œuvre de la production doit être câblée avec soin.

Ce que vous comprendrezLien vers la section

Surface de facturation

Comprendre le plan simulé, les sièges, le mode de paiement et les points d'entrée de facturation.

Modèle de facture

Découvrez comment l'historique des factures est représenté avant de le remplacer par des données Stripe réelles.

Limite de Stripe

Sachez où Checkout, Portal, webhooks et la synchronisation des abonnements se connectent plus tard.

Modèle mentalLien vers la section

L'interface de facturation est stable. La mise en œuvre de la facturation évolue derrière elle.

CoucheResponsabilité
UIPlan, factures, mode de paiement, sièges, actions du portail
BackendCrée des sessions de paiement et de portail
StripePaiements, abonnements, factures, état des clients
WebhooksSource de vérité pour les changements de cycle de vie
Base de donnéesStocke l'état de facturation synchronisée pour l'application

Règle de production

Ne traitez jamais la page de facturation comme la source de la vérité. Les événements Stripe et votre état de backend doivent générer la facturation de production.

ÉtapesLien vers la section

Comprendre l'route de facturationLien vers la section

La surface de facturation vit ici:

route
app/(app)/billing/page.tsx

Il simule :

  • plan actuel
  • sièges
  • date de renouvellement
  • statut de l'abonnement
  • mode de paiement
  • Historique des factures
  • action du portail de facturation

Cet route est conçu pour ressembler à une véritable zone de facturation SaaS avant que le intégration backend n'existe.

Revoir le modèle d'abonnement simuléLien vers la section

Starter Free utilise un objet d'abonnement simulé.

app/(app)/billing/page.tsx
const plan = {
  name: "Pro",
  priceLabel: "€29 / month",
  seats: 10,
  renewalIso: "2026-03-01",
  status: "active",
};

Plus tard, cela devrait être remplacé par votre état d'abonnement backend.

app/(app)/billing/page.tsx
const plan = await getCurrentSubscription(user.id);

L'interface utilisateur ne devrait pas avoir besoin d'une réécriture lorsque la source change.

Remplacer les factures par des données sauvegardées par StripeLien vers la section

L'historique des factures commence comme des données fictives.

app/(app)/billing/page.tsx
const MOCK_INVOICES = [
  {
    number: "INV-0001",
    amountCents: 2900,
    status: "paid",
  },
];

Plus tard, les factures doivent provenir de Stripe ou d'un tableau de factures synchronisées dans votre base de données.

server/billing/invoices.ts
export async function listInvoices(customerId: string) {
  return stripe.invoices.list({
    customer: customerId,
    limit: 10,
  });
}

Transférer le portail de facturation plus tardLien vers la section

Le frontend doit appeler votre backend, pas Stripe directement.

endpoint
POST /api/billing/portal

Votre backend crée la session du portail :

app/api/billing/portal/route.ts
const session = await stripe.billingPortal.sessions.create({
  customer: stripeCustomerId,
  return_url: "https://yourapp.com/billing",
});

Ensuite, le frontend redirige :

app/billing/page.tsx
window.location.href = session.url;

Frontière de sécurité

Les clés Stripe doivent rester sur le serveur. Le navigateur ne devrait recevoir qu'une URL de session créée par votre backend.

Cycle de vie des StripeLien vers la section

Un système de facturation de production suit habituellement ce flux :

stripe-lifecycle.txt
User selects a plan
  ↓
Stripe Checkout opens
  ↓
Payment or subscription is created
  ↓
Stripe sends webhook event
  ↓
Backend verifies event
  ↓
Database subscription state updates
  ↓
App reads updated billing state

Checkout commence à générer des revenus

Checkout creates the initial payment or subscription flow between your product and Stripe.

Checkout sessionSubscription creationBackend endpointPayment initiation

Guide de décisionLien vers la section

Starter Free est suffisant lorsque :

  • vous validez les prix UX
  • vous avez besoin d'une page de facturation crédible dans une démo
  • vous souhaitez afficher les surfaces de plan, de facture et de paiement
  • vous n'acceptez pas encore de paiements réels

Starter Pro devient le chemin le plus rapide lorsque :

  • Des paiements réels sont nécessaires
  • Stripe Checkout doit fonctionner
  • webhooks doit mettre à jour votre application
  • les factures doivent refléter l'historique réel des clients
  • l'état de l'abonnement contrôle l'accès au produit
  • Auth et la facturation doivent travailler ensemble

Prêt à transformer la facturation en chiffre d’affaires ?

Starter Free valide l'UX. Starter Pro vous permet clients pour de vrai.

→ Mise à niveau vers Starter Pro

Préférez

  • garder l'interface de facturation distincte de l'implémentation de Stripe
  • créer des sessions Checkout et Portal sur le serveur
  • Utiliser les webhooks comme source de vérité du cycle de vie
  • stocker l'état de facturation synchronisée dans votre base de données d'applications
  • rendre la copie de facturation claire, spécifique et digne de confiance

Éviter

  • Appeler les API secrètes de Stripe depuis le navigateur
  • Traiter l'état de l'interface utilisateur comme une vérité de facturation
  • sauter la vérification de webhook
  • Déverrouiller les fonctionnalités payantes avant la confirmation du backend
  • Cacher les échecs de paiement derrière des messages d'erreur vagues

copywriting UXLien vers la section

Les pages de facturation sont des surfaces de confiance. La copie devrait réduire le doute et expliciter les actions liées à l'argent.

Utilisez des étiquettes claires :

  • “Gérer la facturation”
  • “Voir les factures”
  • “Mise à jour du mode de paiement”
  • « Changer de plan »
  • « Annuler l’abonnement »

Évitez les étiquettes vagues :

  • “Continuer”
  • “Soumettre”
  • “Ouvert”
  • “Confirmer”

Principe de conversion

La copie de facturation devrait rendre la prochaine action évidente. Les utilisateurs ne devraient jamais se demander s’ils commencent à passer à la caisse, ouvrent un portail, modifient un plan ou annulent l’accès.

Questions courantesLien vers la section

Prochaines étapesLien vers la section

Mise à niveau lorsque la facturation devient réelle

Starter Free vous donne la surface de facturation. Starter Pro vous offre la couche métier prête pour la production : auth, Stripe, structure backend et livraison sécurisée.

Mettre à niveau vers Starter Pro