Vertragsverstöße
Erfassen und verfolgen Sie Verstöße gegen Vertragsbedingungen durch Mieter
Überblick
Das Verstoßmodul ermöglicht die Dokumentation und Verfolgung von Fällen der Nichteinhaltung von Mietvertragsbedingungen. Jeder Verstoß kann mit bestimmten Vertragsklauseln verknüpft und durch Fotobeweise belegt werden.
Verstoßverfolgung
Führen Sie eine Historie aller Verstöße für jedes Objekt und jeden Vertrag
Verknüpfung mit Klauseln
Geben Sie an, welche Vertragsklauseln verletzt wurden
Fotobeweise
Fügen Sie Fotos und Dokumente zur Bestätigung von Verstößen bei
Schweregrade
Bewerten Sie die Schwere von Verstößen auf einer Skala von 1 bis 10
Schweregrade
Das System verwendet 4 Schweregrade zur Klassifizierung von Verstößen:
Niedrig – geringfügige Verstöße, Warnungen
Mittel – moderate Verstöße, erfordern Aufmerksamkeit
Hoch – schwerwiegende Verstöße, können zu Strafen führen
Kritisch – Grund für Vertragsauflösung
Arbeitsprozess
Typischer Prozess der Verstoßdokumentation:
Entdeckung
Der Eigentümer entdeckt Verstöße gegen Vertragsbedingungen
Dokumentation
Erstellung eines Eintrags mit Beschreibung, Datum und Schweregrad
Beweise
Fotos anhängen und mit Vertragsklauseln verknüpfen
Benachrichtigung
Der Verletzer kann den dokumentierten Verstoß einsehen
Zugriffsrechte
Verschiedene Benutzer haben unterschiedliche Rechte:
| Aktion | Wer kann |
|---|---|
| Verstoß erstellen | Eigentümer, Administratoren |
| Verstoß anzeigen | Eigentümer, Administratoren, Verletzer |
| Verstoß bearbeiten | Eigentümer, Administratoren |
| Verstoß löschen | Eigentümer, Administratoren |
| Dokumente anhängen | Eigentümer, Administratoren |
Automatic Overdue Payment Control
The system automatically detects late payments and creates contract violations. A daily cron job (app:payments:check-overdue) runs at 05:00 UTC and checks the previous month's payments.
How it works
- For each property with an active contract, the system reads RENT_PAYMENT_DAY and UTILITIES_PAYMENT_DAY + grace period from the contract blocks
- Finds payments made after the deadline (charge date + grace period)
- Groups overdue payments by deadline date
- Creates a ContractViolation with auto-generated description in the tenant's language
- Links overdue payments to the violation via
violation_overdue_paymentsjunction table
Severity rules
| Days overdue | Severity | Level |
|---|---|---|
| 1–5 | 3 | Low |
| 6–14 | 5 | Medium |
| 15–30 | 7 | High |
| 31+ | 9 | Critical |
Utilities overdue always gets severity 5 (medium).
If a contract does not have RENT_PAYMENT_DAY or UTILITIES_PAYMENT_DAY blocks — no violation is created for that type.
Payment linking
Each violation can be linked to one or more overdue payments. One payment can be linked to at most one violation (UNIQUE constraint). Payments can also be linked manually when creating or editing a violation.
REST API
REST-API für die Integration mit externen Systemen:
Service-Layer-Hinweis
GET /api/v1/properties/{id}/violations - Liste der Verstöße
POST /api/v1/properties/{id}/violations - Verstoß erstellen
GET /api/v1/properties/{id}/violations/{vid} - Verstoßdetails
PUT /api/v1/properties/{id}/violations/{vid} - Verstoß aktualisieren
DELETE /api/v1/properties/{id}/violations/{vid} - Verstoß löschen
POST /api/v1/properties/{id}/violations/{vid}/documents - Dokument anhängen
DELETE /api/v1/properties/{id}/violations/{vid}/documents/{did} - Dokument entfernen
GET /api/v1/properties/{id}/violations/{vid}/overdue-payments - List linked overdue payments
POST /api/v1/properties/{id}/violations/{vid}/overdue-payments - Link payments (payment_ids[])
DELETE /api/v1/properties/{id}/violations/{vid}/overdue-payments/{payId} - Unlink payment
GET /api/v1/properties/{id}/overdue-payments - List unlinked overdue payments
Beispielantwort
{
"data": [
{
"id": 1,
"property_id": 5,
"contract_id": 12,
"violation_date": "2026-01-10",
"severity": 7,
"severity_level": "high",
"description": "Unauthorized subletting of the property to third party",
"violator": {
"id": 15,
"name": "John Tenant"
},
"created_by": {
"id": 8,
"name": "Owner Name"
},
"documents_count": 2,
"blocks": [
{
"id": 5,
"code": "SUBLETTING",
"name": "Subletting Prohibition"
}
],
"created_at": "2026-01-10T14:30:00+00:00"
}
],
"total": 1,
"page": 1,
"totalPages": 1
}
Swagger / OpenAPI
Vollständige API-Dokumentation verfügbar unter /api/v1/doc