Skip to content
Developer

Kassenbuch

Accounting6 EndpointsBilling / Kassenbuch

Die Bewegungen der Kasse.

GET/api/invoice/cash_transaction

Query parameters

idinteger
deletedbooleanThis property is used to mark an entity as deleted / archived | Default value: false
namestring
cashRegisterstringDie Kasse, zu der diese Bewegung gehört. Pflichtangabe: eine Kassenbewegung ohne Kasse hätte keinen Bestand, an dem sie sich fortschreiben könnte.
sequenceNumberintegerFortlaufende Nummer im Kassenbuch der jeweiligen Kasse, lückenlos ab 1. Die Lückenlosigkeit ist der Grund für die Nummer: fehlt eine, ist eine Bewegung entfernt worden. Sie wird deshalb von `CashBookService` vergeben und nicht vom Aufrufer gesetzt.
transactionDatestringTag der Bewegung.
typestring
grossAmountnumberDer Betrag, der tatsächlich die Kasse wechselt - immer brutto und immer positiv. Die Richtung steckt in `type`, nicht im Vorzeichen. Ein Vorzeichen zusätzlich zur Richtung wäre eine zweite Wahrheit über dieselbe Sache; bei einer Ausgabe von -50 mit type=expense wüsste niemand, ob das nun eine Einnahme ist.
taxRatenumberSteuersatz in Prozent, wie er auf dem Beleg steht.
taxAmountnumberDer Steueranteil des Bruttobetrags, aus Satz und Betrag gerechnet.
balanceAfternumberBestand der Kasse nach dieser Bewegung.
documentNumberstringBelegnummer - die Nummer des Kassenbelegs, nicht die laufende Nummer.
expenseCategorystringDie EÜR-Kategorie - dieselbe Brücke wie am Sachkonto und am Anlagegut.
contraLedgerAccountstringDas Gegenkonto für die Bilanzierung - die Kasse selbst ist die andere Seite und steht im Kontenrahmen fest.
costCenterstringDie steuerliche Sphäre beim gemeinnützigen Verein.
incomingInvoicestringDie bar bezahlte Eingangsrechnung, falls es eine gibt.
invoicestringDie bar kassierte Ausgangsrechnung, falls es eine gibt.
journalEntrystringDer Buchungssatz, sofern die Bewegung verbucht wurde. Nur bei Bilanzierung gesetzt. Bei der EÜR bleibt er leer, weil es dort keine Buchungssätze gibt - die Bewegung zählt trotzdem.
reversalOfstringDie Bewegung, die diese hier storniert. Ein echter Verweis und nicht der Buchungstext: der Text ist frei editierbar, und eine Stornoprüfung, die auf "Storno zu Nr. 4" sucht, ließe sich durch Umbenennen aushebeln - und träfe nebenbei auch "Storno zu Nr. 41".
lockedbooleanFestgeschrieben - die Bewegung ist unveränderlich (GoBD). Korrigiert wird wie im Journal über eine Gegenbewegung, nicht durch Ändern der ursprünglichen Zeile.
createdstring
updatedstring
searchStringstringtext to search for in the list
orderFieldNamestringname of the order field
orderFieldSortstringsorting modeAllowed: DESCASC
pageintegerpage of the list
pageSizeintegernumber of entries for each page
withMaxPageNumberstringreturns the number of pages available as a header if this is set

Responses

200Kassenbewegungenarray<CashTransaction>

