Startseite › Bibliothek › Zahlungen

Zahlungen

Erfassung und Verfolgung von Zahlungen für Objekte

Überblick

Das Zahlungsmodul ermöglicht die Erfassung von Zahlungen für Nebenkosten und Wartungspersonal. Jede Zahlung ist mit einem Objekt verknüpft und kann eine angehängte Quittung haben.

Zahlungsverfolgung

Erfassung von Zahlungen mit Betrag, Datum und Ausgabentyp

Quittungen hochladen

Hängen Sie PDF-, JPG- oder PNG-Dateien als Zahlungsbestätigung an

Bestätigung durch Eigentümer

Eigentümer kann Zahlung bestätigen oder ablehnen

Mehrwährungsunterstützung

Zahlungen werden automatisch in die Landeswährung der Immobilie umgerechnet, wenn sie sich von der Zahlungswährung unterscheidet.

Zahlungsarchitektur

Zahlungen unterstützen zwei Arten von Gebühren: Nebenkosten und Miete. Jede Zahlung ist mit genau einem Typ verknüpft.

Nebenkosten / Ausgaben
Payment
↓
ExpenseChargeAbrechnungszeitraum für eine Ausgabe
↓
PropertyExpenseKonfiguration wiederkehrender Ausgaben
↓
ExpenseProviderDienstleister oder Empfängerbenutzer
Miete
Payment
↓
RentalChargeMonatliche Mietabrechnung
↓
ContractMietvertrag mit Mieter
Datenintegrität: Jede Zahlung muss entweder mit einer Nebenkostenabrechnung oder einer Mietabrechnung verknüpft sein. Beide Typen gleichzeitig sind nicht erlaubt.

Empfängertypen

Eine Zahlung kann an einen von zwei Empfängertypen adressiert sein:

Dienstleister

Versorgungsunternehmen (DTEK, Naftogaz, Wasserwerke usw.)

Benutzer

Wartungspersonal (mit Rolle MAINTENANCE) für geleistete Arbeit

Empfänger-Fallback: Das System versucht zunächst, den Empfänger von PropertyExpense → ExpenseProvider abzurufen. Falls nicht gefunden, greift es auf ExpenseCharge → ServiceProvider zurück, um Abwärtskompatibilität zu gewährleisten.

Währungsumrechnung

Beim Anzeigen einer Zahlung wird der Betrag automatisch in beiden Währungen angezeigt, wenn die Zahlungswährung von der offiziellen Landeswährung der Immobilie abweicht:

150.00 €
(7,521.66 ₴)

Die Umrechnung verwendet tägliche Wechselkurse der Nationalbank der Ukraine mit EUR als Basiswährung.

Unterstützte Landeswährungen

  • UA (Ukraine) → UAH (₴)
  • PL (Poland) → PLN (zł)
  • MD (Moldova) → MDL (L)
  • RO (Romania) → RON (lei)
  • CZ (Czech Republic) → CZK (Kč)
  • Eurozone countries → EUR (€) - no conversion needed

Bestätigungsstatus

Eigentümer oder sein Vertreter kann den Bestätigungsstatus der Zahlung festlegen:

Ausstehend

Standardstatus bei Erstellung der Zahlung

Bestätigt

Eigentümer hat die Zahlung überprüft und bestätigt

Abgelehnt

Eigentümer hat die Zahlung als inkorrekt abgelehnt

Zahlungssichtbarkeit

Wer Zahlungen sieht, hängt von der Benutzerrolle im Objekt ab:

Rolle Sieht
LANDLORD / LANDLORD_AGENT Alle Zahlungen (aktiv und inaktiv)
TENANT / TENANT_AGENT Eigene Zahlungen + aktive fremde
MAINTENANCE Nur Zahlungen, bei denen er Empfänger ist
Inaktive Zahlungen Inaktive Zahlungen (is_active=false) sind nur für den Autor oder Eigentümer/Vertreter des Objekts sichtbar.

Dateien hochladen

Zur Zahlung kann eine Quittung angehängt werden. Unterstützte Formate:

  • PDF - Dokumente
  • JPG, JPEG, PNG - Bilder
  • HEIC - Fotos vom iPhone (wird in JPG konvertiert)

Dateien werden in S3-Cloud-Speicher mit eindeutigem Pfad für jede Zahlung gespeichert.

Sicherer Dateizugriff: Alle Zahlungsdateien verwenden HMAC-signierte sichere URLs, um unbefugten Zugriff zu verhindern. Direkte S3-URLs werden Clients niemals offengelegt.

Verknüpfung mit Quittungen

