# Ausgestellte Rechnungskorrektur vollständig aufheben (https://developer.bimetrics.de/reference/sales/cancel-invoice-correction)

`POST https://app.bimetrics.de/api/draft/{id}/correction/cancel`

operationId: `cancelInvoiceCorrection` · Berechtigung (Scope): `invoices:finalize` · Bereich: Ausgangsrechnungen

Erstellt und stellt einen positiven Gegenbeleg correction_reversal zur ausdrücklich gewählten Korrektur aus. Die ursprüngliche Rechnung und beide Korrekturbelege bleiben erhalten. Erzeugt Gegenbuchungen, keine Auszahlung oder Abbuchung. expectedUpdatedAt bezeichnet den ausgestellten Korrekturentwurf.

Benötigt einen Schlüssel mit der Berechtigung `invoices:finalize`.

> **Achtung:** Ändert Daten der Firma; wird atomar mit Idempotenzbeleg und Herkunft protokolliert.
>
> KI-Agenten fragen vor diesem Aufruf beim Nutzer nach.

### 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 dieser Firma (UUID); bei Forderungsständen und neuen Korrekturen die Quellentwurfs-ID. |
| `Idempotency-Key` | header | ja | 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. |

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

 

Schema `VersionCommand`.

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `expectedUpdatedAt` | string (date-time), kann null sein | Exakter zuletzt gelesener updatedAt-Wert einschließlich Sekundenbruchteilen. |

### Beispiel

```sh
curl --fail-with-body "https://app.bimetrics.de/api/draft/{id}/correction/cancel" \
  -H "Authorization: Bearer $BIMETRICS_API_KEY" \
  -H "Idempotency-Key: rechnung-2026-001" \
  -H "Content-Type: application/json" \
  -d '{"kind":"and","children":[],"limit":50,"offset":0}'
```

### Antworten

| Status | Beschreibung | Inhalt |
| --- | --- | --- |
| 200 | Erfolg. | `application/json`: FinalizeReturn |
| 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 aktiven Tarif mit API-Zugang, etwa in der Testphase oder nach Ende des Abos (`APIUnavailable`). | `application/json`: Error |
| 404 | Nicht gefunden (`NotFound`). | `application/json`: Error |
| 409 | Versionskonflikt (VersionConflict), abweichender Inhalt für denselben Idempotency-Key (IdempotencyConflict), Dublette (ContactDuplicate) oder fachlich gesperrte Änderung. Aktuellen Zustand laden und prüfen; keinen anderen Schlüssel verwenden, um einen Konflikt zu umgehen. | `application/json`: Error |
| 413 | Die Anfrage ist zu groß (`APIRequestTooLarge`), siehe `x-bimetrics-limits`. | `application/json`: Error |
| 422 | Die Rechnung lässt sich so nicht abschließen oder stornieren: Die Anschrift von Firma oder Kunde ist unvollständig (`InvoiceAddressRequired`, `context.field` ist `company.address`, `buyer.name` oder `buyer.address`), der Steuerfall hat ein blockierendes Problem (`TaxCaseInvalid`, mit `context.code`, `context.field` und `context.problems` wie bei der Entwurfsprüfung), oder die E-Rechnung besteht die Prüfung nicht (`InvoiceValidationFailed`). Entwurf oder Stammdaten korrigieren statt wiederholen. | `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 (`FinalizeReturn`)

| Feld | Typ | Beschreibung |
| --- | --- | --- |
| `document` | Document | Ausgestellter Rechnungs-, Korrektur-, Gegen- oder Stornobeleg. |
| `orderConfirmation` | OrderConfirmation | Ausgestellte Auftragsbestätigung ohne Buchung oder XML. |

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