Verträge

Überblick
Verträge führen Retainer, Wartung und Hosting entlang ihres Lebenszyklus — vom Abschluss bis zur Kündigung.
Der Unterschied zum einmaligen Auftrag ist die Dauer: Ein Vertrag erzeugt wiederkehrende Erlöse und verbraucht laufend Kontingente. Beides will beobachtet werden, sonst merkt niemand, dass ein Retainer seit Monaten überzogen ist.
Kernaufgaben
Vertrag anlegen und führen. Laufzeit, Konditionen und Status; der Status-Katalog steht in den Vertrags-Einstellungen.
Kontingente verfolgen. Was vereinbart war und was verbraucht ist. Kunden sehen ihre laufenden Verträge und Kontingente im Kundenportal.
Vorauszahlung verwalten. Vorausbezahlte Guthaben werden gegen die Leistung verrechnet.
Abrechnung auslösen. Der Vertragslauf erzeugt die fällige Abrechnung, siehe Abrechnung. Pauschale und wiederkehrende Positionen bilden zusammen den Abrechnungsplan; jede Änderung an Pauschale, Positionen oder Stufenpreisen zieht ihn nach. Der Tab Abrechnung am Vertrag zeigt Plan, Läufe, Stufenpreise und die Übernutzungs-Prognose.
Verträge ohne Abrechnung. Die Abrechnung ist ein eigenes Modul und für Verträge nicht Pflicht. Ist sie ausgeschaltet, laufen Verträge ganz normal weiter — anlegen, aktivieren, pausieren, kündigen, Kontingente und Vorauszahlungen —, es entsteht aber kein Abrechnungsplan und keine Abrechnungsvorgabe; der Reiter Abrechnung sagt das mit einem Hinweis, und Verbrauch erfassen an nutzungsbasierten Positionen gibt es dann nicht. Gesammelte Mehrleistung bleibt offen. Wird die Abrechnung später eingeschaltet, zieht das System die Pläne aller Verträge auf den aktuellen Stand: Laufende Verträge bekommen ihren Plan, pausierte ruhen, beendete enden. Rückwirkend wird nichts berechnet — ein neuer Plan beginnt mit der laufenden Periode; was vorher lief, rechnen Sie bei Bedarf von Hand ab. Ohne das Artikel-Modul erkennt das System außerdem nicht, ob ein angenommenes Angebot eine Wartung ist; Angebot → Vertrag von Hand geht weiterhin.
Aus Vorlage anlegen. Wiederkehrende Vertragsarten liegen als Vorlage in den Vertrags-Einstellungen — Kopfwerte, Kontingente, Positionen und Stufenpreise werden kopiert.
Nachträge unterzeichnen. Ein Nachtrag mit neuer Pauschale wird unterzeichnet und zum Tag des Inkrafttretens automatisch angewendet.
Kündigen. Die Kündigung ist ein eigenes Recht — sie beendet wiederkehrende Erlöse und ist deshalb keine beiläufige Handlung.
Felder im Detail
Die Spalte Was es bewirkt beantwortet, was sich im System ändert — nicht, wie das Feld heißt. Der graue Name dahinter ist das Feld der API: unter ihm läuft dasselbe über Automation, Import und KI-Werkzeuge.
Vertragskopf
| Feld | Pflicht | Werte / Format | Was es bewirkt |
|---|---|---|---|
Titel title | ja | Text | Wie der Vertrag heißt. Steht auf Beleg, Rechnung und in der Kundenakte. |
Kunde customerId | ja | bestehender Kunde | Mit wem der Vertrag besteht. |
Art type | nein | Retainer, Wartung, Hosting, nutzungsbasiert, Waren-Abo | Die Bauform. Sie bestimmt, welche der Abschnitte unten überhaupt greifen — ein Hosting-Vertrag braucht kein Stundenkontingent, ein nutzungsbasierter Vertrag rechnet erfasste Mengen ab, ein Waren-Abo liefert über einen wiederkehrenden Auftrag. |
Beginn startsAt / Ende endsAt | ja | Datum | Die Laufzeit. Das Ende ist der Anker für Kündigungsfrist und Verlängerung; ohne Ende läuft der Vertrag unbefristet. |
Abrechnungsrhythmus billingCycle | nein | monatlich, quartalsweise, jährlich | In welchem Takt abgerechnet wird. |
Abrechnungszeitpunkt billingMode | nein | im Voraus oder nachträglich | Ob die Periode vorher oder hinterher berechnet wird. Das ist keine Formalie: bei im Voraus wird die Januar-Rechnung im Januar gestellt, bei nachträglich im Februar — mit allen Folgen für Liquidität und Abgrenzung. |
Pauschale flatFeeAmount | nein | Betrag, 0 oder mehr | Der feste Betrag je Periode. |
Deckt nicht abrechenbare Zeiten coversNonBillable | nein | Ja/Nein | Ob auch als nicht abrechenbar erfasste Zeit auf den Vertrag läuft. Bei einem Retainer üblicherweise ja — sonst zahlt der Kunde die Pauschale und Sie schreiben die Arbeit trotzdem nirgends gut. |
Servicezusage slaId | nein | eingerichtete Servicezusage | Welche Reaktions- und Lösungsfristen für Tickets dieses Kunden gelten. |
Indexierung indexationBasisPoints | nein | Basispunkte | Jährliche Anpassung des Preises in Hundertstel-Prozent (100 = 1 %). Sie wird zum Stichtag gerechnet, statt jedes Jahr von Hand nachgezogen zu werden. |
Kundensichtbare Notiz noteCustomerVisible | nein | Text | Text, den der Kunde im Portal sieht. Alles andere bleibt intern. |
Marke brandId | nein | eine Ihrer Marken | Unter welcher Marke der Vertrag läuft. |
Belegvorlage documentTemplateId | nein | eingerichtete Belegvorlage | Layout des Vertragsbelegs. |
Mehrleistung abrechnen overageBilling | nein | je Periode, gesammelt je Quartal, gesammelt je Jahr | Wann Mehrstunden auf die Rechnung kommen. Gesammelt heißt: eine Rechnung zum Quartals- oder Jahresende statt vieler kleiner. |
Abbau-Reihenfolge consumptionOrder | nein | erst Guthaben, erst Kontingent | Worauf eine gebuchte Zeit zuerst läuft, wenn der Vertrag beides hat. |
Wiederkehrender Auftrag recurringOrderUlid | nein | bestehender wiederkehrender Auftrag | Nur beim Waren-Abo: Die Lieferung läuft über den Auftrag, der Vertrag hält Laufzeit und Kündigung. Leer lassen löst die Verknüpfung. |
Vorlage templateUlid | nein | eingerichtete Vorlage | Nur beim Anlegen aus Vorlage: welche Vorlage kopiert wird. |
Verlängerung und Ende
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
Verlängerungsart renewalMode | keine, automatisch, auf Anfrage | Was am Laufzeitende geschieht. Automatisch verlängert stillschweigend — deshalb ist die Kündigungsfrist daneben die wichtigste Zahl des Vertrags. |
Verlängerung um (Monate) renewalTermMonths | Zahl | Um wie viel verlängert wird. |
Kündigungsfrist (Tage) noticePeriodDays | Zahl | Wie lange vor dem Ende gekündigt werden muss. Das System meldet den Termin rechtzeitig — genau deshalb steht die Frist hier und nicht nur im PDF. |
Kündigungsgrund terminationReason | Text | Warum gekündigt wurde. Grundlage der Abwanderungs-Auswertung. |
Pausengrund pauseReason | Text | Warum der Vertrag ruht. Ein pausierter Vertrag rechnet nicht ab, bleibt aber bestehen. |
Stundenkontingent
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
Name quotaName | Text | Wie das Kontingent heißt, etwa „Support" oder „Entwicklung". |
Stunden je Periode quotaTargetHours | Zahl, größer als 0 | Wie viele Stunden enthalten sind. |
Kategorie quotaCategoryKey | Zeit-Kategorie | Welche Art von Zeit darauf läuft. So lässt sich Support getrennt von Entwicklung führen. |
Standard-Kontingent quotaIsDefault | Ja/Nein | Worauf gebucht wird, wenn nichts anderes gewählt ist. |
Regel bei Rest quotaRule | verfällt, wird übertragen, wird zusätzlich berechnet | Was mit nicht verbrauchten Stunden geschieht. Die Antwort auf die häufigste Kundenfrage überhaupt — sie gehört in den Vertrag und hier hinein. |
Übertrag höchstens (Stunden) quotaRolloverMaxHours | Zahl, 0 oder mehr | Wie viel höchstens mitgenommen wird. |
Übertrag verfällt nach (Perioden) quotaRolloverExpiryPeriods | Zahl | Wann übertragene Stunden doch verfallen. |
Deckelung quotaCapMode | harte Grenze, Warnung, weich | Was bei Überschreitung passiert. Harte Grenze verhindert weitere Buchungen, Warnung meldet nur, weich lässt laufen. |
Satz für Mehrstunden quotaOverageRateId | eingerichteter Satz | Womit Stunden über dem Kontingent berechnet werden. |
Steuersatz quotaTaxRate | 0 bis 100 | Der Satz für die Mehrstunden-Abrechnung. |
Warnschwellen quotaWarnThresholds | Prozentwerte | Ab wann gewarnt wird, etwa bei 80 % und 100 %. Die Warnung geht an Sie und ist die Grundlage, den Kunden rechtzeitig anzusprechen. |
Vorausbezahltes Guthaben
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
Name prepaidName | Text | Wie das Guthaben heißt. |
Stunden prepaidHours | Zahl, größer als 0 | Wie viele Stunden gekauft wurden. |
Preis prepaidPriceAmount | Betrag, 0 oder mehr | Was dafür bezahlt wurde. |
Verfällt am prepaidExpiresAt | Datum | Wann nicht verbrauchtes Guthaben verfällt. Ohne Datum verfällt es nicht. |
Warnschwelle (%) prepaidWarnThresholdPct | Prozent | Ab welchem Verbrauch gewarnt wird — der Anlass, das nächste Paket anzubieten, bevor die Arbeit stockt. |
Paket prepaidUlid | bestehendes Paket | Beim Nachkaufen: zu welchem Paket ein Folgepaket mit denselben Stunden, demselben Preis und derselben Warnschwelle angelegt wird. Der Kaufpreis wird Abrechnungsvorgabe. |
Positionen
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
Bezeichnung itemDescription | Text | Was abgerechnet wird. |
Art itemKind | Position, Kontingent, Sonstiges | Wofür die Zeile steht. |
Menge itemQuantity / Einheit itemUnit | Zahl, Einheit | Umfang je Periode. |
Einzelpreis itemUnitPriceAmount | Betrag | Preis je Einheit. |
Steuersatz itemTaxRate | 0 bis 100 | Der Satz dieser Position. |
Artikel itemProductId | bestehender Artikel | Verbindung zum Katalog. |
Kontingent itemQuotaId | bestehendes Kontingent | Auf welches Kontingent die Position zahlt. |
Position itemUlid | bestehende Position | Beim Entfernen: welche Position wegfällt. An einem laufenden Vertrag wird der Abrechnungsplan nachgezogen. |
Stufenpreise
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
Ab Laufzeitmonat priceStepFromMonth | Zahl ab 1 | Ab welchem Vertragsmonat die Stufe gilt; Monat 1 ist der Beginn, 13 das zweite Jahr. Je Monat eine Stufe. |
Neue Pauschale priceStepPriceAmount | Betrag | Ersetzt die Pauschale ab diesem Monat. |
Nachlass (%) priceStepDiscountPercent | Prozent | Nachlass auf jede wiederkehrende Zeile ab diesem Monat. |
Notiz priceStepNote | Text | Warum die Stufe gilt, etwa „Treuerabatt ab Jahr 2". |
Stufe priceStepUlid | bestehende Stufe | Beim Entfernen: welche Stufe wegfällt. |
Verbrauch (nutzungsbasierte Verträge)
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
Verbrauchsposition usageItemUlid | Position der Art „Verbrauch" | Worauf die Menge gebucht wird; abgerechnet wird zum Einzelpreis der Position. |
Menge usageQuantity | Dezimalzahl | Die erfasste Menge; sie fließt in die nächste Abrechnungsvorschau. |
Datum usageOccurredAt | Datum | Wann verbraucht wurde. |
Externe Kennung usageExternalRef | Text | Macht die Einlieferung wiederholbar: dieselbe Kennung wird nur einmal gebucht. |
Historie
Der Reiter Historie listet jedes Ereignis des Vertrags mit Zeitpunkt, Bearbeiter und einer lesbaren Beschriftung (etwa „Guthaben gekauft“, „Indexiert“, „Nachtrag angewendet“). Darunter stehen die betroffenen Felder mit Klartext-Namen und formatierten Werten, Beträge in der Vertragswährung, Daten und Stunden im Anwenderformat. Ein Nachtrag zeigt Vorher und Nachher als Liste der geänderten Felder. Kennungen und technische Schlüssel erscheinen nicht.
Nur über Schnittstelle und Automation
| Feld | Werte / Format | Was es bewirkt |
|---|---|---|
quoteId, quoteUlid, sourceQuoteId | Kennung eines Angebots | Erzeugt den Vertrag aus einem angenommenen Angebot und hält fest, woraus er entstanden ist. |
Einstellungen & Rechte
- Modul
module.contracts. contract.contract.view/create/edit,contract.contract.terminatefür die Kündigung,
contract.quota.view für Kontingente, contract.prepaid.manage für Vorauszahlungen, contract.config.manage für den Katalog, contract.template.manage für Vertragsvorlagen.
- Auto-Pause bei Zahlungsverzug. In den Vertrags-Einstellungen: ab welcher Mahnstufe ein Vertrag
mit überfälliger Rechnung pausiert (0 = aus) und ob ein Zahlungseingang die automatische Pause wieder aufhebt. Eine von Hand gesetzte Pause bleibt davon unberührt.
- Der Abrechnungslauf hat kein eigenes Recht. Er läuft ereignis- und zeitgesteuert, nicht auf
Knopfdruck — einen Freigabe-Endpunkt gibt es nicht. contract.billing.run ist für eine spätere manuelle Freigabe vorgemerkt und bewirkt heute nichts.
- Abrechnung optional. Plan, Vorgaben und Verbrauch erfassen gibt es nur bei eingeschaltetem
Modul module.finance; ohne es läuft der Vertrag ohne Abrechnung weiter (siehe oben).
- Der Status-Katalog trägt wie überall eine Lebenszyklus-Kategorie.
FAQ & Fehlerbilder
Ein Kontingent ist überzogen. Das Modul zeigt es, benachrichtigt Kundenbetreuer und Ersteller und löst den Automations-Auslöser aus; es verhindert es nicht (außer bei harter Grenze). Die Übernutzungs-Prognose im Tab Abrechnung warnt schon vorher. Die Entscheidung — nachverhandeln oder zusätzlich berechnen — bleibt beim Menschen.
Nach Annahme eines Wartungsangebots entsteht kein Projekt. Das ist gewollt: Ein angenommenes Angebot mit Wartung oder Servicezusage wird ein Vertragsentwurf mit den Positionen des Angebots.
Der Reiter Abrechnung zeigt nur einen Hinweis, aber keinen Plan. Die Abrechnung ist nicht eingeschaltet. Nach dem Einschalten bekommt jeder laufende Vertrag seinen Plan ab der laufenden Periode — ohne rückwirkende Abrechnung.
Nach der Kündigung wird weiter abgerechnet. Prüfen Sie das Vertragsende und den zugehörigen Plan in der Abrechnung.
Ich kann nicht kündigen. Dann fehlt contract.contract.terminate.
Der Kunde sieht seinen Vertrag nicht. Prüfen Sie die Portal-Freigabe, siehe Portal-Zugänge.