Zum Inhalt springen
Developer

Bilanzierung

Buchhaltung41 EndpunkteBilling / Bilanzierung

Der Vorschlag für die Eröffnungsbilanz eines Geschäftsjahres.

GET/api/invoice/opening_balance/{identifier}

Pfad-Parameter

identifierPflichtstring

Antworten

200Vorschlag mit abgeleiteten Positionen und Übergangsgewinn

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/opening_balance/42 \
  --header 'x-iw-jwt-token: <TOKEN>'

Bucht die Eröffnungsbilanz aus den geprüften Positionen.

POST/api/invoice/opening_balance/{identifier}

Das Eigenkapital wird nicht mitgegeben - es ergibt sich als Differenz und wird serverseitig errechnet. Eine Eröffnungsbilanz geht so immer auf, und ein negatives Kapital ist eine Aussage, kein Fehler.

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • positionsarray<object>
    Felder anzeigen (4)
    • account_numberstring
    • sidestring
    • amountnumber
    • labelstring

Antworten

200Die erzeugte EröffnungsbuchungJournalEntry

Felder anzeigen (21)
  • debit_totalnumber (float)

    Summe der Sollbeträge.

  • credit_totalnumber (float)

    Summe der Habenbeträge.

  • is_balancedboolean

    Soll gleich Haben - die Grundregel der doppelten Buchführung.

  • idinteger

    Primärschlüssel des Buchungssatzes. Interne ID.

  • entry_numberstring

    Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

  • entry_datestring (date-time)

    Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

  • document_datestring (date-time)

    Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

  • document_numberstring

    Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

  • fiscal_yearFiscalYear

    Geschäftsjahr, zu dem der Eintrag gehört.

    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • periodinteger

    Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

  • statusstring

    Status des Eintrags, zum Beispiel Entwurf oder gebucht.

  • source_typestring

    Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

  • source_idinteger

    Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

  • reversal_ofJournalEntry

    Die Buchung, die durch diese hier storniert wird.

  • posted_atstring (date-time)

    Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

  • posted_byUser14

    Benutzer, der den Eintrag gebucht hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • linesarray<JournalEntryLine>

    Zeilen des Eintrags.

    Felder anzeigen (9)
    • idinteger

      Primärschlüssel der Buchungssatzzeile. Interne ID.

    • ledger_accountLedgerAccount

      Hauptbuch-Konto, auf das gebucht wird.

    • cost_centerCostCenter

      Kostenstelle der Buchung.

    • debitnumber (float)

      Sollbetrag. Aktiv- und Aufwandskonten mehren sich hier. DECIMAL und nicht DOUBLE. Ein binaerer Fliesskommawert kann 0,10 Euro nicht darstellen; bei einer einzelnen Buchung faellt das durch das Runden auf Cent nicht auf, ueber eine Summenspalte mit zehntausend Zeilen schon. Die Datenbank rechnet DECIMAL exakt, und genau ueber diese Spalten laufen die Summen der Saldenliste. Nach aussen bleibt es float: Doctrine liefert DECIMAL als Zeichenkette, die Getter wandeln um, und die Setter schreiben sie auf zwei Nachkommastellen normiert zurueck.

    • creditnumber (float)

      Habenbetrag. Passiv-, Eigenkapital- und Ertragskonten werden hier erhöht.

    • line_descriptionstring

      Buchungstext der Zeile. Fehlt er, gilt der Text des Buchungssatzes.

    • positioninteger

      Position der Zeile im Buchungssatz.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/opening_balance/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "positions": [
    {
      "account_number": "1200",
      "side": "debit",
      "amount": 1234.56,
      "label": "Bankguthaben"
    }
  ]
}
'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "debit_total": 1.5,
  "credit_total": 1.5,
  "is_balanced": true,
  "entry_number": "string",
  "entry_date": "2026-10-15T09:30:00+02:00",
  "document_date": "2026-10-15T09:30:00+02:00",
  "document_number": "string",
  "fiscal_year": {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true,
    "closed_at": "2026-10-15T09:30:00+02:00",
    "closed_by": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "deleted": true,
    "created": "2026-10-15T09:30:00+02:00"
  }
}

Bilanz eines Geschäftsjahres.

GET/api/invoice/accounting/{identifier}/balance_sheet

Pfad-Parameter

identifierPflichtstring

Query-Parameter

cost_centerstringAuf eine Sphäre eingrenzen

Antworten

200Bilanz zum Stichtag

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/balance_sheet \
  --header 'x-iw-jwt-token: <TOKEN>'

Gewinn- und Verlustrechnung eines Geschäftsjahres.

GET/api/invoice/accounting/{identifier}/profit_and_loss

Pfad-Parameter

identifierPflichtstring

Query-Parameter

cost_centerstring

Antworten

200Gewinn- und Verlustrechnung

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/profit_and_loss \
  --header 'x-iw-jwt-token: <TOKEN>'

Summen- und Saldenliste eines Geschäftsjahres.

GET/api/invoice/accounting/{identifier}/trial_balance

Pfad-Parameter

identifierPflichtstring

Antworten

200Summen- und Saldenliste

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/trial_balance \
  --header 'x-iw-jwt-token: <TOKEN>'

Ergebnis je steuerlicher Sphäre.

GET/api/invoice/accounting/{identifier}/spheres

Für den gemeinnützigen Verein die entscheidende Auswertung: nur der wirtschaftliche Geschäftsbetrieb ist steuerpflichtig.

Pfad-Parameter

identifierPflichtstring

Antworten

200Ergebnis je Sphäre

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/spheres \
  --header 'x-iw-jwt-token: <TOKEN>'

Bilanz in der Gliederung des § 266 HGB, mit Vorjahreswerten.

GET/api/invoice/accounting/{identifier}/hgb_balance_sheet

Die gewöhnliche Bilanz ist eine Kontenliste - richtig gerechnet, aber nicht in der Form, die das Gesetz vorgibt. Hier stehen die Posten des § 266 HGB, je mit dem Vorjahresbetrag (§ 265 Abs. 2 HGB) und den Konten, aus denen sie entstanden sind.

Pfad-Parameter

identifierPflichtstring

Query-Parameter

cost_centerstringAuf eine Sphäre eingrenzen

Antworten

200Bilanz nach § 266 HGB

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/hgb_balance_sheet \
  --header 'x-iw-jwt-token: <TOKEN>'

Gewinn- und Verlustrechnung in der Staffelform des § 275 Abs. 2 HGB.

GET/api/invoice/accounting/{identifier}/hgb_profit_and_loss

Pfad-Parameter

identifierPflichtstring

Query-Parameter

cost_centerstring

Antworten

200GuV nach § 275 Abs. 2 HGB

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/hgb_profit_and_loss \
  --header 'x-iw-jwt-token: <TOKEN>'

Offene Posten - Debitoren und Kreditoren mit Fälligkeitsstaffel.

GET/api/invoice/accounting/open_items

Was noch nicht bezahlt ist, und seit wann. Die Staffel legt fest, welche Handlung ein Posten erfordert: zehn Tage überfällig wird gemahnt, neunzig Tage überfällig wird wertberichtigt.

Query-Parameter

as_ofstringStichtag, Vorgabe heute

Antworten

200Offene Posten beider Seiten

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/open_items \
  --header 'x-iw-jwt-token: <TOKEN>'

Datentraegerueberlassung nach § 147 Abs. 6 AO.

GET/api/invoice/accounting/{identifier}/gobd_export

Der Export, nach dem eine Betriebsprüfung fragt: die steuerrelevanten Daten in maschinell auswertbarer Form, samt der index.xml des GoBD-Beschreibungsstandards. Ohne sie wäre ein CSV-Ordner kein Export, sondern ein Haufen Dateien.

Ausgegeben werden nur festgeschriebene Buchungen - Entwürfe sind keine Buchführung.

Pfad-Parameter

identifierPflichtstring

Antworten

200ZIP mit index.xml und den Datendateien

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/gobd_export \
  --header 'x-iw-jwt-token: <TOKEN>'

Zeitabhängige steuerliche Wertgrenzen eines Jahres.

GET/api/invoice/accounting/tax_thresholds

Freigrenze des wirtschaftlichen Geschaeftsbetriebs, Zweckbetriebsgrenze, Uebungsleiterfreibetrag und Ehrenamtspauschale - je mit Fundstelle, Anwendungsjahr und Verlauf.

Query-Parameter

yearstringJahr, Vorgabe das laufende

Antworten

200Die Wertgrenzen des Jahres

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/tax_thresholds \
  --header 'x-iw-jwt-token: <TOKEN>'

Katalog der bilanziellen Abschlussarbeiten.

GET/api/invoice/accounting/year_end_adjustments

Welche Umbuchungen zum Jahresabschluss gehören, auf welche Konten sie laufen und woher sie kommen. Der Dienst rechnet nichts aus – wie hoch eine Rückstellung ist, entscheidet ein Mensch –, aber er kennt die Konten und die richtige Seite.

Antworten

200Die Abschlussbuchungen des eingestellten Kontenrahmens

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/year_end_adjustments \
  --header 'x-iw-jwt-token: <TOKEN>'

Checkliste der Abschlussarbeiten eines Geschaeftsjahres.

GET/api/invoice/accounting/{identifier}/year_end_checklist

Keine Blocker: eine Rueckstellung laesst sich nicht erzwingen, und ein Betrieb ohne Warenlager braucht keine Inventur. Die Liste sagt, woran zu denken ist, und ob im Jahr schon etwas davon gebucht wurde.

Pfad-Parameter

identifierPflichtstring

Antworten

200Checkliste mit dem Stand des Jahres

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/year_end_checklist \
  --header 'x-iw-jwt-token: <TOKEN>'

Bucht eine Abschlussbuchung.

