Aller au contenu
Publié

Dernière revue: 2026-09-14

Plans, credits, and entitlements

Gérez les offres CodeCleared, pools de crédits, rétention, factures et cycles de vie, y compris les changements d’offre et réponses 402.

Objectif

La facturation détermine les crédits, la rétention et les fonctionnalités disponibles pour une organisation. Ouvrez Paramètres → Facturation pour l’abonnement actuel et les conditions commerciales exactes.

Paramètres → Facturation est organisé en quatre onglets :

OngletPour
AperçuVoir l’offre, les licences du mois et les soldes de crédits ; corriger un échec de paiement
RechargesAcheter des packs de crédits, gérer les licences Team, ou l’add-on SAST
OffreChanger de plan ou de période, ouvrir le portail Stripe, saisir un coupon ; l’auto-recharge est sous Options avancées
HistoriqueFactures Stripe et journal des crédits (filtres + export CSV)

Les organisations clientes ne voient que Historique (compte de facturation parent).

Pour qui

Les responsables de facturation gèrent les abonnements. Les propriétaires d’organisation consultent les droits ; les membres demandent une modification à un propriétaire.

Prérequis

Identifiez l’organisation facturée et si le travail utilise des scans principaux ou des scans de code source : leurs réserves de crédits sont distinctes.

Fonctionnement

OffreCrédits et capacitéDroits inclus
Free100 crédits principaux ; 3 licences actives / mois ; 1 dépôt ; rétention 30 joursRègle de base ; pas de paiement à l’usage, API, webhooks, export, SSO, bundles ni journaux
Starter800 crédits principaux ; 10 licences actives / mois ; 8 dépôts ; rétention 90 joursRègle standard et export de preuve ; paiement à l’usage ; pas d’API ni webhooks
TeamMinimum 5 licences / mois (quantité Stripe) ; 100 crédits principaux par licence ; dépôts illimités ; 365 joursRègle complète, API, webhooks, suivi tickets Jira/Linear, SSO de base, bundles, journaux, export, Pack export auditeur, SLA 99,9 %
RegulatedAccord personnalisé pour crédits et commerce ; rétention et capacité illimitéesRègle complète, SSO complet, API, webhooks, bundles, journaux, export, Pack export auditeur, SLA 99,99 %

Starter vs Team : Starter est un pack de scans fixe (crédits, dépôts, export de preuve). Team est la plateforme org : API, webhooks, SSO, journaux d’audit, pack export auditeur, dépôts illimités et SLA. Les crédits Team évoluent avec les licences — on passe à Team pour les fonctionnalités, pas pour un plus gros bucket fixe de crédits.

Indices d’upgrade in-app : Sur Free et Starter, l’app peut afficher des entrées de nav verrouillées, des aperçus floutés et des compteurs avec un chemin d’upgrade. Les owners/admins ont un CTA Checkout sous Paramètres → Facturation → Offre. Les membres voient un message « demander à un admin » — ils n’ont pas accès au statut de facturation complet (GET /billing/status est réservé Settings). L’UI n’invente jamais une offre Free quand le statut est indisponible ; les membres récupèrent l’id d’offre réel via l’endpoint léger credits-alert, pour ne pas verrouiller à tort une org Team. Les fonctionnalités Team verrouillées (SSO, webhooks, tokens API, …) affichent un mur in-app sans appeler ces APIs Settings tant que l’offre ne les autorise pas.

Licences (MAU) : chaque personne qui utilise le produit au cours d’un mois calendaire consomme une licence. Les licences non utilisées sont perdues en fin de mois. L’annuel est un mode de paiement prépayé — les règles d’usage restent mensuelles. Les admins achètent plus en cours de cycle (Team) ou planifient une baisse pour le prochain renouvellement. Retirer un membre ne libère pas une licence déjà consommée dans le mois.

SAST est une réserve/add-on séparée : SAST Starter inclut 50 crédits SAST ; SAST Team inclut 50 crédits SAST par licence. Les prix et disponibilités exacts sont visibles dans Facturation.

Historique des crédits : les propriétaires et admins consultent un journal en lecture seule sous Paramètres → Facturation → Historique (filtres + export CSV). Les consommations affichent l’unité de projet (si enregistrée) et le déclencheur (sourceTrigger). Les remboursements automatiques de scan plateforme apparaissent comme grants source=scan_failure_refund. Sur une organisation cliente, le journal affiche le compte de facturation parent. Les membres sans accès facturation ne le voient pas. Les ajustements support apparaissent avec un motif ; il n’y a pas de remédiation self-serve. Voir Crédits.

