Dokumentation

Duplikatprüfung

Rechnungen mit hohem Duplikatrisiko klären, damit ein blockierter DATEV-Export wieder läuft.


Eine Rechnung, die von der Duplikaterkennung mit 0.85 oder höher bewertet wird, blockiert den DATEV-CSV-Export, bis eine Person darüber entscheidet. Die Duplikatprüfung hält diese Entscheidung fest — und nur sie hebt die Blockade auf.

Die Entscheidung löscht, verschmilzt oder ändert keine Rechnungsdaten. Sie hält lediglich fest, was die Rechnung ist.

Warum ein Export blockiert

Jede Rechnung, die in einem Tarif mit Intelligence-Funktionen gespeichert wird, trägt einen bei der Extraktion gegen Ihre jüngsten Rechnungen berechneten Duplikat-Score. Eine Rechnung blockiert einen DATEV-Export, wenn beides zutrifft:

  • ihr Duplikatrisiko liegt bei 0.85 oder höher und
  • es liegt noch keine Prüfentscheidung vor — der Prüfstatus fehlt oder lautet pending.

Eine einzige blockierende Rechnung lässt den gesamten Export scheitern. Es entsteht keine Teil-CSV: Eine ins DATEV gebuchte Doppelrechnung wird doppelt verbucht, deshalb scheitert der Export lieber ganz, als stillschweigend eine Zeile wegzulassen.

Die Ablehnung ist ein 409:

{
  "error": {
    "code": "datev_export_blocked",
    "message": "Der DATEV-Export ist blockiert, weil mögliche Doppelrechnungen geprüft werden müssen. Klären oder klassifizieren Sie diese vor dem Export.",
    "blocking_invoice_count": 2,
    "blocking_invoice_ids": [
      "6f1c2b8e-0f2a-4a1d-9c47-7b4e1f2a3d55",
      "b3d9a1c4-52e7-4f08-8c3b-1a9d6e5f0c22"
    ]
  }
}

Zurückgegeben werden ausschließlich Ihre eigenen Rechnungs-IDs — niemals Lieferantennamen, Beträge oder Belegnummern.

Die Prüfliste gibt es nur im Dashboard

Die Liste, die blockierte Rechnungen den zugehörigen Duplikatkandidaten gegenüberstellt, ist nicht Teil der öffentlichen API. GET /v1/internal/user/invoices/duplicate-review-queue ist eine interne Route: Sie ist aus dem OpenAPI-Schema ausgenommen und authentifiziert sich mit der internen Berechtigung des Dashboards, nicht mit Ihrem API-Schlüssel.

Im Dashboard finden Sie sie unter Einstellungen → Sicherheit im Abschnitt Datenexport, wo ein blockierter DATEV-Export den Prüfdialog für die genannten Rechnungen öffnet.

Der Entscheidungs-Endpunkt weiter unten ist öffentlich. Eine Integration, die bereits weiß, welche Rechnungen blockieren — die blocking_invoice_ids des Exports sagen es ihr —, kann sie also ohne Dashboard klären. Was über die öffentliche API nicht geht, ist der Abruf der Gegenüberstellung, die das Dashboard zeigt.

Eine Entscheidung festhalten

PATCH /v1/invoices/{invoice_id}/duplicate-review hält die Entscheidung fest. Der Endpunkt authentifiziert sich mit Ihrem API-Schlüssel und ist nicht an einen Tarif gebunden: Der DATEV-Export selbst setzt Pro oder Business voraus, aber jeder authentifizierte Eigentümer kann eine Blockade auflösen.

curl -X PATCH "https://api.parsurai.com/v1/invoices/6f1c2b8e-0f2a-4a1d-9c47-7b4e1f2a3d55/duplicate-review" \
  -H "X-API-Key: $PARSURAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "confirmed_duplicate",
    "note": "Vom Lieferanten am 12. Juni erneut versandt.",
    "duplicate_of_invoice_id": "b3d9a1c4-52e7-4f08-8c3b-1a9d6e5f0c22"
  }'
FeldTypPflichtBeschreibung
statusstringJaDie Entscheidung. pending wird abgelehnt — das ist keine Entscheidung
notestringNeinFreitext, höchstens 1000 Zeichen
duplicate_of_invoice_idUUIDBedingtPflicht bei confirmed_duplicate, bei jedem anderen Status abgelehnt
{
  "invoice_id": "6f1c2b8e-0f2a-4a1d-9c47-7b4e1f2a3d55",
  "duplicate_review_status": "confirmed_duplicate",
  "duplicate_reviewed_at": "2026-06-14T09:12:44Z",
  "duplicate_of_invoice_id": "b3d9a1c4-52e7-4f08-8c3b-1a9d6e5f0c22"
}

Entscheidungen und ihre Wirkung

StatusBedeutungWirkung auf den nächsten DATEV-Export
confirmed_duplicateDiese Rechnung dupliziert eine andere Rechnung von IhnenHebt die Blockade auf; diese Rechnung erzeugt keine Buchungszeile
confirmed_not_duplicateDer Treffer ist ein FehlalarmHebt die Blockade auf; diese Rechnung wird normal exportiert
excluded_from_exportRechnung behalten, aber nie verbuchenHebt die Blockade auf; diese Rechnung erzeugt keine Buchungszeile
pending—Abgelehnt: Eine Rechnung kann nicht auf „pending“ zurückgesetzt werden

Nutzen Sie excluded_from_export, wenn die Rechnung nicht verbucht werden soll, Sie aber die duplizierte Rechnung nicht benennen können. confirmed_duplicate verlangt diese ID immer.

Eine vom Export ausgenommene Rechnung bleibt in Ihrem Workspace unangetastet — sie fällt aus dem Stapel, wird aber nicht gelöscht.

Fehlerbehandlung

StatusCodeTypische Ursache
404—Die Rechnung liegt nicht in Ihrem Workspace
422invalid_duplicate_reviewstatus ist pending
422invalid_duplicate_reviewconfirmed_duplicate ohne duplicate_of_invoice_id
422invalid_duplicate_reviewduplicate_of_invoice_id mit einem anderen Status gesendet
422invalid_duplicate_reviewduplicate_of_invoice_id verweist auf die Rechnung selbst
422invalid_duplicate_reviewduplicate_of_invoice_id gehört nicht zu Ihren Rechnungen

Eine referenzierte fremde Rechnung wird als „nicht gefunden“ gemeldet, nicht als „nicht Ihre“. Der Endpunkt taugt damit nicht, um Rechnungs-IDs fremder Workspaces zu erraten.

Klären Sie die gesamte Liste aus blocking_invoice_ids, bevor Sie den Export erneut starten. Eine einzige offene Rechnung lässt den Stapel wieder scheitern — einzeln abzuarbeiten kostet also einen abgelehnten Export pro Rechnung.