bimetricsEntwickler
Zuordnungen

Offenen Betrag einer Zuordnung als Skonto ausgleichen

Als Markdown ansehen

Benötigte Berechtigung:matching:write(Belege und Zahlungen zuordnen)

Echte Wirkung

Ändert Daten der Firma; wird atomar mit Idempotenzbeleg und Herkunft protokolliert.
post/api/match/{id}/cash-discount

Kein Testversand aus der Dokumentation: Dieser Aufruf ist nicht als rein lesend gekennzeichnet. Nutze das Codebeispiel.

Gleicht den offenen Betrag einer Zuordnung als Skonto aus, wie „als Skonto ausgleichen“ in der App, ohne sie vorher aufzuheben. Eine Differenz allein beweist kein Skonto: Rufe das erst auf, wenn der Nutzer die Werte aus previewMatchCashDiscount bestätigt hat. bimetrics ersetzt die Zuordnung in einem Schritt durch eine neue über dieselben Belege und denselben Umsatz und bucht das Skonto mit anteiliger Steuerkorrektur wie beim ersten Zuordnen; replacedMatchId nennt die alte. Belegbetrag und Steuerangaben bleiben, der offene Betrag ist danach null. expectedVersions kommt unverändert aus previewMatchCashDiscount. Eine Wiederholung mit gleichem Schlüssel bucht nichts erneut. Nicht möglich, wenn die Zuordnung nicht passt oder schon ein Skonto ausgeglichen hat (400 CashDiscountNotEligible), bei einem Beleg in Fremdwährung, dessen Euro-Betrag noch fehlt (400 CashDiscountForeignCurrency), und wenn Buchungen schon an DATEV exportiert sind (409 FinalizedBookingsLocked). Andere festgeschriebene Buchungen bleiben stehen; storniert und neu gebucht werden sie nur, wenn sich für DATEV etwas ändert.

Benötigt einen Schlüssel mit der Berechtigung matching:write.

Authentifizierung

headerAuthentifizierungBearer <bm_…>

Empfohlen: Authorization: Bearer bm_…. Der Schlüssel wird nur einmal angezeigt; nie in URLs, Logs oder Frontend-Code ablegen.

Pfadparameter

id*string

ID des Objekts in dieser Firma (UUID).

Formatuuid

Header-Parameter

Idempotency-Key*string

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

Muster^[!-~]+$
Länge1 <= length <= 128

Request-Body

Die Versionen aus der Vorschau

application/json
  1. body

Bestätigt das Skonto genau so, wie die Vorschau es zeigt.

expectedVersions?|

Vollständige Versionsmap aus previewMatchCashDiscount, unverändert.

Antworten

Erfolg.

application/json
  1. response

Die neue Zuordnung und die ersetzte.

match?|

Die neue Zuordnung.

replacedMatchId?string

ID der ersetzten Zuordnung; sie gibt es danach nicht mehr.

Formatuuid
replayed?boolean

True bei sicherer Wiederholung eines bereits erfolgreichen Aufrufs.

reversedFinalizedMonths?array<string>

Monate (YYYY-MM), in denen bimetrics festgeschriebene Buchungen storniert und mit geändertem Datum, Leistungszeitraum, Konto, Steuerkennzeichen oder Betrag neu gebucht hat. Ändert sich nur der Buchungstext oder die Zuordnung, fehlt der Monat. Hast du die Umsatzsteuer-Voranmeldung für einen dieser Monate oder, bei geändertem Datum, für den neuen Monat schon abgegeben, musst du sie womöglich berichtigen. Fehlt, wenn nichts storniert wurde, und bei einer Wiederholung mit demselben Idempotency-Key.

Beispielanfrage
curl --fail-with-body "https://app.bimetrics.de/api/match/497f6eca-6276-4993-bfeb-53cbbbba6f08/cash-discount" \  -H "Authorization: Bearer $BIMETRICS_API_KEY" \  -H "Idempotency-Key: rechnung-2026-001" \  -H "Content-Type: application/json" \  -d '{}'
Beispielantwort
{  "match": {    "amountOpen": 0,    "autoMatch": true,    "bankTransactions": [      {        "bankTransactionId": "a1ba4b85-5bd8-4cef-bbbd-16eaa2c46033",        "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5",        "createdAt": "2026-09-12T07:30:15Z",        "id": "840529df-2d2a-42ea-afa3-3704d855634f",        "matchId": "e21b3d18-17ea-4318-810c-919ec0a94dcb",        "updatedAt": "2026-09-12T07:30:15Z"      }    ],    "category": "payment",    "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5",    "createdAt": "2026-09-12T07:30:15Z",    "documents": [      {        "companyId": "9c388e1f-04a6-4770-80bd-66cd98dd00d5",        "createdAt": "2026-09-12T07:30:15Z",        "documentId": "3026096b-614f-40d3-8749-8acf9b529480",        "id": "3432135f-5b01-4288-9764-e1ff7d061777",        "matchId": "e21b3d18-17ea-4318-810c-919ec0a94dcb",        "updatedAt": "2026-09-12T07:30:15Z"      }    ],    "id": "e21b3d18-17ea-4318-810c-919ec0a94dcb",    "matchingRule": null,    "matchingRuleId": null,    "updatedAt": "2026-09-12T07:30:15Z"  },  "replacedMatchId": "e21b3d18-17ea-4318-810c-919ec0a94dcb",  "replayed": false}

Zuordnung aufheben DELETE

Hebt eine veränderbare Zuordnung auf und berechnet betroffene Buchungen neu. expectedVersions aus delete-preview unverändert mitsenden; die Vorschau nennt dabei gelöschte Serienbelege. Buchungen, die schon an DATEV exportiert sind, sperren die Aufhebung. Andere festgeschriebene Buchungen bleiben stehen. Storno und Neubuchung bucht bimetrics nur dort, wo sich für DATEV etwas ändert: bei einer festgeschriebenen Zahlung immer, weil ihr Konto wechselt, und bei einer Sammelzahlung mit Rest auch bei den Belegen. Eine Wiederholung mit gleichem Schlüssel hebt nichts erneut auf. Benötigt einen Schlüssel mit der Berechtigung `matching:write`.

Skonto einer Zuordnung prüfen GET

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