# Skonto einer Zuordnung prüfen (https://developer.bimetrics.de/reference/matches/preview-match-cash-discount)

`GET https://app.bimetrics.de/api/match/{id}/cash-discount-preview`

operationId: `previewMatchCashDiscount` · Berechtigung (Scope): `read` · Bereich: Zuordnungen

Sagt, ob sich der offene Betrag einer Zuordnung als Skonto ausgleichen lässt, und liefert, was der Nutzer vorher bestätigt: Belegnummer, Verwendungszweck, Belegbetrag, Zahlung, Skonto und Prozent. `reference.otherNumbers` nennt Nummern im Verwendungszweck, die wie eine Belegnummer aussehen, wenn die eigene dort fehlt: Die Zahlung kann zu einem anderen Beleg gehören. Es gilt dieselbe Prüfung wie beim ersten Zuordnen: ein gebuchter Euro-Umsatz und genau ein Beleg, bei erhaltenem Skonto auch mehrere Eingangsbelege desselben Lieferanten mit einem Steuersatz; höchstens 5 % Differenz und keine ausgeschlossene Kategorie oder Steuerart. Bei mehreren Belegen nennt `cashDiscount.documents` den Anteil jedes Belegs, anteilig nach Betrag, und `reference.documents` ihre Nummern. Liegt die Zahlung höchstens 5 % unter den Eingangsbelegen und gibt es trotzdem kein Skonto, sagt `reason` warum: `supplier`, `category`, `taxRates` oder `documentAmount`. Ist der Beleg in einer Fremdwährung und fehlt sein Euro-Betrag noch, ist die Differenz meist der Wechselkurs: dann kein Skonto (`CashDiscountForeignCurrency`). Passt die Zuordnung nicht, antwortet die API mit `eligible: false` und nennt in `refusal` den Code. Verändert nichts.

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 Objekts in dieser Firma (UUID). |

### Beispiel

```sh
curl --fail-with-body "https://app.bimetrics.de/api/match/{id}/cash-discount-preview" \
  -H "Authorization: Bearer $BIMETRICS_API_KEY"
```

### Antworten

| Status | Beschreibung | Inhalt |
| --- | --- | --- |
| 200 | Erfolg. | `application/json`: CashDiscountPreview |
| 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 (`CashDiscountPreview`)

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `cashDiscount` | CashDiscountSnapshot | Das Skonto, das bimetrics buchen würde: `basisAmount` ist der Belegbetrag, `payableAmount` die Zahlung. |
| `eligible` | boolean | True, wenn `settleMatchCashDiscount` das Skonto jetzt ausgleichen kann. |
| `expectedVersions` | object | Für `settleMatchCashDiscount`, unverändert. |
| `exportedBookings` | boolean | True, wenn beteiligte Buchungen schon an DATEV exportiert sind. Über die API steht `eligible` dann auf false. In der App bleiben die Buchungen stehen, und das Skonto kommt mit dem Datum der Zahlung dazu. DATEV bekommt es erst, wenn der Monat der Zahlung noch einmal exportiert wird. |
| `finalizedBookings` | boolean | True, wenn beteiligte Buchungen festgeschrieben sind. Sie bleiben stehen, Storno und Neubuchung entstehen nur, wenn sich für DATEV etwas ändert. Das Skonto ist eine neue Buchung im Monat der Zahlung; eine schon abgegebene Umsatzsteuer-Voranmeldung für diesen Monat kann eine Berichtigung brauchen. |
| `reason` | string | Bei `eligible: false`, obwohl die Zahlung höchstens 5 % unter den Eingangsbelegen liegt: warum es kein Skonto gibt, `supplier` (verschiedene Lieferanten oder kein Kontakt), `category` (eine Position ohne Skonto, etwa Gebühren), `taxRates` (mehrere Belege mit verschiedenen Steuersätzen) oder `documentAmount` (die Differenz entspricht genau einem Beleg). |
| `reference` | CashDiscountReference | Was der Nutzer vor dem Bestätigen vergleicht. |
| `refusal` | string | Bei `eligible: false`: der Fehlercode, mit dem der Aufruf abgelehnt würde. |

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