Show fields (22)
  • idinteger

    Primary key of the cash transaction. Internal ID.

  • cash_registerCashRegister

    Die Kasse, zu der diese Bewegung gehört. Pflichtangabe: eine Kassenbewegung ohne Kasse hätte keinen Bestand, an dem sie sich fortschreiben könnte.

    Show fields (10)
    • idinteger

      Primary key of the cash register. Internal ID.

    • codestring

      Kurzzeichen für die Belegnummer, etwa "VH" für Vereinsheim.

    • ledger_accountLedgerAccount

      Das Bestandskonto dieser Kasse für die Bilanzierung. Je Kasse ein eigenes Konto, sonst stünden in der Bilanz beide Bestände auf einer Zeile und ließen sich nicht mehr trennen.

    • cost_centerCostCenter

      Die steuerliche Sphäre beim gemeinnützigen Verein. Eine Kasse gehört meist zu einem Bereich - die Kasse am Getränkestand zum wirtschaftlichen Geschäftsbetrieb, die Kasse der Geschäftsstelle zum ideellen Bereich.

    • is_activeboolean

      Stillgelegte Kassen nehmen keine Buchungen mehr an, bleiben aber mit ihrem Buch bestehen - die Aufzeichnungen sind aufzubewahren.

    • locked_throughstring (date-time)

      Bis zu welchem Tag das Kassenbuch abgeschlossen ist. Der Kassenabschluss schiebt dieses Datum vor. Bis hierhin nimmt die Kasse keine Bewegung mehr an - auch nicht am selben Tag: die Chronologieprüfung allein ließ nach dem Monatsabschluss noch eine Bewegung mit dem letzten Tag des Monats zu, und der abgeschlossene Monat wäre hinterher ein anderer gewesen als der abgeschlossene.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • sequence_numberinteger

    Fortlaufende Nummer im Kassenbuch der jeweiligen Kasse, lückenlos ab 1. Die Lückenlosigkeit ist der Grund für die Nummer: fehlt eine, ist eine Bewegung entfernt worden. Sie wird deshalb von `CashBookService` vergeben und nicht vom Aufrufer gesetzt.

  • transaction_datestring (date-time)

    Tag der Bewegung.

  • typestring

    Type of the cash transaction, for example income or expense.

  • gross_amountnumber (float)

    Der Betrag, der tatsächlich die Kasse wechselt - immer brutto und immer positiv. Die Richtung steckt in `type`, nicht im Vorzeichen. Ein Vorzeichen zusätzlich zur Richtung wäre eine zweite Wahrheit über dieselbe Sache; bei einer Ausgabe von -50 mit type=expense wüsste niemand, ob das nun eine Einnahme ist.

  • tax_ratenumber (float)

    Steuersatz in Prozent, wie er auf dem Beleg steht.

  • tax_amountnumber (float)

    Der Steueranteil des Bruttobetrags, aus Satz und Betrag gerechnet.

  • balance_afternumber (float)

    Bestand der Kasse nach dieser Bewegung.

  • document_numberstring

    Belegnummer - die Nummer des Kassenbelegs, nicht die laufende Nummer.

  • expense_categoryExpenseCategory10

    Die EÜR-Kategorie - dieselbe Brücke wie am Sachkonto und am Anlagegut.

    Show fields (19)
    • idinteger

      Primary key of the expense category. Internal 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

      This property is used to mark an entity as deleted / archived

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • contra_ledger_accountLedgerAccount

    Das Gegenkonto für die Bilanzierung - die Kasse selbst ist die andere Seite und steht im Kontenrahmen fest.

    Show fields (15)
    • display_namestring
    • idinteger

      Primary key of the ledger account. Internal 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

      Chart of accounts the account belongs to, for example SKR03.

    • account_typestring

      Type of the account, for example asset or revenue.

    • 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

      This property is used to mark an entity as deleted / archived

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • cost_centerCostCenter

    Die steuerliche Sphäre beim gemeinnützigen Verein.

    Show fields (10)
    • display_namestring
    • idinteger

      Primary key of the cost center. Internal ID.

    • numberstring

      Number of the cost center.

    • spherestring

      Steuerliche Sphäre, null bei rein betriebswirtschaftlicher Gliederung.

    • is_systemboolean

      The cost center is created by the system and cannot be deleted.

    • is_activeboolean

      The cost center is active.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • incoming_invoiceIncomingInvoice3

    Die bar bezahlte Eingangsrechnung, falls es eine gibt.

    Show fields (43)
    • idinteger

      Primary key of the invoice document. Internal ID.

    • tokenstring

      Token that identifies the document for public access.

    • numberinteger

      Running document number.

    • manual_number_prefixstring

      Prefix of a manually entered document number.

    • manual_numberinteger

      Manually entered document number.

    • number_stringstring

      Document number as displayed to users.

    • generation_datestring (date-time)

      Date the document was generated.

    • number_datestring (date-time)

      Date used for the document number.

    • messagestring

      Message printed on the document.

    • currencystring

      Currency of the document.

    • namestring

      Name of the document.

    • due_datestring (date-time)

      Due date of the document.

    • netto_valuenumber (float)

      Net total of the document.

    • brutto_valuenumber (float)

      Gross total of the document.

    • tax_valuenumber (float)

      Total tax amount of the document.

    • taxTaxrequired

      Tax rate applied to the document.

    • linked_number_titlestring

      Title of the linked document number.

    • linked_numberstring

      Number of the linked document.

    • statusstring

      Status of the document.

    • previous_statusstring

      Status before the last change.

    • status_updatedstring (date-time)

      Point in time the status was last changed.

    • archivedboolean

      Whether the document is archived.

    • last_pdf_exportstring (date-time)

      Point in time the PDF was last exported.

    • last_status_exportstring

      Status at the last export.

    • search_stringstring

      Text that the entity can be searched by.

    • external_invoice_numberstring

      Externe Rechnungsnummer des Lieferanten

    • received_datestring (date-time)

      Eingangsdatum (wann wurde die Rechnung empfangen)

    • payment_datestring (date-time)

      Zahlungsdatum

    • service_date_startstring (date-time)

      Leistungszeitraum Start

    • service_date_endstring (date-time)

      Leistungszeitraum Ende

    • vat_categorystring

      Der umsatzsteuerliche Sachverhalt. Auf der Eingangsseite entscheidet er darüber, ob die Vorsteuer unter Kennzahl 66 steht (Rechnung eines anderen Unternehmers), unter 61 (innergemeinschaftlicher Erwerb), unter 62 (Einfuhrumsatzsteuer) oder unter 67 (§ 13b UStG). Beim Erwerb und bei § 13b kommt eine zweite Zeile hinzu: die Steuer schulden wir selbst, obwohl sie uns niemand berechnet hat, und sie steht deshalb zugleich als Umsatzsteuer im Vordruck. Wer nur eine der beiden bucht, zahlt zu viel oder zu wenig. Ohne Angabe der Regelfall.

    • vat_self_assessed_ratenumber (float)

      Der Steuersatz, mit dem die selbst geschuldete Steuer zu rechnen ist. Beim innergemeinschaftlichen Erwerb und bei § 13b UStG berechnet der Lieferant keine Steuer - die Rechnung ist netto, und die Steuer schulden wir. Womit sie zu rechnen ist, steht deshalb auf keinem Beleg: es ist der Satz, der im Inland auf diese Leistung anzuwenden wäre. Ohne Angabe rechnet die Voranmeldung mit dem Regelsatz und sagt in den Hinweisen, bei wie vielen Belegen sie das getan hat. Stillschweigend zu raten wäre in einer Steueranmeldung das Falsche.

    • import_vat_amountstring

      Die Einfuhrumsatzsteuer aus dem Zollbescheid. Sie steht NICHT auf der Rechnung des Lieferanten - die ist bei einer Einfuhr ohne deutsche Steuer. Entrichtet wird sie an den Zoll, und nur der entrichtete Betrag ist als Vorsteuer abziehbar (§ 15 Abs. 1 Satz 1 Nr. 2 UStG, Kennzahl 62 der Voranmeldung). Den Steuerbetrag der Lieferantenrechnung dafür zu nehmen war schlicht der falsche Beleg.

    • paid_valuenumber (float)

      Bereits bezahlter Betrag (für Teilzahlungen)

    • sellerIncomingInvoiceSeller

      Verkäufer/Lieferant Informationen (Snapshot)

    • expense_categoryExpenseCategory10

      Hauptkategorie für EÜR

    • document_pathstring

      Pfad zur gespeicherten Rechnungsdatei (PDF/Bild)

    • document_filenamestring

      Original Dateiname

    • document_mime_typestring

      MIME Type des Dokuments

    • notesstring

      Notizen/Bemerkungen

    • is_deductibleboolean

      Ist die Rechnung für den Vorsteuerabzug relevant?

    • is_approvedboolean

      Wurde die Rechnung geprüft/freigegeben?

    • approved_atstring (date-time)

      Time the incoming invoice was approved.

  • invoiceInvoice

    Die bar kassierte Ausgangsrechnung, falls es eine gibt.

    Show fields (38)
    • idinteger

      Primary key of the invoice document. Internal ID.

    • tokenstring

      Token that identifies the document for public access.

    • numberinteger

      Running document number.

    • manual_number_prefixstring

      Prefix of a manually entered document number.

    • manual_numberinteger

      Manually entered document number.

    • number_stringstring

      Document number as displayed to users.

    • generation_datestring (date-time)

      Date the document was generated.

    • number_datestring (date-time)

      Date used for the document number.

    • messagestring

      Message printed on the document.

    • currencystring

      Currency of the document.

    • namestring

      Name of the document.

    • due_datestring (date-time)

      Due date of the document.

    • netto_valuenumber (float)

      Net total of the document.

    • brutto_valuenumber (float)

      Gross total of the document.

    • tax_valuenumber (float)

      Total tax amount of the document.

    • taxTaxrequired

      Tax rate applied to the document.

    • linked_number_titlestring

      Title of the linked document number.

    • linked_numberstring

      Number of the linked document.

    • statusstring

      Status of the document.

    • previous_statusstring

      Status before the last change.

    • status_updatedstring (date-time)

      Point in time the status was last changed.

    • archivedboolean

      Whether the document is archived.

    • last_pdf_exportstring (date-time)

      Point in time the PDF was last exported.

    • last_status_exportstring

      Status at the last export.

    • search_stringstring

      Text that the entity can be searched by.

    • accounting_typeAccountingTyperequired

      Accounting type of the invoice.

    • payment_typePaymentType

      Payment type of the invoice.

    • payment_goalPaymentGoal

      Payment term of the invoice.

    • expense_categoryExpenseCategory10

      EÜR-Kategorie für diese Rechnung (Einnahmen-Zuordnung) Wenn nicht gesetzt, wird die Default-Kategorie des AccountingTypes verwendet

    • buyerInvoiceBuyer

      Buyer of the invoice.

    • payment_datestring (date-time)

      Date the invoice was paid.

    • vat_categorystring

      Der umsatzsteuerliche Sachverhalt. Der Steuersatz sagt nicht, in welche Zeile der Voranmeldung ein Umsatz gehört. Null Prozent stehen an einer innergemeinschaftlichen Lieferung (Kennzahl 41), an einer Ausfuhr (43), an einer Leistung nach § 13b UStG (60) und an einem steuerfreien Umsatz nach § 4 UStG (48) - vier verschiedene Zeilen, derselbe Steuersatz. Hier ist die einzige Stelle, an der jemand das weiss: beim Schreiben der Rechnung ist bekannt, ob der Kunde eine USt-IdNr. hat und wohin die Ware geht. Später ist es nicht mehr rekonstruierbar. Ohne Angabe der Regelfall - alles andere war bisher nicht erfassbar.

    • is_payment_date_from_ext_serviceboolean

      The payment date comes from an external service.

    • direct_debit_exportedboolean

      The invoice was exported for direct debit.

    • cancel_datestring (date-time)

      Date the invoice was canceled.

    • cancel_textstring

      Text of the cancellation.

    • start_datestring (date-time)

      Start of the billed period.

    • end_datestring (date-time)

      End of the billed period.

  • journal_entryJournalEntry

    Der Buchungssatz, sofern die Bewegung verbucht wurde. Nur bei Bilanzierung gesetzt. Bei der EÜR bleibt er leer, weil es dort keine Buchungssätze gibt - die Bewegung zählt trotzdem.

    Show fields (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

      Primary key of the journal entry. Internal ID.

    • entry_numberstring

      Fortlaufende Buchungsnummer, vergeben beim Festschreiben. 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

      Fiscal year the entry belongs to.

    • 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 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

      Status of the entry, for example draft or posted.

    • source_typestring

      Source of the entry, for example invoice or payment.

    • 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)

      Time the entry was posted.

    • posted_byUser14

      Login user who posted the entry.

    • linesarray<JournalEntryLine>

      Lines of the entry.

    • deletedboolean

      This property is used to mark an entity as deleted / archived

    • namestring

      Name of the entity.

    • createdstring (date-time)

      Point in time the entity was created.

    • updatedstring (date-time)

      Point in time the entity was last updated.

  • reversal_ofCashTransaction

    Die Bewegung, die diese hier storniert. Ein echter Verweis und nicht der Buchungstext: der Text ist frei editierbar, und eine Stornoprüfung, die auf "Storno zu Nr. 4" sucht, ließe sich durch Umbenennen aushebeln - und träfe nebenbei auch "Storno zu Nr. 41".

  • lockedboolean

    Festgeschrieben - die Bewegung ist unveränderlich (GoBD). Korrigiert wird wie im Journal über eine Gegenbewegung, nicht durch Ändern der ursprünglichen Zeile.

  • deletedboolean

    This property is used to mark an entity as deleted / archived

  • namestring

    Name of the entity.

  • createdstring (date-time)

    Point in time the entity was created.

  • updatedstring (date-time)

    Point in time the entity was last updated.

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/invoice/cash_transaction \
  --header 'x-iw-jwt-token: <TOKEN>'
