# Kassenbuch-Einträge prüfen (https://developer.bimetrics.de/reference/cash-book/preview-cash-book-entries)

`POST https://app.bimetrics.de/api/cash-books/{id}/entries/preview`

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

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`.

### Authentifizierung

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

### Parameter

| Name | Ort | Pflicht | Typ | Beschreibung |
| --- | --- | --- | --- | --- |
| `id` | path | ja | string (uuid) | ID des Kassenbuchs (UUID). |

### Request-Body (`application/json`)

the entries

Schema `CashBookEntriesRequest`.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `entries` | Array<CashBookEntryRequest>, kann null sein | Ein bis 20 Einträge; einer mit Beleg geht allein. |
| `expectedBalanceMinor` | integer | Der zuletzt gelesene Bestand in Cent. Weicht der Bestand ab, antwortet die Route mit `409 CashBookRejected` und bucht nichts. |

### Beispiel

```sh
curl --fail-with-body "https://app.bimetrics.de/api/cash-books/{id}/entries/preview" \
  -H "Authorization: Bearer $BIMETRICS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"and","children":[],"limit":50,"offset":0}'
```

### Antworten

| Status | Beschreibung | Inhalt |
| --- | --- | --- |
| 200 | Erfolg. | `application/json`: CashBookEntriesResult |
| 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 |
| 404 | Nicht gefunden (`NotFound`). | `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 (`CashBookEntriesResult`)

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `balanceMinor` | integer | Geld in der Kasse danach, in Cent. |
| `bookings` | Array<CashBookEntryBooking> | Nur in der Vorschau: die Buchungszeilen der Einträge ohne Beleg. |
| `entries` | Array<CashBookEntry>, kann null sein | Die Einträge; bei einer Wiederholung mit demselben Idempotency-Key leer. |
| `exported` | boolean | Nur 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` | boolean | `true` bei einer Wiederholung. |

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