R&D LAB Méthode En service Conçu pour notre propre planification financière

Chronos Ledger

Projection de trésorerie et d'impôts pour une GmbH, calculée de façon déterministe

Combien d'argent sur quel compte à une date donnée, et quels impôts dus d'ici là ? Calculé selon le droit allemand, sans modèle de langage.

  • 0dépendance d'exécution, seulement Node et SQLite
  • 1liste de lignes dont chaque vue est calculée
  • 12vues sur la même projection
  • P10à P90 : une bande autour de la courbe, calculée analytiquement
Vue d'ensemble de Chronos Ledger pour la Beispiel GmbH : en haut le curseur temporel au 11 septembre 2026, en dessous des cartes pour la trésorerie à la date choisie, le point bas et le point haut de l'horizon, la position non liquide et l'autonomie, puis les cartes Locked in vs modelled, Backtest et Actual balance

Toutes les captures de cet article montrent une base de démonstration distincte, avec des chiffres inventés pour une Beispiel GmbH. Les personnes n'apparaissent que par leur rôle.

Pourquoi c'est publié

Nous vendons du logiciel et de l'automatisation, y compris là où les règles sont denses et lourdes de conséquences. Chronos Ledger montre comment nous traduisons des règles fiscales et comptables en code : chaque règle à un seul endroit, l'arithmétique fiscale verrouillée par un autotest, les totaux centraux recalculés par un script d'audit indépendant. L'application est aussi un contre-exemple à l'idée qu'un modèle de langage aurait sa place partout aujourd'hui. Il n'en a aucune ici, car un chiffre de trésorerie ou d'impôt doit être identique à chaque exécution et vérifiable pas à pas.

La comptabilité regarde en arrière : elle consigne ce qui s'est passé. Pour planifier une petite entreprise, il manque l'autre direction. Chronos Ledger calcule vers l'avant et indique combien d'argent se trouvera sur quel compte à une date donnée, et ce qui sera échu d'ici là en TVA, en impôts sur les bénéfices et en salaires. Pour cela, l'application tient côte à côte les comptes de la société et les comptes privés, modélise la TVA selon l'Ist-Versteuerung avec Dauerfristverlängerung, calcule Körperschaftsteuer, Solidaritätszuschlag et Gewerbesteuer, projette l'impôt sur le revenu selon le § 32a EStG et reporte chaque échéance au jour ouvré suivant selon le § 108 AO. Un curseur temporel recalcule chaque chiffre pour toute date choisie. Elle tourne en local avec Node et SQLite et ne dépose rien.

La décision

Un chiffre d'impôt qui change au second appel n'en est pas un

Pour une application de planification, il paraît aujourd'hui naturel d'intégrer un modèle de langage : une question en mots, une réponse en mots. Chronos Ledger n'en a délibérément aucun. Une prévision de trésorerie devient la base de décisions sur les salaires, les achats et les réserves fiscales. Il faut donc que les mêmes données donnent le même chiffre à chaque exécution, et que chaque chiffre puisse être ramené aux écritures dont il provient. Un panneau de questions a été envisagé et n'a pas été construit ; il aurait été le premier appel d'API sortant de cette application.

La deuxième décision porte toute l'application. À chaque requête, l'horizon de planification est construit une seule fois sous forme de liste plate de lignes datées : mouvements comptabilisés, ordres permanents développés, paies, paiements dérivés de TVA et d'impôts sur les bénéfices, investissements validés et remboursements d'impôt sur le revenu attendus. Chaque graphique et chaque tableau est calculé à partir de cette seule liste. Deux vues ne doivent jamais diverger sur un même jour. Lorsque l'en-tête et la courbe l'ont fait une fois, parce que deux fonctions parcouraient séparément les mêmes lignes, le script d'audit a trouvé l'écart.

La troisième concerne la fiscalité. Ce qu'est une écriture, ce que la déclaration de TVA en voit et ce que le calcul du bénéfice en voit sont trois colonnes distinctes. Un type unique par écriture ne peut pas exprimer un virement entre vos propres comptes, qui déplace de l'argent sur deux comptes sans être un chiffre d'affaires nulle part. Les catégories préremplissent les trois valeurs, mais chaque écriture en garde sa propre copie.

Ce qui n'en sort délibérément pas, c'est une déclaration fiscale. L'application projette et prépare ; elle ne transmet rien à ELSTER, et chaque vue fiscale porte la mention qu'il s'agit d'une estimation.

Une prévision qu'on ne peut pas recalculer est une opinion avec des décimales.

De l'ordre permanent à la courbe

