---
title: "Kontoauszug prüfen (camt.052/053/054, camt.086)"
method: POST
path: "/statements/validate"
tags: ["Kontoauszüge"]
---

# Kontoauszug prüfen (camt.052/053/054, camt.086)

`POST /statements/validate`

## Request

- Base URL: `https://finisma.de/api/v1`
- URL: `https://finisma.de/api/v1/statements/validate`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://finisma.de/api/oauth/authorize`, token URL `https://finisma.de/api/oauth/token`, scopes: `invoice:verify`, `invoice:create`)

Prüft camt.052, camt.053 und camt.054 (Versionen .02 und .08) sowie camt.086 (.01 bis .05), einzeln oder mehrere Dateien als ZIP. Je Datei: Nachricht, Version, Befunde der Prüfregeln (Salden, Summen, IBAN-Prüfziffern, Reihenfolge, bei camt.086 Menge mal Preis und Steuern), Schemaprüfung gegen das ISO-Schema mit Zeile und Spalte, Urteil; dazu ein Gesamturteil. Nichts wird gespeichert. Kostenlos bis 5 Aufrufe pro Tag und Konto. Mit dem Zahlungsverkehr-Abo (Feature payments) ohne Limit. Ohne Abo kauft 1 Credit einen Prüfblock mit 10 weiteren Prüfungen (für Zahlungsdateien und Kontoauszüge gemeinsam, ohne Ablaufdatum). Ein Konto (API-Key oder OAuth) ist immer nötig.

## Request body

- object
  - `xml` string: Die Datei als XML-Text (max. 10 MB). Alternativ 'file_base64'.
  - `file_base64` string, byte: Die Datei Base64-kodiert: eine XML-Datei oder ein ZIP mit mehreren XML-Dateien (max. 10 MB). Alternativ 'xml'.
  - `filename` string: Optionaler Dateiname, erscheint in den Meldungen.

## Response `200`

Ergebnis; billing nennt, womit bezahlt wurde.

- object
  - `summary` string, required: Kurzfassung des Ergebnisses.
  - `result` object, required
    - `files` object[], required
      - `name` string, required
      - `message` 'camt.052' | 'camt.053' | 'camt.054' | 'camt.086', required
      - `version` string, required: Schema-Version, z. B. 08.
      - `statements` integer
      - `items` integer: Buchungen bzw. Services (camt.086).
      - `findings` object[], required
        - `code` string, required: Maschinencode der Prüfregel.
        - `severity` 'error' | 'warning' | 'info', required
        - `message` string, required: Deutsche Meldung.
        - `path` string: Punkt-Pfad in das gelesene Modell.
      - `xsd` object, required: Schemaprüfung über den Validierungsdienst. available=false heißt: nicht verfügbar, das Urteil beruht dann nur auf den Prüfregeln.
        - `available` boolean, required
        - `ruleset` string, required: Prüfgrundlage, z. B. iso.20022:camt053:08.
        - `valid` boolean
        - `verdict` 'valid' | 'valid_with_warnings' | 'invalid'
        - `errorCount` integer
        - `warningCount` integer
        - `findings` object[]
          - `code` string, required
          - `severity` 'error' | 'warning' | 'info', required
          - `message` string, required
          - `line` integer, nullable
          - `column` integer, nullable
          - `location` string, nullable
        - `note` string
      - `verdict` 'valid' | 'valid_with_warnings' | 'invalid', required
    - `deliveryFindings` object[], required
      - `code` string, required: Maschinencode der Prüfregel.
      - `severity` 'error' | 'warning' | 'info', required
      - `message` string, required: Deutsche Meldung.
      - `path` string: Punkt-Pfad in das gelesene Modell.
    - `skipped` object[], required: Dateien im ZIP-Archiv, die keine unterstützte camt-Datei sind.
      - `name` string, required
      - `reason` string, required
    - `verdict` 'valid' | 'valid_with_warnings' | 'invalid', required
    - `schemaChecked` boolean: false, wenn die Schemaprüfung für mindestens eine Datei nicht verfügbar war.
    - `billing` object, required: Womit der Aufruf bezahlt wurde: free_quota (Freikontingent), subscription (Zahlungsverkehr-Abo), check_block (Prüfblock: 1 Credit für 10 Prüfungen) oder credit (Guthaben).
      - `via` 'free_quota' | 'subscription' | 'check_block' | 'credit', required
      - `freeRemaining` integer, nullable, required: Verbleibende kostenlose Aufrufe im laufenden Zeitraum (Europe/Berlin); beim Abo null.
      - `freePeriod` 'day' | 'month', required: Zeitraum des Freikontingents: day beim Prüfen, month beim Auslesen.
      - `checkBlockRemaining` integer: Nur bei via check_block: offene Prüfungen im Prüfblock nach diesem Aufruf.
      - `creditsCharged` integer: Abgebuchte Credits: bei via credit und beim Kauf eines neuen Prüfblocks.
      - `refunded` boolean: true, wenn der Aufruf zurückgebucht wurde, weil die Schemaprüfung nicht erreichbar war.

## Other responses

- `400`: Keine Datei, kein unterstütztes Format oder eine nicht unterstützte Version (code invalid_input). Abgewiesene Dateien kosten nichts.
- `401`: Kein oder ungültiges Credential.
- `402`: Tageskontingent (5 pro Tag) aufgebraucht, keine offene Prüfung im Prüfblock, kein Zahlungsverkehr-Abo und kein Guthaben (code payment_required). Retry-After nennt die Sekunden bis zum Neubeginn des Kontingents (Mitternacht, Europe/Berlin).
- `413`: Datei größer als 10 MB (code payload_too_large).
- `429`: Rate-Limit (30/min je Key).
- `502`: Fehler im nachgelagerten Dienst.

---

[API](https://skmtc.dev/finisma/apis/finisma-rest-api.md) · [All operations](https://skmtc.dev/finisma/apis/finisma-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/finisma/apis/finisma-rest-api/revisions/c1a9acfab69b?raw)