POST/api/invoice/accounting/{identifier}/year_end_adjustment

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • typestringPflicht
  • amountstringPflicht
  • descriptionstringPflicht
  • counter_accountstring
  • entry_datestring
  • tax_ratestring
  • cost_centerstring
  • document_numberstring

Antworten

201Der gebuchte Satz

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/year_end_adjustment \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "type": "string",
  "amount": "string",
  "description": "Text",
  "counter_account": "string",
  "entry_date": "2026-10-15T09:30:00+02:00",
  "tax_rate": "string"
}
'

Eine Auswertung als CSV.

GET/api/invoice/accounting/{identifier}/report.csv

Die Auswertungen selbst bleiben JSON - die Oberfläche liest sie. Wer damit weiterrechnen will, holt sie hier: deutsches Format mit Semikolon und Komma, damit Excel die Zahlen als Zahlen liest und nicht als Text.

Pfad-Parameter

identifierPflichtstring

Query-Parameter

reportstringWelche Auswertung
cost_centerstring
as_ofstringStichtag der offenen Posten

Antworten

200Die Auswertung als CSV

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/report.csv \
  --header 'x-iw-jwt-token: <TOKEN>'

Was der Buchungsstapel enthalten würde – ohne ihn zu erzeugen.

GET/api/invoice/accounting/{identifier}/datev_export/preview

Die Kanzlei bekommt den Stapel einmal; wenn darin etwas fehlt, fällt es dort auf und nicht hier. Deshalb zuerst die Vorschau: wie viele Sätze es werden, und welche Buchungen sich nicht als Buchungssatz abbilden lassen, samt Grund. Was hier steht, muss die Kanzlei von Hand erfassen - besser sie weiß es vorher.

Pfad-Parameter

identifierPflichtstring

Query-Parameter

fromstringBeginn des Zeitraums, Standard ist der Jahresbeginn
tostringEnde des Zeitraums, Vorgabe das Jahresende

Antworten

200Anzahl der Sätze und der übersprungenen Buchungen

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/datev_export/preview \
  --header 'x-iw-jwt-token: <TOKEN>'

Der Buchungsstapel im DATEV-Format.

GET/api/invoice/accounting/{identifier}/datev_export

Die Datei, die eine Kanzlei in DATEV Kanzlei-Rechnungswesen einliest. Ausgegeben werden ausschließlich festgeschriebene Buchungen - ein Entwurf ist keine Buchführung, und ein Stapel mit Entwürfen darin würde in der Kanzlei zu Buchungen, die es bei uns nie gab.

Pfad-Parameter

identifierPflichtstring

Query-Parameter

fromstringBeginn des Zeitraums, Standard ist der Jahresbeginn
tostringEnde des Zeitraums, Vorgabe das Jahresende

Antworten

200Der Buchungsstapel als CSV im DATEV-Format

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/42/datev_export \
  --header 'x-iw-jwt-token: <TOKEN>'

Kontenblatt: alle Buchungszeilen eines Kontos mit laufendem Saldo.

GET/api/invoice/accounting/ledger/{identifier}

Ohne chart_of_accounts wird der Bezeichner als Id gelesen. Das ist hier die einzige eindeutige Angabe: Kontonummern sind selbst Zahlen, und "1200" wäre sonst nicht zu unterscheiden von der Id 1200 - bei über tausend Konten je Rahmen fast immer ein anderes Konto, ohne dass es auffiele. Wer in Kontonummern denkt, gibt den Rahmen dazu an; innerhalb eines Rahmens ist die Nummer eindeutig.

Pfad-Parameter

identifierPflichtstring

Query-Parameter

fiscal_yearstringGeschäftsjahr
chart_of_accountsstringDen Bezeichner als Kontonummer dieses Rahmens lesen

Antworten

200Kontenblatt

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/accounting/ledger/42 \
  --header 'x-iw-jwt-token: <TOKEN>'

Sachkonten.

GET/api/invoice/ledger_account

Mit "search" wird über Nummer und Bezeichnung gesucht statt gefiltert. Ein voller Kontenrahmen hat über tausend Konten; eine Auswahlliste zum Durchblättern wäre unbrauchbar, und die übrigen Filter treffen nur exakt. Die Trefferzahl ist begrenzt - wer sucht, will die ersten passenden sehen, nicht alle.

Query-Parameter

idstring
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE | Standardwert: false
numberstringKontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können. | Benötigt Zugriffs-Tag: SCOPE
namestring
chartOfAccountsstring
accountTypestring
defaultTaxstringSteuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.
taxAccountstringGegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen. | Benötigt Zugriffsrecht: SCOPE
expenseCategorystringBrücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.
costCenterRequiredbooleanOb auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.
isSystembooleanVom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden. | Erforderliches Zugriffsrecht: SCOPE
isActivebooleanKonten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden. | Benötigt Zugriffs-Tag: SCOPE
createdstring
updatedstring
searchStringstringText, nach dem in der Liste gesucht wird
orderFieldNamestringName des Bestellfelds
orderFieldSortstringSortiermodusErlaubt: DESCASC
pageintegerSeite der Liste
pageSizeintegerAnzahl der Einträge je Seite
withMaxPageNumberstringgibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist

Antworten

200Sachkontenarray<LedgerAccount>

Felder anzeigen (15)
  • display_namestring
  • idinteger

    Primärschlüssel des Hauptbuchkontos. Interne ID.

  • numberstring

    Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

  • chart_of_accountsstring

    Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

  • account_typestring

    Art des Kontos, zum Beispiel Aktiv oder Erlös.

  • default_taxTax

    Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    Felder anzeigen (6)
    • idinteger

      Primärschlüssel des Steuersatzes. Interne ID.

    • namestringPflicht

      Name des Steuersatzes, zum Beispiel 19 Prozent.

    • valuenumber (float)

      Steuersatz in Prozent.

    • deletedboolean

      Der Steuersatz wird gelöscht.

    • global_defaultboolean

      Standard-Steuersatz für neue Artikel.

    • datev_tax_keyinteger

      DATEV Steuerschlüssel für Umsatzsteuer (Ausgangsrechnungen). Wird von BuchhaltungsButler und DATEV-Export genutzt. Standardwerte: 0 = Kein Steuerausweis (0%) 2 = Umsatzsteuer 7% (ermäßigt) 3 = Umsatzsteuer 19% (Regelsteuersatz) Für Vorsteuer (Eingangsrechnungen) gibt es eine spiegelbildliche Zuordnung: 0 = Keine Vorsteuer (0%) 5 = Vorsteuer 7% 8 = Vorsteuer 19%

  • tax_accountLedgerAccount

    Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

  • expense_categoryExpenseCategory10

    Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    Felder anzeigen (19)
    • idinteger

      Primärschlüssel der Ausgabenkategorie. Interne ID.

    • codestring

      Kurzbezeichnung/Code (z.B. "WAREN", "PERSONAL", "MIETE")

    • eur_line_numberinteger

      Zeile in der Anlage EÜR (z. B. 23 für Wareneinkauf)

    • eur_line_namestring

      Bezeichnung der EÜR-Zeile (z. B. „Waren, Rohstoffe und Hilfsstoffe“)

    • category_typestring

      Typ der Kategorie (expense, income, neutral, asset, private)

    • default_taxTax

      Standard-Steuersatz für diese Kategorie

    • cost_centerCostCenter

      Kostenstelle der Kategorie - bei Vereinen die steuerliche Sphäre. Ein Beleg trägt keine eigene Sphäre; über seine Kategorie bekommt er eine. Die EÜR des wirtschaftlichen Geschäftsbetriebs liest sie (billing_euer_commercial_sphere_only), die automatische Buchung setzt sie auf die Buchungszeilen (billing_accounting_cost_center_from_category).

    • is_vat_deductibleboolean

      Ist Vorsteuerabzug möglich?

    • is_immediate_deductionboolean

      Ist die Kategorie sofort abzugsfähig? (vs. Abschreibung über mehrere Jahre)

    • depreciation_yearsinteger

      Abschreibungsdauer in Jahren (für Anlagevermögen)

    • sort_orderinteger

      Sortierreihenfolge

    • is_activeboolean

      Ist die Kategorie aktiv/sichtbar?

    • colorstring

      Farbe für UI-Darstellung (Hex-Code)

    • iconstring

      Icon-Name für UI-Darstellung

    • is_systemboolean

      Ist dies eine System-Kategorie? (nicht löschbar)

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • cost_center_requiredboolean

    Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

  • is_systemboolean

    Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

  • is_activeboolean

    Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/ledger_account \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
[
  {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "chart_of_accounts": "string",
    "account_type": "string",
    "default_tax": {
      "name": "Beispiel",
      "id": 42,
      "value": 1.5,
      "deleted": true,
      "global_default": true,
      "datev_tax_key": 1
    },
    "expense_category": {
      "id": 42,
      "eur_line_name": "Beispiel",
      "color": "#3f5efb",
      "name": "Beispiel",
      "code": "string",
      "eur_line_number": 1,
      "category_type": "string",
      "is_vat_deductible": true,
      "is_immediate_deduction": true,
      "depreciation_years": 1
    },
    "cost_center_required": true,
    "is_system": true
  }
]

Legt einen neuen Sachkonto-Eintrag an.

POST/api/invoice/ledger_account

Request-Body application/json

  • dataLedgerAccount
    Felder anzeigen (15)
    • display_namestring
    • idinteger

      Primärschlüssel des Hauptbuchkontos. Interne ID.

    • numberstring

      Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

    • chart_of_accountsstring

      Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

    • account_typestring

      Art des Kontos, zum Beispiel Aktiv oder Erlös.

    • default_taxTax

      Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    • tax_accountLedgerAccount

      Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

    • expense_categoryExpenseCategory10

      Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    • cost_center_requiredboolean

      Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

    • is_systemboolean

      Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

    • is_activeboolean

      Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Sachkonto anlegenLedgerAccount