Comment naît un chiffre pour un jour quelconque

  1. 01 Mouvements et séries Les mouvements comptabilisés et prévus figurent dans la même table, un statut les distingue. Les ordres permanents sont développés en échéances datées et s'arrêtent à leur date de fin, après un nombre fixe de paiements ou à la fin de l'horizon. Une série au 31 tombe le 28 en février et revient au 31 en mars.
  2. 02 Paiements d'impôts dérivés Les lignes donnent la Zahllast trimestrielle selon l'Ist-Versteuerung, exigible avec Dauerfristverlängerung le 10 du deuxième mois suivant, et le jour ouvré suivant en cas de week-end ou de jour férié. Les impôts sur les bénéfices sont placés sur leurs dates légales d'acomptes. Un excédent de TVA déductible n'arrive pas à l'échéance mais 21 jours plus tard.
  3. 03 Une liste L'ensemble forme la liste unique de lignes. Les montants sont en centimes entiers, les dates sont des chaînes ISO sans fuseau horaire. Seul le barème de l'impôt sur le revenu calcule en euros, car la loi énonce ses constantes en euros.
  4. 04 Courbe et bande La liste donne la courbe de trésorerie par compte et au total. Chaque ligne prévue est un tirage à pile ou face avec sa probabilité saisie ; il en découle l'espérance, la variance et une bande P10/P50/P90 sous forme fermée, sans nombres aléatoires. Les mêmes données tracent toujours la même bande.
  5. 05 Curseur temporel Le curseur saute entre les jours où de l'argent circule réellement et les fins de mois. À chaque point, l'en-tête, les soldes et les comptes de créances sont recalculés. Les graphiques, eux, sont à l'échelle du temps, pour que le point bas apparaisse là où il tombe dans le calendrier.

La TVA selon la date de paiement, et rien d'autre

Sous l'Ist-Versteuerung, la TVA naît dans la période où l'argent circule. L'application enregistre donc une date de paiement et aucune date de facture. Une seconde colonne de date finirait tôt ou tard par servir à un total, et la déclaration ne serait plus juste.

La même vue indique ce qui ne se produit pas : un déclarant trimestriel avec Dauerfristverlängerung ne verse pas de Sondervorauszahlung, car le onzième ne s'applique qu'aux déclarants mensuels. Pour les prestations de fournisseurs étrangers selon le § 13b UStG, la taxe est calculée en sus du montant plutôt qu'extraite de celui-ci, et portée des deux côtés de la déclaration, sans effet sur la trésorerie ni sur la Zahllast.

La TVA ne peut tout simplement pas s'attacher à de l'argent qui n'est pas une prestation. Salaires, virements entre vos propres comptes, paiements d'impôts et prêts sont exclus de la TVA déductible dans le calcul, quelle que soit la case cochée dans le formulaire.

Vue TVA avec données de démonstration : une note sur l'Ist-Versteuerung, la Dauerfristverlängerung et le § 108 AO, six cartes de chiffres et un diagramme en barres de TVA collectée, TVA déductible et Zahllast par trimestre de 2026 à 2029
Les règles figurent au-dessus des chiffres, pour que personne ne lise les cartes sans elles. Tous les montants sont des valeurs de démonstration inventées.

Ce qui est inscrit en dur

01 Centimes entiers, taxe en points de base Aucun montant en virgule flottante n'atteint le stockage. La TVA est calculée en points de base : extraite d'un montant brut, ou ajoutée au montant en autoliquidation, arrondie dans les deux cas au centime entier.
02 Un solde constaté l'emporte Lorsque quelqu'un saisit ce qu'un compte contenait réellement un jour donné, l'application comptabilise l'écart comme une ligne d'ajustement visible au lieu de modifier le passé. Cette ligne est neutre pour le bénéfice et la TVA : un écart inexpliqué ne devient ni chiffre d'affaires ni charge.
03 Les enveloppes répartissent, elles n'additionnent jamais Les réserves au sein d'un compte sont une répartition de son solde. Ce qu'aucune enveloppe ne réclame apparaît comme non affecté. Il existe exactement un chiffre de trésorerie.
04 Des créances sans argent ne sont pas de la trésorerie Services rendus, rémunérations différées et dettes convenues se trouvent sur des comptes propres qui n'entrent pas dans la trésorerie, et sont totalisés à part.
05 Impôts sur les bénéfices selon la loi Körperschaftsteuer à 15 pour cent, Solidaritätszuschlag à 5,5 pour cent de celle-ci, Gewerbesteuer comme taux de base de 3,5 pour cent multiplié par le Hebesatz, qui est un réglage. Aucun abattement pour une société de capitaux, et la Gewerbesteuer ne réduit pas sa propre base.
06 Impôt sur le revenu selon le § 32a EStG Le barème 2026 en ses cinq tranches, le taux marginal dérivé analytiquement plutôt que par différences, car le barème arrondit à l'euro inférieur. L'implémentation a été vérifiée par un calcul indépendant. Un remboursement attendu est planifié comme entrée datée, par défaut au 30 septembre de l'année suivante.
07 Personnes : valeur face au coût Une personne se voit imputer toutes les dépenses qui lui sont affectées, honoraires issus d'ordres permanents compris. La valeur attribuée est saisie à la main et exige une justification, car il n'existe aucune dérivation automatique honnête.

Un investissement se valide, il ne se liste pas

Un investissement prévu reçoit deux conditions : un bénéfice minimal après impôt sur l'exercice, et un plancher de trésorerie qui ne doit pas être franchi sur une période de contrôle après le décaissement, coûts mensuels courants compris. Il ne passe au vert que lorsque les deux sont remplies.

