Mit vorhandenem Abo verknüpfen
Trägt an einer Lizenz ein BESTEHENDES Abo des Kunden nach — schließt die halbe Verknüpfung aus der Altsystem-Übernahme, ohne ein zweites Abo anzulegen. Nur Abos DESSELBEN Kunden; am Abo selbst ändert sich nichts
Funktionen · Plattform & Betrieb
Hier geht es um unser eigenes Geschäft: wie ein Betrieb zu DiKAS kommt, was er bezahlt und was dadurch bei ihm freigeschaltet ist. Ein Interessent bestellt über einen Bestellassistenten im Netz oder über einen Fachhändler, bekommt daraufhin automatisch seine eigene Instanz samt Zugangsdaten, und der Lizenzserver merkt sich ab da: welches Paket, welche Zusatzmodule, wie viele Arbeitsplätze, bis wann bezahlt. Dieselbe Stelle verwaltet Testzugänge, Tarifwechsel, Zusatz-Arbeitsplätze, Kündigungen und die Partner, die für uns verkaufen oder Betriebe betreuen. Was der Kunde in seinem System sieht, entscheidet sich hier — nicht in seinen Einstellungen. Nicht hierher gehören die Kunden unserer Kunden (08) und die Rechnungsstellung an Endkunden (09).
Neue Betriebe Schritt für Schritt einrichten.
Echte Oberfläche
Keine Stockmotive: Die Aufnahmen stammen aus den reproduzierbaren DiKAS-Demos und zeigen die jeweilige Funktion im Produkt.
Vollständiger Überblick
Alle folgenden Punkte stammen aus dem gegen den Programmcode geprüften Funktionskatalog.
Trägt an einer Lizenz ein BESTEHENDES Abo des Kunden nach — schließt die halbe Verknüpfung aus der Altsystem-Übernahme, ohne ein zweites Abo anzulegen. Nur Abos DESSELBEN Kunden; am Abo selbst ändert sich nichts
An einer bestehenden Lizenz die Kundenzuordnung lösen oder auf einen anderen Kunden umhängen — der Weg, um Dubletten aus der Altsystem-Übernahme zusammenzuführen. Bereits erstellte Rechnungen bleiben beim bisherigen Kunden
Lizenzsatz mit Kunde, Online-Name, Paket, Modulen, Laufzeit, DB-Server anlegen und pflegen
Jede Katalog- UND jede Paket-/Systemposition einer Lizenz trägt ein eigenes Ablaufdatum (leer = unbefristet; Paketpositionen werden über die Objektidentität getroffen, nie über den Namen — eine Lizenz kann zwei gleichnamige Positionen tragen). Vom 11.07. bis 03.09.2026 fehlte das Feld in der Maske; ein bezahltes Modul war damit nicht verlängerbar, die Daten waren nie weg. 549 von 562 Ablaufdaten liegen in den Paket-/Systempositionen (Kasse 479x), nicht im Katalog-Raster
Seitenweise Operatorliste (ohne Abo / ohne Kunde, Ablaufdatum, Stichwort)
Buchbare Pakete und echte catalogKind=module-Artikel für die „Neue Lizenz"-Maske; bestehende Lizenzpositionen werden über licenseModuleKey statt den veränderlichen Anzeigenamen den Häkchen zugeordnet. Paket-/TSE-/Systempositionen bleiben sichtbar, sind aber ausdrücklich keine Modul-Schalter
Auf einem Deployment mit Fiscal:Country=CH sind die vier Kaufpakete (pkg_ch_kasse/gastro/liefer/club, 1'490 / 2'490 / 3'190 / 7'900 CHF exkl. MWST) die EINZIGEN Pakete. Bestellung → PaymentIntent über den Kaufpreis in CHF (Karte, TWINT sobald im Stripe-Dashboard frei) → EINE Rechnung ohne MWST mit Bezugsteuer-Hinweis (Art. 45 MWSTG, Text und Satz als Konfiguration) → Lizenz ohne Enddatum, kein Abo, kein Abo-Lauf, keine TSE. Siehe Abschnitt „CH-Kaufmodell"
Legt Pakete, Module und TSE-Artikel idempotent aus dem kanonischen Preisbuch an; entdoppelt gleichnamige aktive Paket-/TSE-Artikel (soft-deaktivieren, nie löschen) — Modul-Artikel werden über licenseModuleKey gematcht und nie entdoppelt
Mandanten-CouchDB anlegen, Admin-User seeden, systemlic schreiben, Branding verteilen
In der Lizenzliste öffnet ein eigener Knopf nur Next-/Cloud-Instanzen direkt als SupportAdmin: der Lizenzserver schreibt zuerst den zentralen Audit-Eintrag, stellt dann ein 60 Sekunden gültiges, per Lizenz-Sync-Key signiertes Handoff aus, und die Zielinstanz tauscht es gegen eine nicht erneuerbare 60-Minuten-Sitzung ohne Refresh-Token. Das Ticket reist nur im URL-Fragment und wird dort sofort aus der Browser-History entfernt. Altportal-Lizenzen behalten ausschließlich den normalen Link
Install-Key + Passwort an der Kasse eingeben, Instanz freischalten bzw. on-demand provisionieren
Alt-Endpunkte, über die Kassen ihre Lizenz, DB-Zugang und Sync-Daten holen (lizenz/install, lizenz/db, lizenz/check)
Ableitung Aktiv / Kulanz / eingeschränkt / vollgesperrt / unlizenziert samt Klartext-Grund
Der Lizenzserver re-signiert alle 24 h den Claim jeder provisionierten Lizenz in deren systemlic und verlängert damit dessen Lebensdauer (14 Tage). Gesperrte Lizenzen (IsLocked) sind seit 07.08.2026 ausgenommen — sie sollen ablaufen; das Entsperren schreibt sofort einen frischen Claim
Bei abgelaufener Lizenz alle Aufrufe mit HTTP 423 blocken (außer Status, Login, Upgrade)
Anonymer Status-Endpunkt, den die Oberfläche für Hinweisbanner liest
Sperrt markierte Controller mit HTTP 403 MODULE_NOT_LICENSED, wenn das Modul fehlt
isModuleLicensed() blendet Flächen aus bzw. sperrt Schalter mit Schloss-Abzeichen
Eine Lizenz mit factura und kasse oder tables bleibt ein Kassenbetrieb: Normal/Experte, Lager, QR-/Self-Service und die übrigen Betriebs-Module werden nicht ausgeblendet. tables gewährt außerdem die Finanzfunktionen.
factura ohne kasse und ohne tables sperrt den kompletten /pos-Zweig und legt die Startseite auf die Verwaltung; eine Kombi-Lizenz bleibt im POS
8 Schritte: Paket, Optionen (Arbeitsplätze, Abrechnung, TSE), Zusatzmodule, Hardware, Konto, Firma mit Online-Name, Zahlung inkl. Rechtstexten, Abschluss — der Faktura-Funnel überspringt Optionen und Zusatzmodule, der Kontoschritt entfällt für Angemeldete und anonyme Besteller; der Online-Name wird aus dem Firmennamen vorgeschlagen (Slug, bei Kollision Suffix -2/-3, ein selbst gewählter Name wird nie überschrieben), und der Weiter-Knopf ist nie stumm deaktiviert — ein Klick bei unvollständigem Schritt nennt den Grund sichtbar und meldet ihn als Matomo-Ereignis Funnel / Weiter blockiert Schritt <n> (F1, Kaufweg-Messung 21.08.2026). Seit 31.08.2026 legt auch der Faktura-Einstieg /onboarding/faktura?tier=faktura die Bestellung an (ensureOrder() beim Betreten der Betriebsstätte, nicht nur beim Übergang dorthin)
Pakete, Hardware, TSE, Add-ons, Namensprüflung, Preisvorschau, Bestellung anlegen/absenden
Prüft und sperrt den Wunschnamen der Instanz während der Bestellung
Räumt abgebrochene/unbezahlte Bestellungen (Status Draft bis PendingPayment) nach Ablauf ab und gibt deren Online-Namen-Reservierung wieder frei; provisionierte, bezahlte und fehlgeschlagene Bestellungen bleiben unangetastet
Operator-Vorschau (rein lesend) auf bezahlte Bestellungen, die seit über einer Stunde weder abgeschlossen noch aufgegeben sind: Zählung plus je Fall, ob eine Lizenz existiert und ob die Bestellung sie kennt (verwaiste Lizenz = der Alt-Fall aus Befund 11-01-H). Ändert nichts — wieder aufgenommen wird über den regulären Retry-Weg
Wiederkehrender Betrag (Monat/Jahr) plus einmalige Hardware aus denselben Preisen wie die Abrechnung
Stripe-Karte oder Überweisung; bei Überweisung entsteht das Abo erst mit dem Zahlungseingang
Nach idempotent erfolgreicher Provisionierung sowie bei jeder erfolgreichen Lizenzaktivierung geht eine interne, geheimnisfreie Nachricht an die zentral konfigurierte Support-Adresse; Versandfehler blockieren den Fachvorgang nicht
Vermerkt das unterschriebene Mandat der Bestellung; erste Rechnung bleibt Überweisung
Erreicht eine Lizenzbestellung mit Warenanteil die Provisionierung (also nach Zahlungseingang), entsteht daraus genau ein Lieferschein-Entwurf: Lieferadresse der Bestellung, ausschließlich die Hardware-Positionen (Paket und Add-ons sind Software), ohne Nummer und ohne Seriennummern. Idempotenz-Marker ist LicenseOrder.DeliveryNoteId — ein Retry, ein Crash-Requeue des Provisionierungs-Workers und der parallele Geldeingang-Lauf treffen alle darauf
Der Druck am Hardware-Versand-Ticket stellt den vorhandenen Entwurf aus (Nummer aus der Serie lieferschein, PDF-Ablage am Dokument) statt einen eigenen Beleg zu bauen; existiert noch keiner, legt derselbe Dienst ihn an. Der zweite Druck liefert dasselbe PDF mit derselben Nummer aus der Ablage. 🪤 Seit Etappe W8 prüft der Weg den ZUSTAND und nicht nur die Existenz des Belegs am Ticket — der Verweis kann auf einen Entwurf zeigen, und ein Entwurf ist kein Papier
Beim Ausstellen tragen die Geräte des Belegs LicenseId, LicenseOrderId und OnlineName; die Brücke ILizenzkopplung löst die Bestellung auf. 🪤 Ist die Bestellung bezahlt, aber noch nicht provisioniert, bleibt die Lizenz-Id leer — eine erfundene wäre eine Aussage über eine Lizenz, die es nicht gibt
Im Lizenzdetail (je Lizenz) und im Kundendetail, Reiter Lizenzen (über alle Lizenzen der Firma): Seriennummer, Artikel, Zustand, Garantie bis. Zustandstext und der Hinweis auf eine abgelaufene Garantie kommen vom Server — sonst entschiede die Uhr des Bedieners über einen Garantietausch
Der Fachhändler sieht im Portal die Geräte seiner Kunden — Seriennummer, Artikel, Lieferdatum, Garantie bis, Zustand —, ohne Einkaufspreis und ohne Lieferant (Owner-Entscheid 3 vom 07.09.2026). Recht partner.serial.view, im Handler geprüft; eine fremde Lizenz antwortet mit einer LEEREN Liste statt mit einem Fehler
Erzeugt zahlungs- und menschenlos eine echte Testinstanz (Honeypot + IP-Limit)
DE-Einstieg testet „Faktura Pro" ohne Zahlungsmittel und fällt danach auf den Gratis-Tarif zurück
Mailstrecke vor Trial-Ende, je Stufe genau einmal (Rest-Tage-Marke an der Lizenz)
Wandelt den laufenden Test der eigenen Instanz in eine bezahlte Lizenz (von der Sperre ausgenommen)
Findet abgelaufene Self-Service-Trials, deren Kulanzfrist (30 Tage) verstrichen ist, als Deprovisionierungs-Kandidaten — bewusst DRY-RUN: löscht nichts, der eigentliche DB-Drop ist dark/guarded und nicht verdrahtet
Gratis → Rechnung → Pro. Bei einer BEZAHLTEN Lizenz nur aufwärts; im laufenden Trial ist jeder BEZAHLTE Tarif der Familie kaufbar — auch der gerade getestete und ein günstigerer (Befund 2026-08-08: der DE-Funnel startet den Trial auf „Pro", der höchsten Stufe, und die reine Aufwärts-Regel liess dem Testkunden deshalb GAR KEINEN Kaufknopf). Gratis bleibt auch im Trial gesperrt. Ein Kauf beendet den Trial (IsTrial=false, EndDate=null) und wird als trialEnded an das Portal zurückgemeldet. Wirkt sofort, abgerechnet ab nächstem Zyklus. Die aktive Stufe steht seit 2026-08-03 explizit im Lizenzfeld FacturaTier (gratis/rechnung/pro) — sie darf NICHT mehr aus der Modul-Liste abgeleitet werden, seit finance (Bankkonto, Bankabgleich, Mahnwesen, SEPA) auch im 9-€-Tarif „dikas Faktura Rechnung" steckt. Der einzige verbliebene Unterschied zu Pro ist FinTS (automatischer Bankabruf), serverseitig gesperrt mit FACTURA_FINTS_REQUIRES_PRO — siehe 10 Banking & SEPA. Lizenzen ohne das Feld (Altbestand) fallen weiterhin auf die alte Modul-Ableitung zurück
Wechselt nur die Modulzugehörigkeit; Rechnungen, Kunden und Nummernkreise bleiben
Effektives Limit aus MaxDevices plus heutigen Tages-Seats; Fallback auf die Kasse-Modul-Anzahl
Aktive Geräte im Kassen-Tab, Sofort-Freigabe eines Geräts (max. 3/Tag, neustartfest)
Zusatzplatz für genau einen Geschäftstag, 3 € netto, 2×/Monat gratis, läuft automatisch aus
Preisauskunft vor der Buchung („kein stiller Kauf"), anteilige Berechnung, Einzug mit nächstem Abo
documentstorage ist ein nicht funktionsschaltender Artikel: 1 GiB je Einheit, 5 € netto monatlich oder 50 € netto jährlich, höchstens 20 Einheiten im Self-Service. Zubuchung verlangt eine frische Preisauskunft und aktive Bestätigung, berechnet die laufende Periode anteilig und pusht die Lizenz sofort. Reduzierung gilt erst am nächsten Abrechnungstermin und nur, wenn der zuletzt gemeldete Verbrauch in die Zielkapazität passt. Direktkunden nutzen das Kundenportal; reseller-abgerechnete Lizenzen sind dort gesperrt und werden ausschließlich über den geschützten Händlerpfad geändert
Neue deutsche Lizenzen tragen Policy-Version, enthaltene Bytes und Zusatzmenge; Altverträge bleiben ohne Policy-Version. Der Mandant meldet den providerneutral gezählten Ist-Verbrauch SyncLink-authentifiziert täglich. Der Lizenzserver speichert den letzten Stand und sendet die 80/95/100-%-Warnung höchstens einmal je Kapazitätsstand
Der Server liefert Version, URL und SHA-256 der geltenden Fassung. Beide Onboarding-Oberflächen senden die Serverversion zurück; der Submit lehnt veraltete oder erfundene Werte ab und speichert Version, Zeitpunkt, URL und Hash. Für Deutschland ist AGB 2.0 vorgesehen, andere Länder bleiben auf ihrer bisherigen Fassung
Vormerkung zum Monatsersten; Rücknahme bis zur Wirksamkeit kostenfrei
Basic 19 €, Gastro 39 €, Liefer & Abhol 45 €, Club 49 €, Faktura 19 €, Werkstatt 19 €; Mengenstaffel 100/85/70 %
Stückzahl kostenpflichtiger Automaten mit Preisauskunft, Reduzierung und Rücknahme
Instanz meldet die Zahl der Arbeitsplätze mit Umsatz je Geschäftstag an den Lizenzserver
Install-Key, Instanz-Adresse, ISO-Download, Module, Seats, Trial-Hinweis, Tarifwahl. Im Trial ist das der KAUFWEG: der Knopf heißt „jetzt kaufen" (Backend markiert die laufende Stufe mit isCurrentTier), der Bestätigungs-Dialog nennt ausdrücklich, dass der Testzeitraum damit endet
Synchronisiert Paket, Module und Zusatzgeräte in das Kunden-Abo; Nachtrag für Altlizenzen
Mahnstufen-Suspendierung der Instanz und automatische Reaktivierung bei Zahlungseingang
Manueller Suspension-Schalter je Lizenz ({id}/suspension) und Freistellung einzelner Lizenzen vom Enforcement ({id}/enforcement-exemption)
Zum Ende der bezahlten Periode TSE abschalten, Sicherung archivieren, Kunde benachrichtigen
Login-freier, tokengesicherter ZIP-Download der archivierten TSE-Sicherung (rund 6 Monate)
Fiskaly-Provisionierung, 12 € Pausengebühr je Monat, 20 € Reaktivierung nach Pause
Meldet AdminPUK/CredentialSeed & Co. aus jeder Instanz an den Lizenzserver — ein Dokument je (Lizenz, TSE-Seriennummer, Fingerprint); jede inhaltliche Änderung (TSE-Tausch ebenso wie geänderte PIN/PUK) legt ein zusätzliches Dokument an, statt das vorhandene zu überschreiben. Meldung täglich (TseCredentialReporter, je Mandant über ITenantJobRunner) plus sofort aus TseController.UpdateConfig/Initialize. Geheimfelder $ENC$-verschlüsselt; Abruf ohne Geheimnisse (nur has…-Flags), Aufdecken nur über einen eigenen Endpunkt mit Audit-Eintrag TSE_VAULT_REVEAL
Marke am Lizenzserver pflegen (Name, Theme, Farben, Schriften, Logo), Logo hoch-/entladen — Operator über jede Marke, Reseller über die EIGENE (api/v1/portal/reseller/marke, serverseitig über seine PartnerId aufgelöst, nie per brandingId-Parameter; Theme-Wahl auf dikas/dikas-hell begrenzt); Logo-Anhang und Marken-Dokument werden mit derselben aktuellen CouchDB-Revision geschrieben
Eigentümer-Partner einer Marke ändern
Marke an eine Lizenz hängen; die Werte werden bei der Provisionierung in die Mandanten-DB geschrieben
Händler-Spalte + Filter in der Lizenzübersicht (zeigt getrennt „abgerechnet" = ResellerPartnerId und „betreut" = SupportPartnerId — nur ersteres bewegt Geld); Einzelfeld an der Lizenz; Massenzuweisung des betreuenden Händlers an alle Lizenzen einer Kundengruppe mit Vorschau-vor-Zuweisen-Sperre (apply:false → Zahlen, erst danach apply:true schreibbar)
Steuerberater-Kanzleien anlegen, einladen, sperren, Verknüpfungsanfragen bestätigen
Partner.IsSmallBusiness (seit 31.08.2026): ein Händler, der als Kleinunternehmer keine Umsatzsteuer ausweist, bekommt seine Provisions-Gutschrift ohne Steuer. Muss ausdrücklich gesetzt werden, Regelfall ist der Steuerausweis. Nicht zu verwechseln mit dem Mandanten-Schalter BackendConfig.SmallBusinessExemption (der betrifft die Rechnungen des KUNDEN, 09)
Liste der betreuten/abgerechneten Kunden im Händler-Detail; Kunden-Reiter verlinkt Firma → Kundenmaske und OnlineName → Lizenzmaske (Firma nur, wenn die Lizenz eine customerId trägt — Altbestand ohne bleibt unverlinkter Text)
Öffentliche Anmeldung mit Doppel-Opt-in, Cockpit-Demo, öffentliches Kanzlei-Verzeichnis
Kanzlei fragt an, Kunde bestätigt im Portal — beidseitig widerrufbar
Eigene und ausdrücklich betreute Endkunden sehen; Online-Name öffnet die kanonische Kundeninstanz in einem neuen Fenster, Detail zeigt Install-Key. Beide Beziehungen dürfen Kundenstammdaten inkl. Steuernummer pflegen; nur der abrechnende Reseller darf Vertrag, Paket/Module, Freischaltung und Zugangsdaten ändern. Die Liste entdoppelt, wenn beide Beziehungen auf denselben Händler zeigen. Stammdaten werden in Lizenz, zentralen Kunden und gezielt im bestehenden Mandanten-systemlic aktualisiert. Fehlen lokale Steuerdaten im Einrichtungsassistenten, werden TaxId/VatId aus systemlic vorbelegt
Beendet die Einrichtungsphase (ResellerSetupPending) eines vom Händler angelegten Endkunden: Abo-Start + Erstrechnung (geldwirksam, über NextInvoiceDate wiederholbar), danach Cloud-TSE best-effort, zuletzt Kundeneinladung — Reihenfolge ist Absicht. Idempotent über CustomerSubscription.ActivatedAt; ein Cloud-TSE-Fehler kippt die Freischaltung nicht
Owner 07.08.2026: solange ein Händler-Kunde NICHT freigeschaltet ist, darf der Händler Paket, Module/Add-ons und Seats frei ändern; mit der Freischaltung steht die Konfiguration fest (ALREADY_ACTIVATED, keyt auf CustomerSubscription.ActivatedAt, nicht auf ResellerSetupPending). Zieht die Order/Lizenz-Module über dieselbe BuildModules-Stelle wie die Anlage nach und pusht per SeedSystemLicenseDocAsync sofort in die Mandanten-DB — sonst hätte die Änderung keine Wirkung in der Instanz
Täglicher Job: Erinnerung an den Händler nach 21 Tagen ohne Freischaltung (CustomerSubscription.SetupReminderSentAt als Einmal-Riegel), Stilllegung (nicht Löschung) nach 30 Tagen + Berechnung bereits gelieferter Swissbit-Hardware an den Händler. Filter ist eng auf ResellerSetupPending — ein weiterer Filter über ResellerPartnerId würde laufende Bestandsbetriebe des alten Reseller-Modells stilllegen
POST portal/reseller/kunden/{licenseId}/einrichtung-abbrechen (Owner 31.08.2026): ein falsch angelegter Kunde geht SOFORT wieder los, ohne 30 Tage Frist — Einrichtungsmerker an der Order löschen, automatische Doppelrollen-Verknüpfung beenden, ResellerSetupPending beenden, Abo mit EffectiveDate = jetzt (nicht Monatsende), Instanz sperren OHNE Hardware-Berechnung. Doppelter Riegel ActivatedAt + ResellerSetupPending, damit weder ein freigeschalteter Kunde noch ein Bestandskunde des alten Modells durchkommt. Der naheliegende Weg über „Kündigen" löst das nicht: der belegt das Kontingent bis Monatsende und der Fristen-Job stellt an Tag 30 trotzdem die Hardware in Rechnung
setupPending steht seit 31.08.2026 in der Händler-Kundenliste und in der Operator-Lizenzliste (vorher war ein laufender Kunde von einem, der noch nichts kostet, nicht zu unterscheiden — „warum bekommt der Kunde keine Rechnung?" war nicht beantwortbar); dazu Suche und Sortierung in der Händler-Kundenliste und der Weg in die Kundenverwaltung
Ist der Vermittler zugleich Steuerberater (IsReseller && IsStb), wird der von ihm angelegte Kunde SOFORT mit seiner Kanzlei verknüpft (PartnerId = Kanzlei, PartnerLinkStatus = Active, Herkunft PartnerLinkOrigins.ResellerDualRole) — voll aktiv, ohne Bestätigung durch den Kunden (Owner-Entscheid 31.08.2026; in Spanien ist die Gestoría, die auch vermittelt, der Normalfall). Reiner Händler (IsReseller && !IsStb): PartnerId bleibt unberührt. Abbruch und Fristablauf lösen die automatisch entstandene Verknüpfung wieder; eine vom Menschen bestätigte bleibt
Seit 31.08.2026 eigener Claim stb für Partner mit IsStb; die Policy PortalKanzlei verlangt ihn, ein reines Händler-Token (portal_partner + reseller) kommt an den Kanzlei-Endpunkten nicht mehr durch. Vorher öffnete jeder Händler-Login die ganze Kanzlei-Fläche
Staffel aus den Lizenzeinstellungen (10 % ab 1, 15 % ab 11, 20 % ab 51 Kunden); ein fester Satz am Partner schlägt alles (Owner 07.08.2026), eine ausgehandelte Sonderkondition am Kundendatensatz ersetzt die Staffel. Es greift die letzte Stufe, deren Kundenschwelle erreicht ist
Reiter Betrieb → Lizenzserver → Händler-Staffel (?lic=margin): Stufen anlegen, ändern, entfernen. Der Server prüft aufsteigende und eindeutige Kundenschwellen sowie 0-100 % und weist eine kaputte Staffel mit 400 zurück; die Maske meldet dasselbe schon vor dem Speichern. null heißt „nicht mitgeschickt ⇒ unverändert“, eine LEERE Liste heißt „keine Staffel“ — nur so kann ein Altclient die Staffel nicht löschen und die Maske trotzdem die letzte Stufe entfernen. Bis 06.09.2026 (Befund 18b) war die Staffel über keine Maske änderbar
Lead-Import (CSV), Zuweisung nach Provinz, Karteischutz 90 Tage, Freigabe, Lead-Liste
Liest den Partnercode aus dem Bestell-Link und löst ihn bei der Kundenanlage auf: AgentCode → AcquiredByAgentPartnerId, par_…-Muster → ReferredByPartnerId, unbekannt → nur Log (blockt nie den Checkout); eine bestehende Attribution wird nie überschrieben
Handelsvertreter anlegen und einladen, Stammdaten, Vertragsstatus aktiv/pausiert/beendet
Eigene Leads, Aktivitätsprotokoll, Statuswechsel, geworbene Kunden, Provisionsübersicht
Idempotenter Periodenlauf (POST sales/commissions/run, Doc-Id comml_…), Provisionsbuch (GET sales/commissions), CSV-Abrechnung je Empfänger (GET sales/commissions/export), Kanalkosten-Kennzahl. Läuft seit 01.09.2026 automatisch: Hintergrunddienst alle 24 h (3 min nach Start) über VORIGE und LAUFENDE Periode — Zahlungen, die erst nach Monatsende verbucht werden, holt der Lauf damit nach; ein Handstart bleibt möglich und ist idempotent
Reiter „Abrechnung" im Vertriebs-Cockpit: GET sales/payouts/preview?period= erzeugt NICHTS (keine Nummer, kein Beleg, kein Statuswechsel); POST sales/payouts zieht je Händler EINE Gutschrift aus dem Nummernkreis (InvoiceSeries), vom Operator in der Vorschau zurückgestellte Händler bleiben auf „Berechnet" und gehen in den nächsten Lauf; GET sales/payouts/{id}/sepa liefert die Sammelüberweisung als pain.001 fürs Bankportal (Verwendungszweck = Belegnummer + Periode), GET sales/payouts/{id}/belege alle Gutschriften des Laufs als ZIP. Vorschau rechnet je Händler Netto/Steuerfall/Blocker (IBAN, Auslandsanschrift ohne USt-IdNr., weder Steuernummer noch USt-IdNr. — § 14 Abs. 4 Nr. 2 UStG gilt auch für die Gutschrift, Kleinunternehmer ⇒ 0 %). pain.001 IBAN-only ohne Schein-BIC. Zwei Riegel gegen Doppelauszahlung (05.09.2026): In-Process-Sperre CommissionPayoutRunGate (Singleton, zweiter Aufruf ⇒ 409 PAYOUT_RUN_IN_PROGRESS) und der gespeicherte Lauf als persistenter Anker (CommissionPayoutAnchor: ein Eintrag, der in einem Lauf steht, ist abgerechnet; ein Nachhol-Lauf schreibt ihn auf DEN Lauf fort, statt einen zweiten Beleg zu ziehen). Nachgewiesen 01.09.2026 auf konto.nx9.de
Reiter „Provision" im Händler-Portal: GET portal/reseller/provision?period= liest DIESELBE Query wie die Operator-Sicht, hart auf die PartnerId aus dem Token gescoped — kein zweiter Rechenweg, damit die Anzeige nie von der Auszahlung abweicht
MRR/ARR, aktive Lizenzen, Neu gegen Kündigung, Verteilung nach Zahlart, Modul, Land, Mahnstufe
Eine Abo-Position beim Ketten-Inhaber, Staffel 19/15/9/5 € je Filiale und Monat
Übernahme aus Alt-CouchDBs mit Vorschau, Zusammenführung, Bereinigung verwaister Kunden
DB-Server-Registry, Default-Server, ISO-Link, Fiskaly-Zugänge, Warengruppen-Zuordnung
Signierter Nachweis aus dem Admin-Login; gilt standardmässig sieben Tage und deckelt damit die Laufzeit ausgestellter .vpnkey-Fernwartungszugänge, ohne die kürzere Browser-Sitzung zu verlängern
Ein-Klick-Grundausstattung (Warengruppen, Artikel, Tischplan) für den frisch eingerichteten Betrieb
Problem-Meldung einer Kasse ohne eigenes Mailsystem über den Lizenzserver zustellen
Fehler-Bündel lokaler Geräte entgegennehmen und in dieselbe Log-Senke schreiben
Kein Treffer in diesem Bereich. Gesamte Website durchsuchen
Oft gesucht
Marketing-Cookies erlauben?
Wir würden gerne mit Google Ads messen, welche Anzeigen zu einer Anmeldung führen. Dafür werden Cookies gesetzt und Daten an Google (USA) übertragen — nur mit deiner Einwilligung. Unsere anonyme Reichweitenmessung (Matomo) läuft davon unabhängig. Details und Widerruf in der Datenschutzerklärung.