Felder anzeigen (15)
  • display_namestring
  • idinteger

    Primärschlüssel des Hauptbuchkontos. Interne ID.

  • numberstring

    Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

  • chart_of_accountsstring

    Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

  • account_typestring

    Art des Kontos, zum Beispiel Aktiv oder Erlös.

  • default_taxTax

    Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    Felder anzeigen (6)
    • idinteger

      Primärschlüssel des Steuersatzes. Interne ID.

    • namestringPflicht

      Name des Steuersatzes, zum Beispiel 19 Prozent.

    • valuenumber (float)

      Steuersatz in Prozent.

    • deletedboolean

      Der Steuersatz wird gelöscht.

    • global_defaultboolean

      Standard-Steuersatz für neue Artikel.

    • datev_tax_keyinteger

      DATEV Steuerschlüssel für Umsatzsteuer (Ausgangsrechnungen). Wird von BuchhaltungsButler und DATEV-Export genutzt. Standardwerte: 0 = Kein Steuerausweis (0%) 2 = Umsatzsteuer 7% (ermäßigt) 3 = Umsatzsteuer 19% (Regelsteuersatz) Für Vorsteuer (Eingangsrechnungen) gibt es eine spiegelbildliche Zuordnung: 0 = Keine Vorsteuer (0%) 5 = Vorsteuer 7% 8 = Vorsteuer 19%

  • tax_accountLedgerAccount

    Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

  • expense_categoryExpenseCategory10

    Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    Felder anzeigen (19)
    • idinteger

      Primärschlüssel der Ausgabenkategorie. Interne ID.

    • codestring

      Kurzbezeichnung/Code (z.B. "WAREN", "PERSONAL", "MIETE")

    • eur_line_numberinteger

      Zeile in der Anlage EÜR (z. B. 23 für Wareneinkauf)

    • eur_line_namestring

      Bezeichnung der EÜR-Zeile (z. B. „Waren, Rohstoffe und Hilfsstoffe“)

    • category_typestring

      Typ der Kategorie (expense, income, neutral, asset, private)

    • default_taxTax

      Standard-Steuersatz für diese Kategorie

    • cost_centerCostCenter

      Kostenstelle der Kategorie - bei Vereinen die steuerliche Sphäre. Ein Beleg trägt keine eigene Sphäre; über seine Kategorie bekommt er eine. Die EÜR des wirtschaftlichen Geschäftsbetriebs liest sie (billing_euer_commercial_sphere_only), die automatische Buchung setzt sie auf die Buchungszeilen (billing_accounting_cost_center_from_category).

    • is_vat_deductibleboolean

      Ist Vorsteuerabzug möglich?

    • is_immediate_deductionboolean

      Ist die Kategorie sofort abzugsfähig? (vs. Abschreibung über mehrere Jahre)

    • depreciation_yearsinteger

      Abschreibungsdauer in Jahren (für Anlagevermögen)

    • sort_orderinteger

      Sortierreihenfolge

    • is_activeboolean

      Ist die Kategorie aktiv/sichtbar?

    • colorstring

      Farbe für UI-Darstellung (Hex-Code)

    • iconstring

      Icon-Name für UI-Darstellung

    • is_systemboolean

      Ist dies eine System-Kategorie? (nicht löschbar)

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • cost_center_requiredboolean

    Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

  • is_systemboolean

    Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

  • is_activeboolean

    Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/ledger_account \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "chart_of_accounts": "string",
    "account_type": "string"
  }
}
'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "chart_of_accounts": "string",
  "account_type": "string",
  "default_tax": {
    "name": "Beispiel",
    "id": 42,
    "value": 1.5,
    "deleted": true,
    "global_default": true,
    "datev_tax_key": 1
  },
  "expense_category": {
    "id": 42,
    "eur_line_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "code": "string",
    "eur_line_number": 1,
    "category_type": "string",
    "default_tax": {
      "name": "Beispiel",
      "id": 42,
      "value": 1.5,
      "deleted": true,
      "global_default": true,
      "datev_tax_key": 1
    },
    "cost_center": {
      "display_name": "Beispiel",
      "id": 42,
      "name": "Beispiel",
      "number": "string",
      "sphere": "string",
      "is_system": true,
      "is_active": true,
      "deleted": true,
      "created": "2026-10-15T09:30:00+02:00",
      "updated": "2026-10-15T09:30:00+02:00"
    },
    "is_vat_deductible": true
  },
  "cost_center_required": true,
  "is_system": true
}

Liefert einen einzelnen Eintrag zum Hauptbuchkonto.

GET/api/invoice/ledger_account/{identifier}

Pfad-Parameter

identifierPflichtstring

Antworten

200SachkontoLedgerAccount

Felder anzeigen (15)
  • display_namestring
  • idinteger

    Primärschlüssel des Hauptbuchkontos. Interne ID.

  • numberstring

    Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

  • chart_of_accountsstring

    Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

  • account_typestring

    Art des Kontos, zum Beispiel Aktiv oder Erlös.

  • default_taxTax

    Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    Felder anzeigen (6)
    • idinteger

      Primärschlüssel des Steuersatzes. Interne ID.

    • namestringPflicht

      Name des Steuersatzes, zum Beispiel 19 Prozent.

    • valuenumber (float)

      Steuersatz in Prozent.

    • deletedboolean

      Der Steuersatz wird gelöscht.

    • global_defaultboolean

      Standard-Steuersatz für neue Artikel.

    • datev_tax_keyinteger

      DATEV Steuerschlüssel für Umsatzsteuer (Ausgangsrechnungen). Wird von BuchhaltungsButler und DATEV-Export genutzt. Standardwerte: 0 = Kein Steuerausweis (0%) 2 = Umsatzsteuer 7% (ermäßigt) 3 = Umsatzsteuer 19% (Regelsteuersatz) Für Vorsteuer (Eingangsrechnungen) gibt es eine spiegelbildliche Zuordnung: 0 = Keine Vorsteuer (0%) 5 = Vorsteuer 7% 8 = Vorsteuer 19%

  • tax_accountLedgerAccount

    Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

  • expense_categoryExpenseCategory10

    Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    Felder anzeigen (19)
    • idinteger

      Primärschlüssel der Ausgabenkategorie. Interne ID.

    • codestring

      Kurzbezeichnung/Code (z.B. "WAREN", "PERSONAL", "MIETE")

    • eur_line_numberinteger

      Zeile in der Anlage EÜR (z. B. 23 für Wareneinkauf)

    • eur_line_namestring

      Bezeichnung der EÜR-Zeile (z. B. „Waren, Rohstoffe und Hilfsstoffe“)

    • category_typestring

      Typ der Kategorie (expense, income, neutral, asset, private)

    • default_taxTax

      Standard-Steuersatz für diese Kategorie

    • cost_centerCostCenter

      Kostenstelle der Kategorie - bei Vereinen die steuerliche Sphäre. Ein Beleg trägt keine eigene Sphäre; über seine Kategorie bekommt er eine. Die EÜR des wirtschaftlichen Geschäftsbetriebs liest sie (billing_euer_commercial_sphere_only), die automatische Buchung setzt sie auf die Buchungszeilen (billing_accounting_cost_center_from_category).

    • is_vat_deductibleboolean

      Ist Vorsteuerabzug möglich?

    • is_immediate_deductionboolean

      Ist die Kategorie sofort abzugsfähig? (vs. Abschreibung über mehrere Jahre)

    • depreciation_yearsinteger

      Abschreibungsdauer in Jahren (für Anlagevermögen)

    • sort_orderinteger

      Sortierreihenfolge

    • is_activeboolean

      Ist die Kategorie aktiv/sichtbar?

    • colorstring

      Farbe für UI-Darstellung (Hex-Code)

    • iconstring

      Icon-Name für UI-Darstellung

    • is_systemboolean

      Ist dies eine System-Kategorie? (nicht löschbar)

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • cost_center_requiredboolean

    Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

  • is_systemboolean

    Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

  • is_activeboolean

    Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/ledger_account/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "chart_of_accounts": "string",
  "account_type": "string",
  "default_tax": {
    "name": "Beispiel",
    "id": 42,
    "value": 1.5,
    "deleted": true,
    "global_default": true,
    "datev_tax_key": 1
  },
  "expense_category": {
    "id": 42,
    "eur_line_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "code": "string",
    "eur_line_number": 1,
    "category_type": "string",
    "default_tax": {
      "name": "Beispiel",
      "id": 42,
      "value": 1.5,
      "deleted": true,
      "global_default": true,
      "datev_tax_key": 1
    },
    "cost_center": {
      "display_name": "Beispiel",
      "id": 42,
      "name": "Beispiel",
      "number": "string",
      "sphere": "string",
      "is_system": true,
      "is_active": true,
      "deleted": true,
      "created": "2026-10-15T09:30:00+02:00",
      "updated": "2026-10-15T09:30:00+02:00"
    },
    "is_vat_deductible": true
  },
  "cost_center_required": true,
  "is_system": true
}

Aktualisiert einen vorhandenen Sachkonto-Eintrag.

PUT/api/invoice/ledger_account/{identifier}

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • dataLedgerAccount
    Felder anzeigen (15)
    • display_namestring
    • idinteger

      Primärschlüssel des Hauptbuchkontos. Interne ID.

    • numberstring

      Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

    • chart_of_accountsstring

      Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

    • account_typestring

      Art des Kontos, zum Beispiel Aktiv oder Erlös.

    • default_taxTax

      Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    • tax_accountLedgerAccount

      Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

    • expense_categoryExpenseCategory10

      Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    • cost_center_requiredboolean

      Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

    • is_systemboolean

      Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

    • is_activeboolean

      Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Sachkonto ändernLedgerAccount

