CUSTOMER PORTAL POUR
Prérequis
- Customers Stripe liés à vos comptes tenants (`stripe_customer_id` en base)
- Abonnements ou factures récurrentes actifs en mode test
- Configuration Portal créée dans Stripe Dashboard (Branding + features)
- Route API pour créer une session Portal (`billingPortal.sessions.create`)
Sans self-service, chaque changement de carte, téléchargement de facture ou annulation d’abonnement tombe sur le support agence ou le client final. Le Customer Portal Stripe expose une interface hostée sécurisée — à condition de cadrer les actions autorisées. Vous allez configurer le portail et tester les parcours B2B avant mise en production.
Configurer le Portal côté Stripe
Dans le Dashboard Stripe, activez les fonctionnalités : mise à jour moyen de paiement, historique factures, changement de plan (si Prices autorisés), annulation.
Limitez les Products modifiables en self-service pour éviter qu’un client Starter passe seul en Enterprise négocié au téléphone.
Personnalisez les URLs de retour et les textes légaux (CGV, mentions de résiliation). Le PO valide le wording avec le client.
Intégrer le lien depuis votre application
Route POST `/api/billing/portal` : authentifiez l’utilisateur, récupérez `stripe_customer_id`, appelez `stripe.billingPortal.sessions.create({ customer, return_url })`.
Redirigez vers `session.url`. Le `return_url` pointe vers votre espace client (ex. `/account/billing`).
Ne exposez jamais la clé secrète côté client. Le bouton « Facturation » déclenche uniquement votre API.
Factures PDF et conformité B2B
Le Portal liste les Invoices Stripe avec PDF téléchargeable. Vérifiez que les champs société (SIRET, TVA intracom) sont renseignés sur le Customer si requis.
Pour les clients français B2B, croisez avec la fiche TVA Europe si vous gérez autoliquidation ou numéros VAT validés.
Synchronisez les statuts `invoice.paid` vers votre ERP ou Airtable via webhook pour la compta client.
Erreurs fréquentes
Customer Portal activé sans lier les users app à un `stripe_customer_id` : session impossible.
Autoriser tous les changements de plan : contournement du cycle de vente B2B.
Oublier le `return_url` HTTPS valide : erreur en production.
Branding Portal laissé par défaut Stripe sur un produit white-label client.
Annulation immédiate activée par erreur sur des contrats annuels prepayés.
Ce qu’il faut retenir
Customer Portal = self-service hosté Stripe pour paiement, factures et abonnement.
Session créée côté serveur à la demande, liée au Customer du tenant.
Configurez fin de période vs annulation immédiate selon le contrat B2B.
Complétez avec webhooks factures pour la compta et le support.
FAQ
Pour 80 % des besoins B2B (carte, PDF, annulation), oui. Gardez une page custom si vous affichez usage metered ou des métriques produit non disponibles dans Stripe.
Dans la configuration Portal, limitez les Products Prices éligibles. Les upgrades Enterprise passent par vente assistée et Invoice manuelle.
Stripe détecte la locale du navigateur. Vérifiez les libellés légaux personnalisés ; les textes système suivent la langue du client quand disponible.