GPlatform Billing
Die kaufmännische Hälfte. Sie verwaltet Geld — und bewusst nichts sonst.
Konten, Preiskatalog, die Stripe-Beziehung, Abonnements, Mahnwesen und nutzungsabhängige Abrechnung für jedes Produkt der Reihe. Sie entscheidet nie, was einem Kunden zusteht: Das bleibt in GPlatform Control, und diese Seite fragt dort nach.
Kein Gegenstück
Es gibt kein selbst gehostetes Gegenstück und wird nie eines geben, denn was es tut, ist Geld einzunehmen, und das ist unsere Sache.
Was es ist
Die kaufmännische Hälfte der GPlatform-Familie. Sie verwaltet Konten, den Preiskatalog, die Stripe-Beziehung, Abonnements, Mahnwesen und nutzungsabhängige Abrechnung für jedes Produkt der Reihe: die selbst gehosteten G-Apps, die von uns gehosteten G-Apps, die eigenständigen GPlatform-Produkte und GControl selbst.
Kein lokales Gegenstück, und es wird keines geben
Jedes andere Produkt der Reihe läuft entweder auf Ihrer Infrastruktur oder hat eine Hälfte, die das tut. Dieses nicht, und das ist eine Haltung und kein Zwischenstand: Was es tut, ist Geld einzunehmen, und das ist unsere Sache.
Sie verwaltet Geld. Sie verwaltet keine Berechtigungen.
Das ist die Grenze, auf der die ganze Anwendung aufgebaut ist.
Was einem Kunden zusteht, liegt in GPlatform Control und wird dort von demselben Code aufgelöst, der auch eine Lizenz auflöst — für jedes Produkt mit einem Control-Gegenstück. Diese Seite benennt eine Stufe und einen Modulsatz und fragt nach. Sie berechnet nie eine Berechtigung, hält nie einen Signaturschlüssel und erfährt nie, was eine Funktion tut. Für Produkte ohne Control-Gegenstück führt sie einen eigenen kleinen Katalog samt Berechtigungsspeicher und bedient sie unmittelbar.
Diese Trennung ist die Antwort auf den Einwand, an dem eine automatisierte Abrechnung beim ersten Anlauf gescheitert ist. Preislogik im Berechtigungsauflöser brächte eine Meinung über Geld an genau die Stelle, die einfach genug sein muss, um offensichtlich richtig zu sein. Dort ist sie nicht. Sie ist hier.
Control spricht nie mit Stripe. Nichts außerhalb dieser Anwendung tut das.
Eigene Konten, mit Absicht
Die Anmeldung hier ist von der Anmeldung bei Control getrennt. Ein Control-Konto zu verlangen, zwänge jeden Kunden eines eigenständigen Cloud-Produkts — jemanden, der diese Steuerungsebene nie berührt —, sich dort zu registrieren. Dass auch Mitarbeiterkonten getrennt sind, ist der Preis dafür, und er ist klein daneben.
Drei Rollen, denn eine Abrechnungsoberfläche stellt genau drei Fragen: Dürfen Sie kündigen und die Zahlungsweise ändern, dürfen Sie ändern, was es kostet, und dürfen Sie lesen, was es gekostet hat.
Verbrauch ist ein Hauptbuch, kein Zähler
Eine Zeile je Abrechnungsposten, Zähler und UTC-Tag — genau daraus wird der Stripe-Idempotenzschlüssel abgeleitet. Ein wiederholter Abruf schreibt nichts Neues und sendet nichts doppelt; der tägliche Abruf ist von Hand wiederholbar, nach einem Timeout erneut ausführbar und verträgt auch versehentliche Doppelplanung.
Korrekturen erfolgen nur additiv. Ein Zähler kann nicht negativ werden; ein Tag, der zu senken ist, ist eine Gutschrift und ein Gespräch, keine still geänderte Zeile.
Ein Tag aus zu wenigen Messwerten wird markiert und dennoch gemeldet: Eine Untererfassung berechnet Ihnen weniger, als Sie genutzt haben, und ihn zurückzuhalten verzögerte eine Rechnung wegen einer Zahl, die nur zu niedrig sein kann.
Auslaufen nimmt nichts weg
Das Mahnwesen endet bei lapsed. Das stuft auf die kostenlose Variante zurück und entfernt nichts, was bereits besteht. Die Obergrenze verweigert das Nächste; sie zieht nie das Letzte zurück.
Preise werden stillgelegt statt gelöscht: Eine Preiszeile ist das, worauf ein bestehendes Abonnement zeigt, und sie zu entfernen ließe einen zahlenden Kunden zu Bedingungen zurück, die nichts mehr beschreiben kann.
Aufbau
apps/api ist NestJS: Konten, Katalog, Stripe-Verarbeitung und der Client, der Control über mTLS im lokalen Netz ansteuert. apps/worker ist Temporal: täglicher Verbrauchsabruf, Mahnwesen und nächtlicher Abgleich. apps/web ist Next.js.
Status
Im aktiven Aufbau. Die Konsole hat noch keine Produktbildschirme — jeder wartet auf ein Design-Bundle.
Rechtliches: Terms · Privacy notice · Processing agreement