Felder anzeigen (15)
  • display_namestring
  • idinteger

    Primärschlüssel des Hauptbuchkontos. Interne ID.

  • numberstring

    Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

  • chart_of_accountsstring

    Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

  • account_typestring

    Art des Kontos, zum Beispiel Aktiv oder Erlös.

  • default_taxTax

    Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    Felder anzeigen (6)
    • idinteger

      Primärschlüssel des Steuersatzes. Interne ID.

    • namestringPflicht

      Name des Steuersatzes, zum Beispiel 19 Prozent.

    • valuenumber (float)

      Steuersatz in Prozent.

    • deletedboolean

      Der Steuersatz wird gelöscht.

    • global_defaultboolean

      Standard-Steuersatz für neue Artikel.

    • datev_tax_keyinteger

      DATEV Steuerschlüssel für Umsatzsteuer (Ausgangsrechnungen). Wird von BuchhaltungsButler und DATEV-Export genutzt. Standardwerte: 0 = Kein Steuerausweis (0%) 2 = Umsatzsteuer 7% (ermäßigt) 3 = Umsatzsteuer 19% (Regelsteuersatz) Für Vorsteuer (Eingangsrechnungen) gibt es eine spiegelbildliche Zuordnung: 0 = Keine Vorsteuer (0%) 5 = Vorsteuer 7% 8 = Vorsteuer 19%

  • tax_accountLedgerAccount

    Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

  • expense_categoryExpenseCategory10

    Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    Felder anzeigen (19)
    • idinteger

      Primärschlüssel der Ausgabenkategorie. Interne ID.

    • codestring

      Kurzbezeichnung/Code (z.B. "WAREN", "PERSONAL", "MIETE")

    • eur_line_numberinteger

      Zeile in der Anlage EÜR (z. B. 23 für Wareneinkauf)

    • eur_line_namestring

      Bezeichnung der EÜR-Zeile (z. B. „Waren, Rohstoffe und Hilfsstoffe“)

    • category_typestring

      Typ der Kategorie (expense, income, neutral, asset, private)

    • default_taxTax

      Standard-Steuersatz für diese Kategorie

    • cost_centerCostCenter

      Kostenstelle der Kategorie - bei Vereinen die steuerliche Sphäre. Ein Beleg trägt keine eigene Sphäre; über seine Kategorie bekommt er eine. Die EÜR des wirtschaftlichen Geschäftsbetriebs liest sie (billing_euer_commercial_sphere_only), die automatische Buchung setzt sie auf die Buchungszeilen (billing_accounting_cost_center_from_category).

    • is_vat_deductibleboolean

      Ist Vorsteuerabzug möglich?

    • is_immediate_deductionboolean

      Ist die Kategorie sofort abzugsfähig? (vs. Abschreibung über mehrere Jahre)

    • depreciation_yearsinteger

      Abschreibungsdauer in Jahren (für Anlagevermögen)

    • sort_orderinteger

      Sortierreihenfolge

    • is_activeboolean

      Ist die Kategorie aktiv/sichtbar?

    • colorstring

      Farbe für UI-Darstellung (Hex-Code)

    • iconstring

      Icon-Name für UI-Darstellung

    • is_systemboolean

      Ist dies eine System-Kategorie? (nicht löschbar)

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • cost_center_requiredboolean

    Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

  • is_systemboolean

    Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

  • is_activeboolean

    Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request PUT \
  --url https://eure-instanz.iw-erp.de/api/invoice/ledger_account/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "chart_of_accounts": "string",
    "account_type": "string"
  }
}
'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "chart_of_accounts": "string",
  "account_type": "string",
  "default_tax": {
    "name": "Beispiel",
    "id": 42,
    "value": 1.5,
    "deleted": true,
    "global_default": true,
    "datev_tax_key": 1
  },
  "expense_category": {
    "id": 42,
    "eur_line_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "code": "string",
    "eur_line_number": 1,
    "category_type": "string",
    "default_tax": {
      "name": "Beispiel",
      "id": 42,
      "value": 1.5,
      "deleted": true,
      "global_default": true,
      "datev_tax_key": 1
    },
    "cost_center": {
      "display_name": "Beispiel",
      "id": 42,
      "name": "Beispiel",
      "number": "string",
      "sphere": "string",
      "is_system": true,
      "is_active": true,
      "deleted": true,
      "created": "2026-10-15T09:30:00+02:00",
      "updated": "2026-10-15T09:30:00+02:00"
    },
    "is_vat_deductible": true
  },
  "cost_center_required": true,
  "is_system": true
}

Aktualisiert einen vorhandenen Sachkonto-Eintrag.

PATCH/api/invoice/ledger_account/{identifier}

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • dataLedgerAccount
    Felder anzeigen (15)
    • display_namestring
    • idinteger

      Primärschlüssel des Hauptbuchkontos. Interne ID.

    • numberstring

      Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

    • chart_of_accountsstring

      Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

    • account_typestring

      Art des Kontos, zum Beispiel Aktiv oder Erlös.

    • default_taxTax

      Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    • tax_accountLedgerAccount

      Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

    • expense_categoryExpenseCategory10

      Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    • cost_center_requiredboolean

      Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

    • is_systemboolean

      Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

    • is_activeboolean

      Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Sachkonto ändernLedgerAccount

Felder anzeigen (15)
  • display_namestring
  • idinteger

    Primärschlüssel des Hauptbuchkontos. Interne ID.

  • numberstring

    Kontonummer im Kontenrahmen, z.B. "1200" (SKR03 Bank) oder "40000" (SKR42). Als String geführt, weil SKR42 fünfstellig ist und führende Nullen bedeutungstragend sein können.

  • chart_of_accountsstring

    Kontenrahmen, zu dem das Konto gehört, zum Beispiel SKR03.

  • account_typestring

    Art des Kontos, zum Beispiel Aktiv oder Erlös.

  • default_taxTax

    Steuersatz, der beim Buchen auf dieses Konto vorgeschlagen wird. Bei Erlös- und Aufwandskonten ist der Satz durch die Kontonummer vorgegeben (etwa „Erlöse 19% USt“), deshalb hängt er am Konto und nicht an der einzelnen Buchung.

    Felder anzeigen (6)
    • idinteger

      Primärschlüssel des Steuersatzes. Interne ID.

    • namestringPflicht

      Name des Steuersatzes, zum Beispiel 19 Prozent.

    • valuenumber (float)

      Steuersatz in Prozent.

    • deletedboolean

      Der Steuersatz wird gelöscht.

    • global_defaultboolean

      Standard-Steuersatz für neue Artikel.

    • datev_tax_keyinteger

      DATEV Steuerschlüssel für Umsatzsteuer (Ausgangsrechnungen). Wird von BuchhaltungsButler und DATEV-Export genutzt. Standardwerte: 0 = Kein Steuerausweis (0%) 2 = Umsatzsteuer 7% (ermäßigt) 3 = Umsatzsteuer 19% (Regelsteuersatz) Für Vorsteuer (Eingangsrechnungen) gibt es eine spiegelbildliche Zuordnung: 0 = Keine Vorsteuer (0%) 5 = Vorsteuer 7% 8 = Vorsteuer 19%

  • tax_accountLedgerAccount

    Gegenkonto für die Steuer, die beim Buchen auf dieses Konto entsteht. Bei Erlöskonten das Umsatzsteuerkonto, bei Aufwandskonten das Vorsteuerkonto. Damit lässt sich aus einem Bruttobetrag automatisch der dreizeilige Buchungssatz erzeugen.

  • expense_categoryExpenseCategory10

    Brücke zur EÜR: auf welcher Zeile der Anlage EÜR dieses Konto zählt. Erlaubt es, beide Gewinnermittlungsarten aus denselben Belegen zu bedienen - etwa im Wechseljahr oder wenn ein Verein den wirtschaftlichen Geschäftsbetrieb per EÜR und den Rest bilanziell führt.

    Felder anzeigen (19)
    • idinteger

      Primärschlüssel der Ausgabenkategorie. Interne ID.

    • codestring

      Kurzbezeichnung/Code (z.B. "WAREN", "PERSONAL", "MIETE")

    • eur_line_numberinteger

      Zeile in der Anlage EÜR (z. B. 23 für Wareneinkauf)

    • eur_line_namestring

      Bezeichnung der EÜR-Zeile (z. B. „Waren, Rohstoffe und Hilfsstoffe“)

    • category_typestring

      Typ der Kategorie (expense, income, neutral, asset, private)

    • default_taxTax

      Standard-Steuersatz für diese Kategorie

    • cost_centerCostCenter

      Kostenstelle der Kategorie - bei Vereinen die steuerliche Sphäre. Ein Beleg trägt keine eigene Sphäre; über seine Kategorie bekommt er eine. Die EÜR des wirtschaftlichen Geschäftsbetriebs liest sie (billing_euer_commercial_sphere_only), die automatische Buchung setzt sie auf die Buchungszeilen (billing_accounting_cost_center_from_category).

    • is_vat_deductibleboolean

      Ist Vorsteuerabzug möglich?

    • is_immediate_deductionboolean

      Ist die Kategorie sofort abzugsfähig? (vs. Abschreibung über mehrere Jahre)

    • depreciation_yearsinteger

      Abschreibungsdauer in Jahren (für Anlagevermögen)

    • sort_orderinteger

      Sortierreihenfolge

    • is_activeboolean

      Ist die Kategorie aktiv/sichtbar?

    • colorstring

      Farbe für UI-Darstellung (Hex-Code)

    • iconstring

      Icon-Name für UI-Darstellung

    • is_systemboolean

      Ist dies eine System-Kategorie? (nicht löschbar)

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • cost_center_requiredboolean

    Ob auf diesem Konto eine Kostenstelle angegeben werden muss. Der SKR42 bildet die vier steuerlichen Sphären eines gemeinnützigen Vereins über Kostenstellen ab, nicht über getrennte Konten. Für die Erfolgskonten ist die Angabe dort deshalb Pflicht.

  • is_systemboolean

    Vom Kontenrahmen-Initialisierer angelegt. Nummer und Art sind dann durch den Rahmen vorgegeben und sollten nicht geändert werden.

  • is_activeboolean

    Konten lassen sich stilllegen, statt sie zu löschen - bebuchte Konten dürfen nicht verschwinden.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request PATCH \
  --url https://eure-instanz.iw-erp.de/api/invoice/ledger_account/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "chart_of_accounts": "string",
    "account_type": "string"
  }
}
'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "chart_of_accounts": "string",
  "account_type": "string",
  "default_tax": {
    "name": "Beispiel",
    "id": 42,
    "value": 1.5,
    "deleted": true,
    "global_default": true,
    "datev_tax_key": 1
  },
  "expense_category": {
    "id": 42,
    "eur_line_name": "Beispiel",
    "color": "#3f5efb",
    "name": "Beispiel",
    "code": "string",
    "eur_line_number": 1,
    "category_type": "string",
    "default_tax": {
      "name": "Beispiel",
      "id": 42,
      "value": 1.5,
      "deleted": true,
      "global_default": true,
      "datev_tax_key": 1
    },
    "cost_center": {
      "display_name": "Beispiel",
      "id": 42,
      "name": "Beispiel",
      "number": "string",
      "sphere": "string",
      "is_system": true,
      "is_active": true,
      "deleted": true,
      "created": "2026-10-15T09:30:00+02:00",
      "updated": "2026-10-15T09:30:00+02:00"
    },
    "is_vat_deductible": true
  },
  "cost_center_required": true,
  "is_system": true
}

