Kassenbuch-Einträge buchen
Benötigte Berechtigung:matching:write(Belege und Zahlungen zuordnen)
Echte Wirkung
/api/cash-books/{id}/entriesKein Testversand aus der Dokumentation: Dieser Aufruf ist nicht als rein lesend gekennzeichnet. Nutze das Codebeispiel.
Bucht einen oder bis zu 20 Einträge ins Kassenbuch, jeden mit der nächsten Nummer seines Jahres. Ohne Beleg gibt es: eine Ausgabe mit Eigenbeleg (expense mit category und ownReceipt, ohne Vorsteuer), Geld privat eingelegt oder entnommen (private_in, private_out; bei GmbH und UG über das Gesellschafter-Verrechnungskonto und nur bis zu dem Betrag, den die Firma den Gesellschaftern schuldet) und Geld zwischen Geschäftskonto und Kasse (transit_in, transit_out, über Geldtransit). Mit documentId bucht der Eintrag die Barzahlung dieses Belegs, wie POST /api/match/payment mit cashBookId; er geht dann allein. Einnahmen gibt es nur mit Beleg, einzelne Barverkäufe nie: bimetrics ist keine Registrierkasse. Der Bestand darf nach keiner Buchung unter 0 € fallen, gerechnet in der Reihenfolge des Kassenbuchs (Tag, dann Erfassung); die Ablehnung nennt die erste Buchung, für die das Geld nicht reicht. expectedBalanceMinor schützt vor einer Änderung dazwischen. Buchen dürfen Inhaber und Nutzer, nicht die Steuerberatung (403 CashBookOwnerOnly). Bei einer Wiederholung schickst du denselben Idempotency-Key.
Benötigt einen Schlüssel mit der Berechtigung matching:write.
AuthentifizierungBearer <bm_…>Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.
id*stringID des Kassenbuchs (UUID).
uuidIdempotency-Key*stringStabiler Schlüssel für genau diese Änderung: 1–128 druckbare ASCII-Zeichen ohne Leerzeichen. Bei Wiederholungen denselben Schlüssel und unveränderten Inhalt senden; das Ergebnis wird nicht nochmals erzeugt.
^[!-~]+$1 <= length <= 128the entries; expectedBalanceMinor from the last read
application/json- body
Einträge fürs Kassenbuch.
entries?array<>|Ein bis 20 Einträge; einer mit Beleg geht allein.
expectedBalanceMinor?integerDer zuletzt gelesene Bestand in Cent. Weicht der Bestand ab, antwortet die Route mit 409 CashBookRejected und bucht nichts.
Erfolg.
application/json- response
Gebuchte oder geprüfte Einträge.
balanceMinor?integerGeld in der Kasse danach, in Cent.
bookings?array<>Nur in der Vorschau: die Buchungszeilen der Einträge ohne Beleg.
entries?array<>|Die Einträge; bei einer Wiederholung mit demselben Idempotency-Key leer.
exported?booleanNur in der Vorschau: true, wenn ein Eintrag in einem Zeitraum liegt, der schon an DATEV exportiert ist. Er kommt dann erst mit, wenn die Firma den Monat noch einmal exportiert.
replayed?booleantrue bei einer Wiederholung.
curl --fail-with-body "https://app.bimetrics.de/api/cash-books/497f6eca-6276-4993-bfeb-53cbbbba6f08/entries" \ -H "Authorization: Bearer $BIMETRICS_API_KEY" \ -H "Idempotency-Key: rechnung-2026-001" \ -H "Content-Type: application/json" \ -d '{}'{ "balanceMinor": 15000, "entries": [ { "amountMinor": -5000, "cashBookId": "7c2e9a41-5b3d-4f08-9e61-2d8a4c7f1b39", "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5", "createdAt": "2026-11-13T09:05:00Z", "entryDate": { "day": 12, "month": 11, "year": 2026 }, "id": "3f1d2c7a-8b9e-4a51-b6c2-0e4f8a9d7b13", "kind": "private_out", "number": "KB-2026-0002", "origin": "api", "text": "Privatentnahme", "updatedAt": "2026-11-13T09:05:00Z", "year": 2026 } ]}Monat eines Kassenbuchs lesen GET
Liefert einen Monat des Kassenbuchs: den Bestand davor (`openingMinor`) und danach (`closingMinor`) und die Tage mit Einträgen, je mit Anfangs- und Endbestand. Die Einträge eines Tages stehen in der Reihenfolge ihrer Erfassung. Jeder Eintrag hat eine Nummer, die je Kassenbuch und Jahr lückenlos zählt (`KB-2026-0001`, bei weiteren Kassenbüchern `KB-A-2026-0001`). Einträge werden nie geändert oder gelöscht; ein Fehler wird storniert. Benötigt einen Schlüssel mit der Berechtigung `read`.
Kassenbuch-Einträge prüfen POST
Prüft Einträge wie `POST /api/cash-books/{id}/entries` und sagt, was sie buchen würden (`bookings`) und wie viel Geld danach in der Kasse ist, ohne etwas zu schreiben. Die Nummern heißen in der Vorschau `neu`. Benötigt einen Schlüssel mit der Berechtigung `read`.