Zum Hauptinhalt springen
Die fünf Tabellen unten verknüpfen sich untereinander und mit drei weiteren Domänen — Property, Contracts und Stakeholder. Das vollständige Cross-Domain-Diagramm steht in der Datenmodell-Übersicht.

So hängt das Buchungsmodell zusammen

Ein Buchungsvorgang hat einen booking_headers, der alle dabei ausgelösten Positionen (booking_positions) vereint. Eine Buchung kann ein Sachkonto, ein Personenkonto, ein Kreditorkonto, ein Projektkonto oder eine Kostenstelle betreffen — siehe accounts.account_type_name. Da ein Vorgang in der Regel nur eine Buchung auf ein Kreditor-, Personen- oder Kostenstellenkonto enthält, hat booking_headers creditor_id, person_id und property_structure_account_id bereits als eigene Felder — eine Verknüpfung über accounts ist dafür nicht nötig. Jeder Buchungsvorgang gehört zu genau einem Objekt. Zu einem Konto kann es ein Budget (budgets) für einen bestimmten Monat geben. Eine Kostenstelle ist immer mit einem Teil der Objektstruktur (property_structure) verbunden. Sollstellungen (Contracts.contract_debits) referenzieren immer ein in accounts gelistetes Sachkonto, über account_number. Contracts.contract_debit_diffs nutzt denselben Feldnamen, löst aber gegen ein Personenkonto auf — siehe die Verknüpfungsschlüssel-Tabelle auf der Übersichtsseite. Reporting-Strukturen fassen Sachkonten zu Positionen zusammen (account_hierarchies). Für eine Auswertung nach Positionen statt nach Einzelkonten verknüpfst du booking_positions oder budgets über property_id + account_id mit account_hierarchies, wählst einen hierarchy_name und gruppierst nach position.
Buchungen auf einem Personenkonto sind nur auf Objektebene mit einem Mieter verknüpfbar (property_id + person_id), nicht bis auf eine bestimmte Einheit herunter. Bewohnt ein Mieter mehrere Einheiten desselben Objekts, lassen sich seine Buchungen nicht zwischen ihnen aufteilen.

accounts

GET /v1/accounting/accounts — der Kontenplan. Umfasst Sachkonten, Personenkonten, Kreditorkonten, Projektkonten, Kostenstellen und Anlagenkonten — siehe account_type_name.
string
erforderlich
Eindeutige Objekt-ID.
integer
erforderlich
Interne Konto-ID. Wird von booking_positions und budgets als account_id referenziert.
string
Kontonummer. null bei Kreditorkonten, die keine Nummer führen. Bei den meisten anderen Kontoarten belegt, auch bei der großen Mehrheit der Personenkonten.
string
Kontoname.
string
Kontoart: Sachkonto, Personenkonto, Kreditorkonto, Projektkonto, Kostenstelle oder Anlagenkonto.
string
Reporting-Kategorie des Kontos (z. B. Einnahmen, Ausgaben, Abschreibungen).
string
Ob das Konto ergebniswirksam oder bilanzneutral ist.
integer
Sortiernummer der Position innerhalb ihrer Kategorie.
string
Kontengruppe, der das Konto zugeordnet ist.
integer
Steuerschlüssel des Kontos.
integer
MwSt-Behandlungsmethode des Kontos.
object
Bilanzseiten-Klassifizierung, wie auf dem Konto hinterlegt.
string
Objekt-ID der buchenden Einheit.
integer
Erfolgsmodell-Code des Objekts.
integer
Steuermodell-Code des Objekts.

booking_headers

GET /v1/accounting/booking_headers — Hauptbuch-Buchungsköpfe. Jeder Kopf gruppiert zusammengehörige Positionen.
string
erforderlich
Eindeutige Objekt-ID.
integer
erforderlich
Eindeutige ID des Buchungskopfs. booking_positions referenziert dies als booking_header_id.
integer
Laufende Nummer der Buchung im Journal (Primanota) — dem chronologischen Buchungsprotokoll.
string
Mit der Buchung verknüpfter Kreditor. Referenziert Stakeholder.creditors.
string
Mit der Buchung verknüpfter Mieter oder Ansprechpartner.
date
Datum der Buchung.
number
Gesamtwert des Buchungskopfs.
number
Mit der Buchung verbundene Fläche in Quadratmetern, falls zutreffend.
string
Freitextbeschreibung des gesamten Buchungsvorgangs. Einzelne Positionen können einen abweichenden Text tragen — siehe booking_positions.booking_position_text.
string
Ursprünglicher Buchungstext, vor Bearbeitungen.
string
Belegnummer / Barcode.
Link zum verknüpften Dokument im DMS.
string
Kostenstellen-ID und -Name, zur Anzeige (z. B. in Power BI) bereits kombiniert. Kein Verknüpfungsschlüssel.
string
Verbindet diese Buchung mit einer Kostenstelle oder Einheit in Property.property_structure.