Liefert eine Liste der Kostenstellen-Einträge.

GET/api/invoice/cost_center

Query-Parameter

idstring
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE | Standardwert: false
numberstring
namestring
spherestringSteuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.
isSystemboolean
isActiveboolean
createdstring
updatedstring
searchStringstringText, nach dem in der Liste gesucht wird
orderFieldNamestringName des Bestellfelds
orderFieldSortstringSortiermodusErlaubt: DESCASC
pageintegerSeite der Liste
pageSizeintegerAnzahl der Einträge je Seite
withMaxPageNumberstringgibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist

Antworten

200Kostenstellenarray<CostCenter>

Felder anzeigen (10)
  • display_namestring
  • idinteger

    Primärschlüssel der Kostenstelle. Interne ID.

  • numberstring

    Nummer der Kostenstelle.

  • spherestring

    Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

  • is_systemboolean

    Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

  • is_activeboolean

    Die Kostenstelle ist aktiv.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/cost_center \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
[
  {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "sphere": "string",
    "is_system": true,
    "is_active": true,
    "deleted": true,
    "created": "2026-10-15T09:30:00+02:00",
    "updated": "2026-10-15T09:30:00+02:00"
  }
]

Legt einen neuen Kostenstellen-Eintrag an.

POST/api/invoice/cost_center

Request-Body application/json

  • dataCostCenter
    Felder anzeigen (10)
    • display_namestring
    • idinteger

      Primärschlüssel der Kostenstelle. Interne ID.

    • numberstring

      Nummer der Kostenstelle.

    • spherestring

      Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

    • is_systemboolean

      Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

    • is_activeboolean

      Die Kostenstelle ist aktiv.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Kostenstelle anlegenCostCenter

Felder anzeigen (10)
  • display_namestring
  • idinteger

    Primärschlüssel der Kostenstelle. Interne ID.

  • numberstring

    Nummer der Kostenstelle.

  • spherestring

    Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

  • is_systemboolean

    Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

  • is_activeboolean

    Die Kostenstelle ist aktiv.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/cost_center \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "sphere": "string",
    "is_system": true
  }
}
'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "sphere": "string",
  "is_system": true,
  "is_active": true,
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

Liefert einen einzelnen Kostenstellen-Eintrag.

GET/api/invoice/cost_center/{identifier}

Pfad-Parameter

identifierPflichtstring

Antworten

200KostenstelleCostCenter

Felder anzeigen (10)
  • display_namestring
  • idinteger

    Primärschlüssel der Kostenstelle. Interne ID.

  • numberstring

    Nummer der Kostenstelle.

  • spherestring

    Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

  • is_systemboolean

    Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

  • is_activeboolean

    Die Kostenstelle ist aktiv.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/cost_center/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "sphere": "string",
  "is_system": true,
  "is_active": true,
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

Aktualisiert einen vorhandenen Kostenstelleneintrag.

PUT/api/invoice/cost_center/{identifier}

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • dataCostCenter
    Felder anzeigen (10)
    • display_namestring
    • idinteger

      Primärschlüssel der Kostenstelle. Interne ID.

    • numberstring

      Nummer der Kostenstelle.

    • spherestring

      Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

    • is_systemboolean

      Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

    • is_activeboolean

      Die Kostenstelle ist aktiv.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Kostenstelle ändernCostCenter

Felder anzeigen (10)
  • display_namestring
  • idinteger

    Primärschlüssel der Kostenstelle. Interne ID.

  • numberstring

    Nummer der Kostenstelle.

  • spherestring

    Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

  • is_systemboolean

    Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

  • is_activeboolean

    Die Kostenstelle ist aktiv.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request PUT \
  --url https://eure-instanz.iw-erp.de/api/invoice/cost_center/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "sphere": "string",
    "is_system": true
  }
}
'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "sphere": "string",
  "is_system": true,
  "is_active": true,
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

Aktualisiert einen vorhandenen Kostenstelleneintrag.

PATCH/api/invoice/cost_center/{identifier}

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • dataCostCenter
    Felder anzeigen (10)
    • display_namestring
    • idinteger

      Primärschlüssel der Kostenstelle. Interne ID.

    • numberstring

      Nummer der Kostenstelle.

    • spherestring

      Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

    • is_systemboolean

      Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

    • is_activeboolean

      Die Kostenstelle ist aktiv.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Kostenstelle ändernCostCenter

Felder anzeigen (10)
  • display_namestring
  • idinteger

    Primärschlüssel der Kostenstelle. Interne ID.

  • numberstring

    Nummer der Kostenstelle.

  • spherestring

    Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

  • is_systemboolean

    Die Kostenstelle wird vom System angelegt und kann nicht gelöscht werden.

  • is_activeboolean

    Die Kostenstelle ist aktiv.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request PATCH \
  --url https://eure-instanz.iw-erp.de/api/invoice/cost_center/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "display_name": "Beispiel",
    "id": 42,
    "name": "Beispiel",
    "number": "string",
    "sphere": "string",
    "is_system": true
  }
}
'
Antwort 200 application/json
{
  "display_name": "Beispiel",
  "id": 42,
  "name": "Beispiel",
  "number": "string",
  "sphere": "string",
  "is_system": true,
  "is_active": true,
  "deleted": true,
  "created": "2026-10-15T09:30:00+02:00",
  "updated": "2026-10-15T09:30:00+02:00"
}

Liefert eine Liste der Geschäftsjahr-Einträge.

GET/api/invoice/fiscal_year

Query-Parameter

idstring
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE | Standardwert: false
namestring
startDatestring
endDatestring
statusstring
openingBalanceEnteredbooleanOb die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation - oder beim Wechsel von der EÜR zur Bilanzierung - müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.
closingEntrystringDie Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen. | Erfordert Zugriffs-Tag: SCOPE
closedAtstring
closedBystring
createdstring
updatedstring
searchStringstringText, nach dem in der Liste gesucht wird
orderFieldNamestringName des Bestellfelds
orderFieldSortstringSortiermodusErlaubt: DESCASC
pageintegerSeite der Liste
pageSizeintegerAnzahl der Einträge je Seite
withMaxPageNumberstringgibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist

Antworten

200Geschaeftsjahrearray<FiscalYear>

Felder anzeigen (12)
  • idinteger

    Primärschlüssel des Geschäftsjahres. Interne ID.

  • start_datestring (date-time)

    Startdatum des Geschäftsjahres.

  • end_datestring (date-time)

    Enddatum des Geschäftsjahres.

  • statusstring

    Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

  • opening_balance_enteredboolean

    Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

  • closed_atstring (date-time)

    Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

  • closed_byUser14

    Benutzer, der das Geschäftsjahr abgeschlossen hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • closing_entryJournalEntry

    Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    Felder anzeigen (21)
    • debit_totalnumber (float)

      Summe der Sollbeträge.

    • credit_totalnumber (float)

      Summe der Habenbeträge.

    • is_balancedboolean

      Soll gleich Haben - die Grundregel der doppelten Buchführung.

    • idinteger

      Primärschlüssel des Buchungssatzes. Interne ID.

    • entry_numberstring

      Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

    • entry_datestring (date-time)

      Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

    • document_datestring (date-time)

      Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

    • document_numberstring

      Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

    • fiscal_yearFiscalYear

      Geschäftsjahr, zu dem der Eintrag gehört.

    • periodinteger

      Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

    • statusstring

      Status des Eintrags, zum Beispiel Entwurf oder gebucht.

    • source_typestring

      Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

    • source_idinteger

      Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

    • reversal_ofJournalEntry

      Die Buchung, die durch diese hier storniert wird.

    • posted_atstring (date-time)

      Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

    • posted_byUser14

      Benutzer, der den Eintrag gebucht hat.

    • linesarray<JournalEntryLine>

      Zeilen des Eintrags.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
[
  {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true,
    "closed_at": "2026-10-15T09:30:00+02:00",
    "closed_by": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "closing_entry": {
      "id": 42,
      "name": "Beispiel",
      "debit_total": 1.5,
      "credit_total": 1.5,
      "is_balanced": true,
      "entry_number": "string",
      "entry_date": "2026-10-15T09:30:00+02:00",
      "document_date": "2026-10-15T09:30:00+02:00",
      "document_number": "string",
      "period": 1
    },
    "deleted": true
  }
]

