Revenus
MRR, marge, le Ledger facturation et le journal des Webhooks Stripe : où est l'argent, et les deux tables qui n'existent que pour empêcher de payer deux fois.
Parmi ces outils, trois répondent à « où en sommes-nous ? », quatre à « qu'est-il arrivé à l'argent de ce client ? », et deux n'existent que pour prouver que nous n'avons pas fait quelque chose deux fois.
Les tables d'idempotence ne sont pas un détail
/admin/revenue/billing-ledger affiche MonthlyReset et DailyBonus.
Elles ne contiennent aucune donnée métier. Leur seul rôle est de porter une
clé unique, pour que le même grant, arrivant par trois chemins différents,
ne produise qu'un seul grant.
La clé mensuelle couvre le cron quotidien reset-credits, le webhook
subscription.created et le filet de sécurité invoice.paid. Trois
chemins, une ligne. Si vous êtes un jour tenté de supprimer une ligne ici
pour « rejouer » un grant, comprenez que vous retirez la seule chose qui
empêche un double crédit.
/admin/revenue/webhooks applique la même idée aux événements Stripe, avec
event.id pour clé. Stripe rejoue une livraison pendant trois jours au
maximum.
Le renouvellement tombe à la date anniversaire, pas le 1er
Chaque abonnement porte un jour d'ancrage de cycle et est crédité à sa propre date anniversaire. Un client qui demande pourquoi il n'a pas été crédité le 1er ne rencontre pas un bug. L'énoncé côté client est dans Facturation.
C'est dans la marge qu'une erreur de prix de modèle apparaît
/admin/revenue/ai-costs est le coût de revient par org : coût
fournisseur, prix facturé, marge. C'est le contrôle en aval du registre de
modèles de /admin/ai/ai-models : un prix par 1M de tokens erroné s'y voit
comme une marge qui dérive, et nulle part ailleurs.
/admin/revenue/platform-costs est le P&L de la plateforme elle-même : le
MRR face à la facture récurrente des fournisseurs.
Affiliés
Codes et historique des utilisations. Les conditions de commission sont un seul jeu de chiffres pour les deux programmes, publié dans Parrainage et affiliés : 30 % du net, douze factures payées, 30 jours de rétention, réversible en cas de remboursement ou de chargeback.
Un versement ignore tout affilié dont le compte Stripe Connect n'est pas
ENABLED. Les commissions s'accumulent en due et ne bougent tout
simplement jamais. Un affilié qui demande où est son argent n'a
généralement pas terminé son onboarding, et rien dans le produit ne le lui
dit. Vérifiez le statut Connect avant d'enquêter dans le ledger.
Candidatures réseau
Candidatures affilié, agence et parrainage venues de /network/*. Le
programme partenaires ne verse aucune commission : il échange une fiche
d'annuaire et les demandes entrantes. Approuver une candidature partenaire
n'est pas un engagement financier ; approuver un parrainage, si.