booking_positions

GET /v1/accounting/booking_positions — einzelne Buchungspositionen. Jede Position gehört über booking_header_id zu genau einem Buchungskopf.
integer
erforderlich
Eindeutige ID der Position.
integer
erforderlich
ID des übergeordneten Buchungskopfs. Verknüpft sich mit booking_headers.booking_header_id.
integer
erforderlich
Konto, auf das die Position gebucht wird. Verknüpft sich mit accounts.account_id.
integer
Gegenkonto für die Buchung, als Kontonummer — nicht derselbe Nummernkreis wie accounts.account_id.
string
erforderlich
Eindeutige Objekt-ID.
integer
Zusammengesetzter Schlüssel, der den Mieter identifiziert, auf den sich diese Buchung bezieht. Nicht verlässlich aus property_id und person_id rekonstruierbar — direkt lesen.
string
Mit der Buchung verknüpfter Kreditor. Referenziert Stakeholder.creditors.
string
Mit der Buchung verknüpfter Mieter oder Ansprechpartner. Gleicher Wert wie booking_headers.person_id.
string
Verbindet diese Buchung mit einer Kostenstelle oder Einheit in Property.property_structure.
object
Leistungszeitraum, den die Position abdeckt.
object
Netto-, Steuer- und Bruttobetrag der Position.
object
amount, je Quadratmeter normalisiert.
string
Kontengruppe aus dem Kontenmapping.
date
Datum der Buchung.
integer
Laufende Nummer der Buchung im Journal (Primanota) — dem chronologischen Buchungsprotokoll.
integer
Laufende Positionsnummer innerhalb der Buchung.
integer
Buchungsart-Code.
string
Name des Gegenkontos. Direkt auf dieser Tabelle geführt — nicht durch eine Verknüpfung von contra_account_id gegen accounts ableitbar.
string
Freitextbeschreibung dieser Position. Kann vom Buchungstext des Buchungskopfs (booking_headers.booking_text) abweichen.
string
Soll/Haben-Kennzeichen. Nicht verlässlich aus dem Vorzeichen von amount.net ableitbar.
number
Betrag mit Vorzeichen nach Soll/Haben-Kennzeichen. Die fachliche Bedeutung ist noch nicht geklärt — stattdessen amount verwenden.

budgets

GET /v1/accounting/budgets — Budgetbeträge, eine Zeile pro Objekt, Konto und Monat.
string
erforderlich
Eindeutige Objekt-ID.
integer
erforderlich
Konto, auf das sich das Budget bezieht. Verknüpft sich mit accounts.account_id.
string
Kontonummer.
date
erforderlich
Monat, auf den sich die Budgetzeile bezieht.
number
erforderlich
Budgetbetrag für den spezifischen Monat und das Konto.

account_hierarchies

GET /v1/accounting/account_hierarchies — wo jedes Sachkonto in einer Reporting-Struktur steht. Eine Zeile pro Objekt, Konto und Struktur.
string
erforderlich
Eindeutige Objekt-ID.
integer
erforderlich
Konto, das die Zeile zuordnet. Verknüpft sich mit accounts.account_id und über property_id + account_id mit booking_positions und budgets.
string
erforderlich
Name der Reporting-Struktur, z. B. Trassets-Standard. Ein Objekt kann mehrere Strukturen haben, dasselbe Konto steht dann einmal je Struktur in der Tabelle. Vor dem Summieren von Beträgen auf eine Struktur filtern, sonst zählt jeder Betrag einmal je Struktur.
string[]
Pfad des Kontos durch die Struktur, oberste Ebene zuerst. Leere Ebenen fehlen. Das letzte Element ist die Position, mit vorangestellter Sortiernummer, sofern die Struktur eine hat (z. B. ["B – Bestandskonten", "04 – Forderungen & Verbindlichkeiten / Finanzamt", "11 - Rückstellungen"]).
string
Position, der das Konto zugeordnet ist — die letzte Ebene von path, ohne Sortiernummer.
integer
Sortiernummer der Position. In Trassets-Standard gleich accounts.sort_order. null, wenn die Struktur keine Sortiernummern hat.
Enthalten sind nur Sachkonten. Ein Konto ohne eindeutige Zuordnung in einer Struktur fehlt in dieser Struktur. Summen je Position können deshalb kleiner sein als die Summe über alle Konten.
Ein Key kann auf bestimmte Positionen von Trassets-Standard eingeschränkt sein — siehe Konten-Einschränkungen.