Legt einen neuen Geschäftsjahr-Eintrag an.

POST/api/invoice/fiscal_year

Request-Body application/json

  • dataFiscalYear
    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Geschaeftsjahr anlegenFiscalYear

Felder anzeigen (12)
  • idinteger

    Primärschlüssel des Geschäftsjahres. Interne ID.

  • start_datestring (date-time)

    Startdatum des Geschäftsjahres.

  • end_datestring (date-time)

    Enddatum des Geschäftsjahres.

  • statusstring

    Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

  • opening_balance_enteredboolean

    Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

  • closed_atstring (date-time)

    Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

  • closed_byUser14

    Benutzer, der das Geschäftsjahr abgeschlossen hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • closing_entryJournalEntry

    Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    Felder anzeigen (21)
    • debit_totalnumber (float)

      Summe der Sollbeträge.

    • credit_totalnumber (float)

      Summe der Habenbeträge.

    • is_balancedboolean

      Soll gleich Haben - die Grundregel der doppelten Buchführung.

    • idinteger

      Primärschlüssel des Buchungssatzes. Interne ID.

    • entry_numberstring

      Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

    • entry_datestring (date-time)

      Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

    • document_datestring (date-time)

      Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

    • document_numberstring

      Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

    • fiscal_yearFiscalYear

      Geschäftsjahr, zu dem der Eintrag gehört.

    • periodinteger

      Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

    • statusstring

      Status des Eintrags, zum Beispiel Entwurf oder gebucht.

    • source_typestring

      Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

    • source_idinteger

      Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

    • reversal_ofJournalEntry

      Die Buchung, die durch diese hier storniert wird.

    • posted_atstring (date-time)

      Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

    • posted_byUser14

      Benutzer, der den Eintrag gebucht hat.

    • linesarray<JournalEntryLine>

      Zeilen des Eintrags.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true
  }
}
'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "start_date": "2026-10-15T09:30:00+02:00",
  "end_date": "2026-10-15T09:30:00+02:00",
  "status": "string",
  "opening_balance_entered": true,
  "closed_at": "2026-10-15T09:30:00+02:00",
  "closed_by": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "closing_entry": {
    "id": 42,
    "name": "Beispiel",
    "debit_total": 1.5,
    "credit_total": 1.5,
    "is_balanced": true,
    "entry_number": "string",
    "entry_date": "2026-10-15T09:30:00+02:00",
    "document_date": "2026-10-15T09:30:00+02:00",
    "document_number": "string",
    "period": 1
  },
  "deleted": true
}

Liefert einen einzelnen Geschäftsjahr-Eintrag.

GET/api/invoice/fiscal_year/{identifier}

Pfad-Parameter

identifierPflichtstring

Antworten

200GeschaeftsjahrFiscalYear

Felder anzeigen (12)
  • idinteger

    Primärschlüssel des Geschäftsjahres. Interne ID.

  • start_datestring (date-time)

    Startdatum des Geschäftsjahres.

  • end_datestring (date-time)

    Enddatum des Geschäftsjahres.

  • statusstring

    Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

  • opening_balance_enteredboolean

    Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

  • closed_atstring (date-time)

    Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

  • closed_byUser14

    Benutzer, der das Geschäftsjahr abgeschlossen hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • closing_entryJournalEntry

    Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    Felder anzeigen (21)
    • debit_totalnumber (float)

      Summe der Sollbeträge.

    • credit_totalnumber (float)

      Summe der Habenbeträge.

    • is_balancedboolean

      Soll gleich Haben - die Grundregel der doppelten Buchführung.

    • idinteger

      Primärschlüssel des Buchungssatzes. Interne ID.

    • entry_numberstring

      Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

    • entry_datestring (date-time)

      Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

    • document_datestring (date-time)

      Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

    • document_numberstring

      Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

    • fiscal_yearFiscalYear

      Geschäftsjahr, zu dem der Eintrag gehört.

    • periodinteger

      Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

    • statusstring

      Status des Eintrags, zum Beispiel Entwurf oder gebucht.

    • source_typestring

      Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

    • source_idinteger

      Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

    • reversal_ofJournalEntry

      Die Buchung, die durch diese hier storniert wird.

    • posted_atstring (date-time)

      Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

    • posted_byUser14

      Benutzer, der den Eintrag gebucht hat.

    • linesarray<JournalEntryLine>

      Zeilen des Eintrags.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42 \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "start_date": "2026-10-15T09:30:00+02:00",
  "end_date": "2026-10-15T09:30:00+02:00",
  "status": "string",
  "opening_balance_entered": true,
  "closed_at": "2026-10-15T09:30:00+02:00",
  "closed_by": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "closing_entry": {
    "id": 42,
    "name": "Beispiel",
    "debit_total": 1.5,
    "credit_total": 1.5,
    "is_balanced": true,
    "entry_number": "string",
    "entry_date": "2026-10-15T09:30:00+02:00",
    "document_date": "2026-10-15T09:30:00+02:00",
    "document_number": "string",
    "period": 1
  },
  "deleted": true
}

Aktualisiert einen vorhandenen Geschäftsjahr-Eintrag.

PUT/api/invoice/fiscal_year/{identifier}

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • dataFiscalYear
    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Geschaeftsjahr ändernFiscalYear

Felder anzeigen (12)
  • idinteger

    Primärschlüssel des Geschäftsjahres. Interne ID.

  • start_datestring (date-time)

    Startdatum des Geschäftsjahres.

  • end_datestring (date-time)

    Enddatum des Geschäftsjahres.

  • statusstring

    Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

  • opening_balance_enteredboolean

    Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

  • closed_atstring (date-time)

    Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

  • closed_byUser14

    Benutzer, der das Geschäftsjahr abgeschlossen hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • closing_entryJournalEntry

    Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    Felder anzeigen (21)
    • debit_totalnumber (float)

      Summe der Sollbeträge.

    • credit_totalnumber (float)

      Summe der Habenbeträge.

    • is_balancedboolean

      Soll gleich Haben - die Grundregel der doppelten Buchführung.

    • idinteger

      Primärschlüssel des Buchungssatzes. Interne ID.

    • entry_numberstring

      Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

    • entry_datestring (date-time)

      Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

    • document_datestring (date-time)

      Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

    • document_numberstring

      Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

    • fiscal_yearFiscalYear

      Geschäftsjahr, zu dem der Eintrag gehört.

    • periodinteger

      Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

    • statusstring

      Status des Eintrags, zum Beispiel Entwurf oder gebucht.

    • source_typestring

      Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

    • source_idinteger

      Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

    • reversal_ofJournalEntry

      Die Buchung, die durch diese hier storniert wird.

    • posted_atstring (date-time)

      Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

    • posted_byUser14

      Benutzer, der den Eintrag gebucht hat.

    • linesarray<JournalEntryLine>

      Zeilen des Eintrags.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request PUT \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true
  }
}
'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "start_date": "2026-10-15T09:30:00+02:00",
  "end_date": "2026-10-15T09:30:00+02:00",
  "status": "string",
  "opening_balance_entered": true,
  "closed_at": "2026-10-15T09:30:00+02:00",
  "closed_by": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "closing_entry": {
    "id": 42,
    "name": "Beispiel",
    "debit_total": 1.5,
    "credit_total": 1.5,
    "is_balanced": true,
    "entry_number": "string",
    "entry_date": "2026-10-15T09:30:00+02:00",
    "document_date": "2026-10-15T09:30:00+02:00",
    "document_number": "string",
    "period": 1
  },
  "deleted": true
}

Aktualisiert einen vorhandenen Geschäftsjahr-Eintrag.

PATCH/api/invoice/fiscal_year/{identifier}

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • dataFiscalYear
    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Antworten

200Geschaeftsjahr ändernFiscalYear

Felder anzeigen (12)
  • idinteger

    Primärschlüssel des Geschäftsjahres. Interne ID.

  • start_datestring (date-time)

    Startdatum des Geschäftsjahres.

  • end_datestring (date-time)

    Enddatum des Geschäftsjahres.

  • statusstring

    Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

  • opening_balance_enteredboolean

    Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

  • closed_atstring (date-time)

    Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

  • closed_byUser14

    Benutzer, der das Geschäftsjahr abgeschlossen hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • closing_entryJournalEntry

    Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    Felder anzeigen (21)
    • debit_totalnumber (float)

      Summe der Sollbeträge.

    • credit_totalnumber (float)

      Summe der Habenbeträge.

    • is_balancedboolean

      Soll gleich Haben - die Grundregel der doppelten Buchführung.

    • idinteger

      Primärschlüssel des Buchungssatzes. Interne ID.

    • entry_numberstring

      Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

    • entry_datestring (date-time)

      Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

    • document_datestring (date-time)

      Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

    • document_numberstring

      Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

    • fiscal_yearFiscalYear

      Geschäftsjahr, zu dem der Eintrag gehört.

    • periodinteger

      Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

    • statusstring

      Status des Eintrags, zum Beispiel Entwurf oder gebucht.

    • source_typestring

      Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

    • source_idinteger

      Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

    • reversal_ofJournalEntry

      Die Buchung, die durch diese hier storniert wird.

    • posted_atstring (date-time)

      Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

    • posted_byUser14

      Benutzer, der den Eintrag gebucht hat.

    • linesarray<JournalEntryLine>

      Zeilen des Eintrags.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request PATCH \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42 \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "data": {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true
  }
}
'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "start_date": "2026-10-15T09:30:00+02:00",
  "end_date": "2026-10-15T09:30:00+02:00",
  "status": "string",
  "opening_balance_entered": true,
  "closed_at": "2026-10-15T09:30:00+02:00",
  "closed_by": {
    "id": 42,
    "name": "Beispiel",
    "username": "lena.hartmann@example.org",
    "email": "lena.hartmann@example.org",
    "profile_picture_url": "https://vynst.de",
    "positioningeneral": "string",
    "crm_person": {
      "id": 42,
      "first_name": "Lena",
      "last_name": "Hartmann",
      "title": "Beispiel",
      "language": "de",
      "support_description": "Text",
      "profile_picture_url": "https://vynst.de",
      "address_street": "Jakobistr. 39",
      "address_city": "Hannover",
      "address_zip": "30163"
    },
    "archived": true,
    "require2fa": true,
    "search_string": "string"
  },
  "closing_entry": {
    "id": 42,
    "name": "Beispiel",
    "debit_total": 1.5,
    "credit_total": 1.5,
    "is_balanced": true,
    "entry_number": "string",
    "entry_date": "2026-10-15T09:30:00+02:00",
    "document_date": "2026-10-15T09:30:00+02:00",
    "document_number": "string",
    "period": 1
  },
  "deleted": true
}