Factures

Les factures sont des miroirs Stripe uniquement (URL hébergée / PDF / numéro). Elles apparaissent dans Paramètres → Facturation → Historique après un paiement Stripe (abonnement, licences, pack de crédits Checkout, ou auto-recharge). Sur Free sans client Stripe, une liste vide est normale.

L’aperçu facturation (accueil et Paramètres → Facturation → Aperçu) affiche l’usage (licences, soldes de crédits, consommation) — pas de total de coût de période estimé. Les montants facturés sont ceux des factures Stripe listées ci-dessus.

E-mails

Après confirmation Stripe, les propriétaires et admins de l’organisation parente peuvent recevoir des e-mails de facturation (fail-open) : abonnement actif (première période payante), reçus de renouvellement ou de pack, succès ou échec d’auto-recharge, et échec de paiement. Les reçus incluent un lien Voir votre facture lorsque Stripe fournit une URL hébergée (abonnement, auto-recharge et pack Checkout). Les e-mails ne remplacent pas la liste in-app ni le portail client Stripe.

Moyen de paiement et portail

Finaliser un Checkout Stripe (abonnement, add-on SAST ou pack de crédits) établit le moyen de paiement par défaut du client lorsqu’aucun n’est encore défini (requis pour l’auto-recharge hors session). Utilisez Gérer dans Stripe (Customer Portal) sous Paramètres → Facturation → Offre pour changer la carte, télécharger les factures Stripe ou résilier l’offre payante. Les URL de retour restent sur l’onglet Offre de l’app.

Renouvellement automatique

Activé : Stripe renouvelle l’offre en fin de période. Désactivé : l’offre payante s’arrête en fin de période et l’organisation repasse en Free (crédits, rétention et droits s’ajustent alors). Stripe pilote les renouvellements payants et les grants de période pour les abonnements Stripe.

Période payante vs mois calendaire : les crédits inclus sont rechargés quand Stripe renouvelle l’abonnement (date d’anniversaire affichée dans Facturation), pas le 1er du mois calendaire. Les licences MAU se réinitialisent toujours au mois calendaire. Les plafonds d’auto-recharge se réinitialisent avec la période de facturation payante.

Auto-recharge (crédits core)

Opt-in uniquement (désactivé par défaut). Les admins facturation peuvent activer l’auto-recharge dans Paramètres → Facturation → Offre → Options avancées lorsqu’un client Stripe et un moyen de paiement par défaut existent. Après un Checkout d’offre payante réussi ou un changement d’offre payante in-app, les admins facturation peuvent aussi voir une invite ponctuelle avec le même formulaire (fermer avec Plus tard, ou activer en un enregistrement). Quand le solde core atteint le seuil configuré, CodeCleared facture le pack sélectionné hors session via une facture Stripe (même catalogue que l’achat manuel : core-100, core-500) afin que le reçu apparaisse dans la liste in-app. Un plafond mensuel limite le nombre de packs par période (défaut 3, max 10). Chaque charge réussie envoie un e-mail aux owners/admins et écrit un événement d’audit. En cas d’échec (carte absente, paiement refusé, erreur de crédit…), les owners/admins reçoivent un e-mail d’échec et un événement d’audit est enregistré ; aucun crédit n’est ajouté. Les échecs répétés appliquent un backoff entre tentatives (15 min, puis 1 h, puis 6 h) et envoient au plus un e-mail d’échec par série jusqu’à une charge réussie, la fin de période ou une modification des réglages auto-recharge par un admin. Les échecs de facture auto-recharge ne posent pas le drapeau global d’échec d’abonnement (402 payment_failed) — seules les factures d’abonnement en échec le font. Pendant une charge en cours, les membres peuvent voir une bannière ambre plutôt que le mur rouge. Nécessite une offre payante avec PAYG (Starter ou Team — pas Free ni Regulated) et l’absence d’échec de paiement non résolu. Les administrateurs plateforme CodeCleared peuvent consulter l’état auto-recharge en lecture seule dans le snapshot crédits CC Admin (voir Crédits).

Auto-recharge (crédits SAST)