Response 200 application/json
[
  {
    "id": 42,
    "name": "Beispiel",
    "cash_register": {
      "id": 42,
      "name": "Beispiel",
      "code": "string",
      "is_active": true,
      "locked_through": "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"
    },
    "sequence_number": 1,
    "transaction_date": "2026-10-15T09:30:00+02:00",
    "type": "string",
    "gross_amount": 49.9,
    "tax_rate": 1.5,
    "tax_amount": 49.9,
    "balance_after": 1.5
  }
]

Trägt eine Bewegung ins Kassenbuch ein.

POST/api/invoice/cash_transaction

Laufende Nummer und Bestand vergibt der Dienst; was daran übergeben wird, wird ignoriert.

Request body application/json

  • transaction_datestring (date)
  • typestring

    Allowed: income expense

  • gross_amountnumber
  • tax_ratenumber
  • tax_amountnumber
  • namestring
  • document_numberstring
  • expense_categoryinteger
  • cash_registerinteger

    Pflicht, sobald es mehr als eine Kasse gibt

Responses

201Die eingetragene Bewegung samt neuem Bestand

409Der Bestand würde negativ, oder die Bewegung läge vor der letzten

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/invoice/cash_transaction \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "name": "Büromaterial",
  "transaction_date": "2026-07-31",
  "type": "expense",
  "gross_amount": 23.8,
  "tax_rate": 19,
  "tax_amount": 3.8
}
'