Was einem Abschluss noch im Weg steht.

GET/api/invoice/fiscal_year/{identifier}/closing_blockers

Wird vor dem Abschluss angezeigt, damit niemand gegen eine Ausnahme läuft.

Pfad-Parameter

identifierPflichtstring

Antworten

200Offene Punkte vor dem Abschluss

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42/closing_blockers \
  --header 'x-iw-jwt-token: <TOKEN>'

Geschaeftsjahr abschliessen.

POST/api/invoice/fiscal_year/{identifier}/close

Schließt die Erfolgskonten über das Ergebnis auf das Eigenkapital ab. Vorläufig lässt sich das Jahr noch einmal öffnen, endgültig nicht.

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • chartstring
  • provisionalboolean

Antworten

200Die erzeugte Abschlussbuchung

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42/close \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "chart": "SKR04",
  "provisional": true
}
'

Ein vorläufig abgeschlossenes Jahr wieder öffnen.

POST/api/invoice/fiscal_year/{identifier}/reopen

Pfad-Parameter

identifierPflichtstring

Antworten

200Das wieder geoeffnete Geschaeftsjahr

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42/reopen \
  --header 'x-iw-jwt-token: <TOKEN>'

Saldenvortrag ins Folgejahr.

POST/api/invoice/fiscal_year/{identifier}/carry_forward

Uebertraegt die Bestaende der Bilanzkonten - ohne diesen Schritt begaenne das neue Jahr mit leeren Konten.

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • target_fiscal_yearstring
  • chartstring

Antworten

200Die erzeugte Eröffnungsbuchung

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/fiscal_year/42/carry_forward \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "target_fiscal_year": "2027",
  "chart": "SKR04"
}
'

Journal - alle Buchungssätze.

GET/api/invoice/journal_entry

Query-Parameter

idstring
deletedbooleanDiese Eigenschaft markiert eine Entität als gelöscht / archiviert | Benötigtes Zugriffsrecht: SCOPE | Standardwert: false
entryNumberstringFortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen. | Benötigt Zugriffsrecht: SCOPE
entryDatestringBuchungsdatum - bestimmt, in welche Periode die Buchung fällt.
documentDatestringBelegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.
documentNumberstringBelegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).
fiscalYearstring
periodstringBuchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist - nur der Abschluss setzt sie selbst. Die Spalte heisst `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` - DQL und die JSON-Ausgabe ändern sich damit nicht.
statusstring
sourceTypestring
sourceIdstringId des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird. | Benötigt Zugriffsrecht: SCOPE
reversalOfstringDie Buchung, die durch diese hier storniert wird. | Erfordert Zugriffs-Tag: SCOPE
postedAtstring
postedBystring
createdstring
updatedstring
searchStringstringText, nach dem in der Liste gesucht wird
orderFieldNamestringName des Bestellfelds
orderFieldSortstringSortiermodusErlaubt: DESCASC
pageintegerSeite der Liste
pageSizeintegerAnzahl der Einträge je Seite
withMaxPageNumberstringgibt die Anzahl verfügbarer Seiten als Header zurück, wenn dies gesetzt ist

Antworten

200Buchungssätzearray<JournalEntry>

Felder anzeigen (21)
  • debit_totalnumber (float)

    Summe der Sollbeträge.

  • credit_totalnumber (float)

    Summe der Habenbeträge.

  • is_balancedboolean

    Soll gleich Haben - die Grundregel der doppelten Buchführung.

  • idinteger

    Primärschlüssel des Buchungssatzes. Interne ID.

  • entry_numberstring

    Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

  • entry_datestring (date-time)

    Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

  • document_datestring (date-time)

    Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

  • document_numberstring

    Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

  • fiscal_yearFiscalYear

    Geschäftsjahr, zu dem der Eintrag gehört.

    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • periodinteger

    Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

  • statusstring

    Status des Eintrags, zum Beispiel Entwurf oder gebucht.

  • source_typestring

    Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

  • source_idinteger

    Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

  • reversal_ofJournalEntry

    Die Buchung, die durch diese hier storniert wird.

  • posted_atstring (date-time)

    Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

  • posted_byUser14

    Benutzer, der den Eintrag gebucht hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • linesarray<JournalEntryLine>

    Zeilen des Eintrags.

    Felder anzeigen (9)
    • idinteger

      Primärschlüssel der Buchungssatzzeile. Interne ID.

    • ledger_accountLedgerAccount

      Hauptbuch-Konto, auf das gebucht wird.

    • cost_centerCostCenter

      Kostenstelle der Buchung.

    • debitnumber (float)

      Sollbetrag. Aktiv- und Aufwandskonten mehren sich hier. DECIMAL und nicht DOUBLE. Ein binaerer Fliesskommawert kann 0,10 Euro nicht darstellen; bei einer einzelnen Buchung faellt das durch das Runden auf Cent nicht auf, ueber eine Summenspalte mit zehntausend Zeilen schon. Die Datenbank rechnet DECIMAL exakt, und genau ueber diese Spalten laufen die Summen der Saldenliste. Nach aussen bleibt es float: Doctrine liefert DECIMAL als Zeichenkette, die Getter wandeln um, und die Setter schreiben sie auf zwei Nachkommastellen normiert zurueck.

    • creditnumber (float)

      Habenbetrag. Passiv-, Eigenkapital- und Ertragskonten werden hier erhöht.

    • line_descriptionstring

      Buchungstext der Zeile. Fehlt er, gilt der Text des Buchungssatzes.

    • positioninteger

      Position der Zeile im Buchungssatz.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/journal_entry \
  --header 'x-iw-jwt-token: <TOKEN>'
Antwort 200 application/json
[
  {
    "id": 42,
    "name": "Beispiel",
    "debit_total": 1.5,
    "credit_total": 1.5,
    "is_balanced": true,
    "entry_number": "string",
    "entry_date": "2026-10-15T09:30:00+02:00",
    "document_date": "2026-10-15T09:30:00+02:00",
    "document_number": "string",
    "fiscal_year": {
      "id": 42,
      "name": "Beispiel",
      "start_date": "2026-10-15T09:30:00+02:00",
      "end_date": "2026-10-15T09:30:00+02:00",
      "status": "string",
      "opening_balance_entered": true,
      "closed_at": "2026-10-15T09:30:00+02:00",
      "deleted": true,
      "created": "2026-10-15T09:30:00+02:00",
      "updated": "2026-10-15T09:30:00+02:00"
    }
  }
]

Buchungssatz erfassen.

POST/api/invoice/journal_entry

Der Satz entsteht als Entwurf. Erst das Festschreiben macht ihn unveränderlich.

Request-Body application/json

  • dataobject
  • linesarray<object>

Antworten

200Buchungssatz anlegenJournalEntry

Felder anzeigen (21)
  • debit_totalnumber (float)

    Summe der Sollbeträge.

  • credit_totalnumber (float)

    Summe der Habenbeträge.

  • is_balancedboolean

    Soll gleich Haben - die Grundregel der doppelten Buchführung.

  • idinteger

    Primärschlüssel des Buchungssatzes. Interne ID.

  • entry_numberstring

    Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

  • entry_datestring (date-time)

    Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

  • document_datestring (date-time)

    Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

  • document_numberstring

    Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

  • fiscal_yearFiscalYear

    Geschäftsjahr, zu dem der Eintrag gehört.

    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • periodinteger

    Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

  • statusstring

    Status des Eintrags, zum Beispiel Entwurf oder gebucht.

  • source_typestring

    Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

  • source_idinteger

    Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

  • reversal_ofJournalEntry

    Die Buchung, die durch diese hier storniert wird.

  • posted_atstring (date-time)

    Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

  • posted_byUser14

    Benutzer, der den Eintrag gebucht hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • linesarray<JournalEntryLine>

    Zeilen des Eintrags.

    Felder anzeigen (9)
    • idinteger

      Primärschlüssel der Buchungssatzzeile. Interne ID.

    • ledger_accountLedgerAccount

      Hauptbuch-Konto, auf das gebucht wird.

    • cost_centerCostCenter

      Kostenstelle der Buchung.

    • debitnumber (float)

      Sollbetrag. Aktiv- und Aufwandskonten mehren sich hier. DECIMAL und nicht DOUBLE. Ein binaerer Fliesskommawert kann 0,10 Euro nicht darstellen; bei einer einzelnen Buchung faellt das durch das Runden auf Cent nicht auf, ueber eine Summenspalte mit zehntausend Zeilen schon. Die Datenbank rechnet DECIMAL exakt, und genau ueber diese Spalten laufen die Summen der Saldenliste. Nach aussen bleibt es float: Doctrine liefert DECIMAL als Zeichenkette, die Getter wandeln um, und die Setter schreiben sie auf zwei Nachkommastellen normiert zurueck.

    • creditnumber (float)

      Habenbetrag. Passiv-, Eigenkapital- und Ertragskonten werden hier erhöht.

    • line_descriptionstring

      Buchungstext der Zeile. Fehlt er, gilt der Text des Buchungssatzes.

    • positioninteger

      Position der Zeile im Buchungssatz.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/journal_entry \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '{"lines":[{}]}'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "debit_total": 1.5,
  "credit_total": 1.5,
  "is_balanced": true,
  "entry_number": "string",
  "entry_date": "2026-10-15T09:30:00+02:00",
  "document_date": "2026-10-15T09:30:00+02:00",
  "document_number": "string",
  "fiscal_year": {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true,
    "closed_at": "2026-10-15T09:30:00+02:00",
    "closed_by": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "deleted": true,
    "created": "2026-10-15T09:30:00+02:00"
  }
}