La réponse n'est pas oui ou non, c'est une date. L'application parcourt la courbe vers l'avant et indique le premier jour à partir duquel la trésorerie supporte le décaissement. Si un investissement a une date limite et la manque, il est considéré comme manqué, afin qu'une option close ne se présente plus comme ouverte.

Les scénarios agissent sur le même calcul. Investissements, ordres permanents et écritures peuvent être rattachés à un scénario et activés ou désactivés avec lui. Retirer un élément d'un scénario le rend à la planification de base au lieu de le supprimer.

Vue des investissements avec données de démonstration : trois positions, une validée et deux en attente, chacune avec montant, seuil de bénéfice, bénéfice projeté, trésorerie minimale, date au plus tôt et période de contrôle
Trois positions inventées. Deux attendent parce que le bénéfice projeté est inférieur à leur seuil, alors que la trésorerie les supporterait.

Vérification

Trois manières de se méfier de son propre chiffre

Un autotest verrouille l'arithmétique : montants, échéances avec leurs reports, TVA, impôts sur les bénéfices, tranches du barème de l'impôt sur le revenu, séries, lignes d'ajustement et bande d'incertitude. Qui modifie un taux ou une constante du barème modifie dans la même étape l'assertion correspondante. Un changement silencieux de constante est précisément l'erreur que cette application ne supporte pas.

Un script d'audit recalcule une seconde fois les totaux centraux directement à partir des tables brutes, avec son propre code : trésorerie du jour, point bas, fin de l'horizon, TVA et base du bénéfice. Il signale aussi les écritures contradictoires en elles-mêmes, par exemple une sortie classée comme chiffre d'affaires. L'origine des écarts a été instructive : à plusieurs reprises, l'erreur se trouvait dans le script d'audit, qui ne connaissait pas encore une règle que le moteur avait déjà. Depuis, chaque nouvelle règle s'accompagne de la question de savoir si le script d'audit la connaît.

Enfin, l'application enregistre ses propres prévisions : une fois par jour, fins de mois seulement, jamais écrasées. Elles sont ensuite évaluées par rapport à ce que les comptes contenaient réellement selon les mouvements comptabilisés, jamais par rapport à une prévision plus récente. L'erreur est moyennée en valeur absolue, pour qu'un chiffre trop haut et un chiffre trop bas ne s'annulent pas.

Ce qu'il calcule, et ce qu'il ne fait délibérément pas

Calculé

  • La trésorerie par compte et au total, pour chaque jour de l'horizon.
  • La TVA par trimestre avec échéances, reports et autoliquidation.
  • Körperschaftsteuer, Solidaritätszuschlag, Gewerbesteuer et leurs dates d'acomptes.
  • Un impôt sur le revenu projeté selon le § 32a EStG avec son remboursement attendu.
  • Le premier jour où un investissement remplit les deux conditions.
  • Une bande P10/P50/P90 à partir des probabilités saisies.

Délibérément pas

  • Aucune transmission à ELSTER et aucun conseil fiscal. Le dépôt se fait ailleurs.
  • Pas de comptabilité en partie double. L'application projette, elle ne comptabilise pas.
  • Pas d'impôt sur les salaires calculé à partir du brut. Les chiffres de la paie sont repris.
  • Aucun modèle de langage, aucune simulation avec nombres aléatoires.
  • Aucune corrélation entre paiements dans la bande. Si des défauts sont liés, la dispersion réelle est plus large, et c'est indiqué à côté de la bande.
  • Pas de report de pertes. Une perte ne produit pour l'instant simplement aucun impôt.

Personnes et tableau, sur des données inventées

Vue des personnes avec données de démonstration : quatre cartes de chiffres, un nuage de points valeur attribuée contre coût avec diagonale, un livre de créances et trois cartes de personnes désignées seulement par leur rôle
Valeur face au coût par personne. Au-dessus de la diagonale, quelqu'un rapporte plus qu'il ne coûte ; le livre de créances à côté ne compte pas dans la trésorerie.
Vue tableau avec données de démonstration : une grille de soldes d'ouverture pour cinq comptes et, en dessous, une grille qui répartit les comptes en enveloppes nommées avec part et montant cible
Saisie comme dans un tableur, collage depuis Excel compris. Les enveloppes répartissent un compte existant et n'ajoutent pas d'argent.

Ce à quoi sert cette construction

  • Les petites sociétés de capitaux qui veulent voir si salaires, réserves et échéances fiscales s'accordent au cours des prochains mois.
  • Les décisions d'achat liées au bénéfice et à la trésorerie plutôt qu'à une impression.
  • Les applications métier aux règles légales denses, où chaque chiffre doit être reproductible et traçable.
  • Comme modèle : un ensemble de règles sous forme de code, avec autotest et script d'audit indépendant, au-delà de la fiscalité aussi.

Pourquoi c'est publié

Ce que cela signifie pour votre projet

Plus du laboratoire

Avez-vous un ensemble de règles qui vit aujourd'hui dans un tableur et dont quelqu'un doit pouvoir vérifier les chiffres ? C'est précisément à cela que sert un pilote.

Nous contacter

Grace Hopper

“La phrase la plus nuisible de la langue est : on a toujours fait comme ça.”