Das Kassenbuch eines Zeitraums samt Anfangs- und Endbestand.

GET/api/invoice/cash_transaction/book

Query parameters

fromstring (date)
tostring (date)

Responses

200Die Bewegungen des Zeitraums mit fortlaufendem Bestand

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/invoice/cash_transaction/book \
  --header 'x-iw-jwt-token: <TOKEN>'

Der aktuelle Kassenbestand - was in der Schublade liegen müsste.

GET/api/invoice/cash_transaction/balance

Responses

200Der Bestand nach der letzten Bewegung

Request
curl --request GET \
  --url https://your-instance.iw-erp.de/api/invoice/cash_transaction/balance \
  --header 'x-iw-jwt-token: <TOKEN>'

Schreibt die Bewegungen eines Zeitraums fest (Kassenabschluss).

POST/api/invoice/cash_transaction/lock

Request body application/json

  • fromstring (date)
  • tostring (date)

Responses

200Wie viele Bewegungen festgeschrieben wurden

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/invoice/cash_transaction/lock \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "from": "2026-10-15",
  "to": "2026-10-15"
}
'

Storniert eine Bewegung durch eine Gegenbewegung.

POST/api/invoice/cash_transaction/{identifier}/reversal

Die ursprüngliche Zeile bleibt stehen. Sie zu entfernen widerspräche der Unveränderbarkeit und risse eine Lücke in die laufende Nummer.

Path parameters

identifierrequiredstring

Request body application/json

  • reasonstring

Responses

201Die Gegenbewegung

Request
curl --request POST \
  --url https://your-instance.iw-erp.de/api/invoice/cash_transaction/42/reversal \
  --header 'content-type: application/json' \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --data '
{
  "reason": "Betrag falsch erfasst"
}
'