Prüfen, ohne zu speichern.

GET/api/invoice/journal_entry/{identifier}/validate

Pfad-Parameter

identifierPflichtstring

Antworten

200Gefundene Mängel, leer wenn buchbar

Anfrage
curl --request GET \
  --url https://eure-instanz.iw-erp.de/api/invoice/journal_entry/42/validate \
  --header 'x-iw-jwt-token: <TOKEN>'

Buchungssatz stornieren.

POST/api/invoice/journal_entry/{identifier}/reverse

Erzeugt eine Gegenbuchung; die ursprüngliche bleibt unangetastet.

Pfad-Parameter

identifierPflichtstring

Request-Body application/json

  • reversal_datestring (date)

Antworten

200Die erzeugte StornobuchungJournalEntry

Felder anzeigen (21)
  • debit_totalnumber (float)

    Summe der Sollbeträge.

  • credit_totalnumber (float)

    Summe der Habenbeträge.

  • is_balancedboolean

    Soll gleich Haben - die Grundregel der doppelten Buchführung.

  • idinteger

    Primärschlüssel des Buchungssatzes. Interne ID.

  • entry_numberstring

    Fortlaufende Buchungsnummer, beim Festschreiben vergeben. Erst dann, weil die GoBD eine lückenlose Nummerierung der festgeschriebenen Buchungen verlangt - eine verworfene Erfassung darf keine Lücke hinterlassen.

  • entry_datestring (date-time)

    Buchungsdatum - bestimmt, in welche Periode die Buchung fällt.

  • document_datestring (date-time)

    Belegdatum – das Datum auf dem Papier. Kann vom Buchungsdatum abweichen.

  • document_numberstring

    Belegnummer – die Brücke zwischen Buchung und Beleg. Ohne sie ist die Buchung nicht nachvollziehbar („keine Buchung ohne Beleg“).

  • fiscal_yearFiscalYear

    Geschäftsjahr, zu dem der Eintrag gehört.

    Felder anzeigen (12)
    • idinteger

      Primärschlüssel des Geschäftsjahres. Interne ID.

    • start_datestring (date-time)

      Startdatum des Geschäftsjahres.

    • end_datestring (date-time)

      Enddatum des Geschäftsjahres.

    • statusstring

      Status des Geschäftsjahres, zum Beispiel offen oder geschlossen.

    • opening_balance_enteredboolean

      Ob die Eröffnungsbilanzwerte erfasst sind. Beim ersten Geschäftsjahr einer Installation – oder beim Wechsel von der EÜR zur Bilanzierung – müssen die Anfangsbestände einmalig eingebucht werden, sonst stimmt die Bilanz nicht.

    • closed_atstring (date-time)

      Zeitpunkt, zu dem das Geschäftsjahr abgeschlossen wurde.

    • closed_byUser14

      Benutzer, der das Geschäftsjahr abgeschlossen hat.

    • closing_entryJournalEntry

      Die Abschlussbuchung dieses Jahres. Ohne diesen Verweis war der vorläufige Abschluss eine Sackgasse: das Wiederöffnen setzte den Status zurück, die Buchung blieb stehen, und der endgültige Abschluss fand keine Salden mehr vor. Mit dem Verweis lässt sich die Buchung beim Wiederöffnen stornieren und der Abschluss beliebig oft wiederholen.

    • deletedboolean

      Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

    • namestring

      Name der Einheit.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • periodinteger

    Buchungsperiode innerhalb des Geschäftsjahres. 1 bis 12 für die laufenden Monate, 13 für die Abschlussperiode. Die Zahl wird aus dem Buchungsdatum abgeleitet, sobald sie nicht ausdrücklich gesetzt ist – nur der Abschluss setzt sie selbst. Die Spalte heißt `accounting_period` und nicht `period`: MariaDB hält PERIOD seit der System-Versionierung (`PERIOD FOR SYSTEM_TIME`) als Schlüsselwort frei, und die Migration scheitert daran. Das Feld in PHP bleibt `period` – DQL und die JSON-Ausgabe ändern sich damit nicht.

  • statusstring

    Status des Eintrags, zum Beispiel Entwurf oder gebucht.

  • source_typestring

    Quelle des Eintrags, zum Beispiel Rechnung oder Zahlung.

  • source_idinteger

    Id des auslösenden Belegs, damit sich Buchung und Beleg gegenseitig finden - und damit derselbe Beleg nicht zweimal gebucht wird.

  • reversal_ofJournalEntry

    Die Buchung, die durch diese hier storniert wird.

  • posted_atstring (date-time)

    Zeitpunkt, zu dem der Eintrag veröffentlicht wurde.

  • posted_byUser14

    Benutzer, der den Eintrag gebucht hat.

    Felder anzeigen (10)
    • idinteger

      Primärschlüssel des Benutzers. Interne ID des Anmeldebenutzers.

    • namestring

      Anzeigename des Benutzers. Wird in der Oberfläche und in Protokolleinträgen angezeigt.

    • usernamestring

      Anmeldename des Benutzers. Muss über alle Benutzer hinweg eindeutig sein.

    • emailstring

      E-Mail-Adresse des Benutzers. Wird für Anmeldebenachrichtigungen, Passwort-Zurücksetzen und als Anmeldealias verwendet.

    • positioningeneralstring

      Freitext zur Position oder Rolle des Benutzers.

    • crm_personCRMPerson10

      CRM-Person, die mit diesem Anmeldebenutzer verknüpft ist. Verbindet das Anmeldekonto mit dem Personendatensatz.

    • profile_picture_urlstring

      URL des Profilbilds des Benutzers.

    • archivedboolean

      Markiert den Benutzer als archiviert. Archivierte Benutzer bleiben zur Historie erhalten und sind nicht aktiv.

    • require2faboolean

      Für diesen Benutzer ist die Zwei-Faktor-Authentifizierung Pflicht.

    • search_stringstring

      Text, unter dem die Entität gesucht werden kann.

  • linesarray<JournalEntryLine>

    Zeilen des Eintrags.

    Felder anzeigen (9)
    • idinteger

      Primärschlüssel der Buchungssatzzeile. Interne ID.

    • ledger_accountLedgerAccount

      Hauptbuch-Konto, auf das gebucht wird.

    • cost_centerCostCenter

      Kostenstelle der Buchung.

    • debitnumber (float)

      Sollbetrag. Aktiv- und Aufwandskonten mehren sich hier. DECIMAL und nicht DOUBLE. Ein binaerer Fliesskommawert kann 0,10 Euro nicht darstellen; bei einer einzelnen Buchung faellt das durch das Runden auf Cent nicht auf, ueber eine Summenspalte mit zehntausend Zeilen schon. Die Datenbank rechnet DECIMAL exakt, und genau ueber diese Spalten laufen die Summen der Saldenliste. Nach aussen bleibt es float: Doctrine liefert DECIMAL als Zeichenkette, die Getter wandeln um, und die Setter schreiben sie auf zwei Nachkommastellen normiert zurueck.

    • creditnumber (float)

      Habenbetrag. Passiv-, Eigenkapital- und Ertragskonten werden hier erhöht.

    • line_descriptionstring

      Buchungstext der Zeile. Fehlt er, gilt der Text des Buchungssatzes.

    • positioninteger

      Position der Zeile im Buchungssatz.

    • createdstring (date-time)

      Zeitpunkt, zu dem der Datensatz angelegt wurde.

    • updatedstring (date-time)

      Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

  • deletedboolean

    Diese Eigenschaft markiert eine Entität als gelöscht / archiviert

  • namestring

    Name der Einheit.

  • createdstring (date-time)

    Zeitpunkt, zu dem der Datensatz angelegt wurde.

  • updatedstring (date-time)

    Zeitpunkt, zu dem der Datensatz zuletzt aktualisiert wurde.

Anfrage
curl --request POST \
  --url https://eure-instanz.iw-erp.de/api/invoice/journal_entry/42/reverse \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "reversal_date": "2026-10-15"
}
'
Antwort 200 application/json
{
  "id": 42,
  "name": "Beispiel",
  "debit_total": 1.5,
  "credit_total": 1.5,
  "is_balanced": true,
  "entry_number": "string",
  "entry_date": "2026-10-15T09:30:00+02:00",
  "document_date": "2026-10-15T09:30:00+02:00",
  "document_number": "string",
  "fiscal_year": {
    "id": 42,
    "name": "Beispiel",
    "start_date": "2026-10-15T09:30:00+02:00",
    "end_date": "2026-10-15T09:30:00+02:00",
    "status": "string",
    "opening_balance_entered": true,
    "closed_at": "2026-10-15T09:30:00+02:00",
    "closed_by": {
      "id": 42,
      "name": "Beispiel",
      "username": "lena.hartmann@example.org",
      "email": "lena.hartmann@example.org",
      "profile_picture_url": "https://vynst.de",
      "positioningeneral": "string",
      "archived": true,
      "require2fa": true,
      "search_string": "string"
    },
    "deleted": true,
    "created": "2026-10-15T09:30:00+02:00"
  }
}