# Kassenbücher lesen (https://developer.bimetrics.de/reference/cash-book/list-cash-books)

`GET https://app.bimetrics.de/api/cash-books`

operationId: `listCashBooks` · Berechtigung (Scope): `read` · Bereich: Kassenbuch

Liefert alle Kassenbücher der Firma, auch stillgelegte, mit Art, Name, Kassenkonto, Beginn, Anfangsbestand samt Herkunft und dem Bestand jetzt (`balanceMinor`, in Cent). Ohne Kassenbuch ist die Liste leer.

Benötigt einen Schlüssel mit der Berechtigung `read`.

### Authentifizierung

`Authorization: Bearer bm_…` (alternativ `X-API-KEY: bm_…`, nie beide zugleich).

### Beispiel

```sh
curl --fail-with-body "https://app.bimetrics.de/api/cash-books" \
  -H "Authorization: Bearer $BIMETRICS_API_KEY"
```

### Antworten

| Status | Beschreibung | Inhalt |
| --- | --- | --- |
| 200 | Erfolg. | `application/json`: Array<CashBook> |
| 400 | Ungültige Anfrage, z. B. ein Parameter mit ungültigem Wert wie eine ID, die keine UUID ist; korrigieren statt wiederholen. Mehr unter [Fehler](https://developer.bimetrics.de/errors). | `application/json`: Error |
| 401 | Kein gültiger Schlüssel: fehlt (`Unauthorized`), ist unbekannt, abgelaufen oder widerrufen oder wurde nicht in genau einem Header gesendet (`InvalidAPIKey`). Schlüssel prüfen, nicht wiederholen. Auch eine ID, die zu einer anderen Firma gehört, ergibt `401 Unauthorized`. | `application/json`: Error |
| 403 | Dem Schlüssel fehlt die Berechtigung für diese Route (`APIKeyPermissionDenied`), oder die Firma hat keinen API-Zugang (mehr), etwa nach Ende der Testphase oder des Abos (`APIUnavailable`). | `application/json`: Error |
| 413 | Die Anfrage ist zu groß (`APIRequestTooLarge`), siehe `x-bimetrics-limits`. | `application/json`: Error |
| 429 | Zu viele Anfragen; nach `Retry-After` Sekunden erneut senden. Mehr unter [Fehler](https://developer.bimetrics.de/errors). (Header: Retry-After) | `application/json`: Error |
| 500 | Serverfehler; die Anfrage später wiederholen. Mehr unter [Fehler](https://developer.bimetrics.de/errors). | `application/json`: Error |

#### Felder der Antwort 200

Array aus `CashBook`.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `account` | integer | Kassenkonto im Kontenrahmen der Firma: 1000, 1010 oder 1020 in SKR03, 1600, 1610 oder 1620 in SKR04. |
| `archivedAt` | string (date-time) | Stillgelegt seit diesem Zeitpunkt. Fehlt, solange das Kassenbuch in Gebrauch ist. |
| `balanceMinor` | integer | Geld, das jetzt in der Kasse sein muss, in Cent. |
| `companyId` | string (uuid) | ID der Firma. |
| `createdAt` | string (date-time) | Anlage in bimetrics. |
| `id` | string (uuid) | ID des Kassenbuchs. |
| `kind` | string: `petty`, `shop`, `register` | `petty` für eine Handkasse. `shop` (offene Ladenkasse) und `register` (Kassensystem mit TSE) lehnt das Anlegen vorerst mit `400` und Feld `kind` ab, bis bimetrics ihre Tageseinnahmen kann. |
| `name` | string | Name, höchstens 60 Zeichen und eindeutig unter den Kassenbüchern in Gebrauch, etwa „Werkstattkasse“. |
| `numberPrefix` | string | Anfang der Nummern seiner Einträge: `KB` beim ersten Kassenbuch der Firma, bei weiteren `KB-` und ein Buchstabe. |
| `openingBalanceMinor` | integer | Geld in der Kasse zu Beginn von `startDate`, in Cent, höchstens 100000000 (1.000.000 €). |
| `openingContraAccount` | integer | Gegenkonto des Anfangsbestands, beim Anlegen aus Kontenrahmen und Rechtsform bestimmt und danach fest: Privateinlage, Gesellschafter-Verrechnung oder Geldtransit; `0` bei `carried_forward`. Fehlt bei einem Anfangsbestand von 0. |
| `openingPerson` | string | Wer den Anfangsbestand eingelegt hat, bei Herkunft `deposit`; steht auf dem Eigenbeleg des Anfangsbestands. |
| `openingSource` | string: `deposit`, `bank`, `carried_forward` | Herkunft des Anfangsbestands: `deposit` (eigenes Geld des Inhabers bzw. der Gesellschafter), `bank` (vom Geschäftskonto geholt, als Geldtransit) oder `carried_forward` (steht schon in der Buchhaltung oder die Steuerberatung bucht den Betrag selbst, bimetrics bucht nichts). Fehlt bei einem Anfangsbestand von 0. |
| `startDate` | NaiveDate | Erster Tag, für den das Kassenbuch den Bestand führt. |
| `updatedAt` | string (date-time) | Letzte Änderung. |

Verschachtelte Schemas stehen vollständig in der OpenAPI-Beschreibung: https://app.bimetrics.de/api/openapi.json