Zahlungen werden über die PaymentAllocation-Tabelle mit Quittungen verknüpft. Mehrere Zahlungen können zu einer Quittung zusammengefasst werden (z.B. Miete + Nebenkosten).

Payment Ausgehende Zahlung vom Mieter
↔
PaymentAllocation Verknüpft Zahlung mit Quittung mit zugeteiltem Betrag
↔
Receipt Zahlungsbestätigung vom Vermieter

Quittungskombination

Eine Quittung kann mehrere Zahlungen zusammenfassen (z.B. Miete + Nebenkosten in einer Quittung). Jede Zahlung wird mit dem zugewiesenen Betrag verknüpft.

Mehrwährungszuteilung

Zuteilungsbeträge können von Zahlungs-/Quittungsbeträgen abweichen, wenn Währungen unterschiedlich sind (automatische Umrechnung).

Mehr erfahren: Für detaillierte Informationen zu Quittungen siehe Quittungen.

REST API

Zahlungen sind über REST API mit JWT-Autorisierung verfügbar:

GET    /api/v1/payments                              - Meine Zahlungen
GET    /api/v1/properties/{id}/payments              - Objektzahlungen
POST   /api/v1/properties/{id}/payments              - Zahlung erstellen
GET    /api/v1/properties/{id}/payments/{pid}        - Zahlungsdetails
PUT    /api/v1/properties/{id}/payments/{pid}        - Zahlung aktualisieren
DELETE /api/v1/properties/{id}/payments/{pid}        - Zahlung löschen
POST   /api/v1/properties/{id}/payments/{pid}/confirm - Bestätigen
POST   /api/v1/properties/{id}/payments/{pid}/reject  - Ablehnen

Beispiel für Erstellungsanfrage

Nebenkosten / Ausgaben (Nebenkosten)

{
  "payment_date": "2026-01-15",
  "amount": "150.50",
  "currency_id": 1,
  "expense_charge_id": 42,
  "contract_id": 5,
  "payer_user_id": 10,
  "notes": "January electricity payment"
}

Miete (Miete)

{
  "payment_date": "2026-02-05",
  "amount": "25000.00",
  "currency_id": 3,
  "rental_charge_id": 34,
  "contract_id": 31,
  "payer_user_id": 13,
  "notes": "February rent"
}
Pflichtfelder: payment_date, amount, currency_id sind immer erforderlich. Geben Sie genau eines an: expense_charge_id (Nebenkosten) oder rental_charge_id (Miete).

Beispielantwort

{
  "data": {
    "id": 1,
    "payment_type": "expense",
    "property_id": 5,
    "property_name": "Apartment Kyiv",
    "payment_date": "2026-01-15",
    "amount": "1500.00",
    "amount_formatted": "1,500.00 ₴",
    "currency": { "id": 3, "code": "UAH", "symbol": "₴" },
    "expense_type": { "id": 2, "code": "ELECTRICITY", "name_key": "expense_type.electricity" },
    "rental_charge": null,
    "service_provider": { "id": 3, "name": "Kyivenergo" },
    "recipient_user": null,
    "is_active": true,
    "owner_confirmation": "CONFIRMED",
    "has_file": true,
    "file_url": "https://llm.com/file/...",
    "file_name": "receipt.pdf"
  }
}

Antwort für Mietzahlung

{
  "data": {
    "id": 500,
    "payment_type": "rental",
    "property_id": 5,
    "payment_date": "2026-02-05",
    "amount": "25000.00",
    "currency": { "id": 3, "code": "UAH", "symbol": "₴" },
    "expense_type": null,
    "rental_charge": {
      "id": 34,
      "charge_date": "2026-03-05",
      "period_start": "2026-02-05",
      "period_end": "2026-03-04",
      "rental_days": 28,
      "amount": "25000.00"
    },
    "service_provider": null,
    "is_active": true,
    "owner_confirmation": "CONFIRMED"
  }
}

API-Hinweise

  • Feld payment_type zeigt "expense" oder "rental" an
  • expense_charge_id verknüpft Zahlung mit einem Abrechnungszeitraum
  • rental_charge_id verknüpft Zahlung mit einem Mietzeitraum
  • expense_charge_id und rental_charge_id schließen sich gegenseitig aus
  • Verwenden Sie payment_type=rental oder payment_type=expense zum Filtern nach Typ
  • Die Währungsumrechnung des Landes erfolgt automatisch auf dem Frontend
  • file_url verwendet HMAC-signierte sichere URLs mit begrenzter Lebensdauer

Swagger / OpenAPI

Vollständige API-Dokumentation mit Testmöglichkeit verfügbar unter /api/v1/doc