Même modèle opt-in que le core, avec des réglages indépendants (GET/PATCH /billing/auto-recharge?pool=sast). Disponible lorsque l’organisation a un add-on SAST actif, un client Stripe, un moyen de paiement par défaut et une offre payante avec PAYG (Starter ou Team). Après un Checkout add-on SAST réussi, les admins facturation peuvent voir la même invite ponctuelle pour le pool SAST (fermer ou activer). Quand le solde SAST atteint le seuil configuré, CodeCleared facture le pack SAST sélectionné hors session (sast-25 aujourd’hui) via facture Stripe. Plafonds mensuels, backoff d’échec, e-mails, audit et politique sans drapeau payment_failed identiques au core. Pendant une charge SAST en cours, les membres peuvent voir une bannière ambre auto-recharge SAST en cours plutôt que le mur rouge SAST. Les pools core et SAST ne se financent jamais mutuellement.

Annuler SAST

Vous pouvez désactiver l’add-on SAST à la fin de période SAST sans résilier l’abonnement plan. SAST reste disponible jusqu’à cette date ; après désactivation, un nouvel abonnement add-on est requis (des crédits SAST achetés seuls ne débloquent pas SAST). Tant que l’annulation est en attente, vous pouvez l’annuler (undo) dans Facturation pour que SAST se renouvelle comme avant.

Matrice de cycle de vie

ChangementQuand ça s’applique
Free → payant (Checkout)Immédiat après confirmation Stripe
Changement de plan ou de période (abonnement Stripe actif)Prochain renouvellement
Licences ↑En cours de cycle (prorata)
Licences ↓Planifié au prochain renouvellement (le pool courant ne diminue pas mid-cycle)
Renouvellement auto désactivéFin de période → Free
Annuler SASTFin de période SAST ; plan inchangé (undo possible tant que l’annulation est en attente)

Échec de paiement → 402

Un échec de paiement d’abonnement non résolu pose un drapeau facturation (lastPaymentFailedAt). Les échecs de charge auto-recharge (pack) ne posent pas ce drapeau. Les scans et autres actions facturables peuvent renvoyer 402 avec payment_failed jusqu’à mise à jour du moyen de paiement d’abonnement dans le portail. Voir Crédits et réponses 402.

Règles métier

Les crédits principaux ne financent pas SAST. Free ne permet pas le paiement à l’usage. L’API et les webhooks sont généralement disponibles à partir de Team ; les conditions Regulated sont personnalisées. Un 402 concerne un droit ou une réserve applicable, pas une requête mal formée.

Rétention des données de scan : chaque offre fixe une durée maximale (voir tableau). Quand un changement d’offre est appliqué (upgrade ou downgrade — immédiatement, ou au renouvellement s’il est planifié), la préférence d’organisation est réinitialisée au maximum de la nouvelle offre. Les propriétaires/admins peuvent ensuite la raccourcir dans Paramètres → Organisation, mais ne peuvent pas conserver les payloads de scan plus longtemps que l’offre ne le permet. Sur Regulated, la rétention est illimitée (pas de vacuum automatique) ; la préférence synchronisée utilise la plus longue valeur sélectionnable dans l’UI (365 jours). Les payloads détaillés trop anciens sont vacuumés par un job quotidien.

Scénarios et cas limites

Des crédits principaux restent mais SAST renvoie 402 : obtenez des crédits SAST ou le droit inclus. Une organisation Team a moins de cinq licences actives : elle ne respecte pas le minimum Team. seat_license_required : Team peut acheter des licences en cours de cycle ; Free/Starter doit upgrader (ou attendre le mois suivant). Retirer un membre ne libère pas une licence déjà consommée ce mois-ci. Une fonctionnalité disparaît après un changement : confirmez le droit et exportez les preuves avant l’application de la nouvelle rétention. Le réglage de rétention refuse une durée plus longue : passez à une offre supérieure, ou choisissez une valeur inférieure ou égale au plafond de l’offre. 402 payment_failed : mettez à jour le moyen de paiement dans Facturation / portail Stripe, puis réessayez.

Limites

Les limites s’appliquent à l’organisation. Ne supposez pas que les crédits inutilisés se transfèrent entre réserves ou offres. Facturation est la source de vérité pour le solde et le prix courant.

Erreurs courantes

  • Réessayer un 402 sans modifier les crédits, le moyen de paiement ou le droit.
  • Considérer les crédits SAST et principaux comme interchangeables.
  • Supposer l’accès API sur Free ou Starter.
  • Attendre des factures sur Free avant tout paiement Stripe.

Liens