Zum Inhalt springen
Dokumentation
Deutsch
App öffnen

Die vollständige Akte exportieren

Anwendungsfall Schritt für Schritt, um ein Buch als PDF, XLSX oder CSV sowie das vollständige ZIP-Archiv eines Geschäftsjahres herunterzuladen, mit Prüfung der Prüfsummen.

NovaFisko erzeugt jedes Buch und jede Auswertung als PDF, XLSX oder CSV sowie ein ZIP-Archiv, das ein ganzes Geschäftsjahr zusammenfasst. Dieser Leitfaden behandelt beides und anschließend die Prüfung der SHA-256-Prüfsummen.

Voraussetzungen: ein Token mit der Berechtigung read, das public_token des Mandats und die id des Geschäftsjahres (siehe Das Hauptbuch lesen).

Schritt 1: den Katalog abrufen

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/exports?lang=fr" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"
{
  "types": ["journals", "purchases", "sales", "financial", "miscellaneous", "general-ledger", "trial-balance"],
  "formats": ["pdf", "xlsx", "csv"],
  "default_format": "csv",
  "full_dossier": "zip",
  "groups": [
    {"code": "books", "label": "Livres"},
    {"code": "statements", "label": "États financiers"},
    {"code": "vat", "label": "TVA"},
    {"code": "third_parties", "label": "Tiers"},
    {"code": "assets", "label": "Immobilisations"},
    {"code": "data", "label": "Données"}
  ],
  "common_params": ["format", "fiscal_year_id", "from", "to", "lang"],
  "catalog": [
    {
      "code": "general-ledger",
      "label": "Grand livre",
      "description": "Mouvements de chaque compte avec solde progressif.",
      "group": "books",
      "group_label": "Livres",
      "formats": ["pdf", "xlsx", "csv"],
      "dated": true,
      "requires_fiscal_year": true,
      "params": [
        {"name": "account_from", "label": "Du compte"},
        {"name": "account_to", "label": "Au compte"}
      ]
    }
  ]
}

Die Listen sind gekürzt. catalog beschreibt jeden Export: seine Gruppe, seine Formate und seine eigenen Parameter.

Verfügbare Typen

Gruppe Codes
Bücher journals, purchases, sales, financial, miscellaneous, general-ledger
Finanzauswertungen trial-balance, balance-by-period, financial-statements, annual-accounts
MwSt. vat-summary, vat-declaration, customer-listing, intracom-listing
Geschäftspartner third-parties, customer-balance, supplier-balance, aged-customers, aged-suppliers, third-party-ledger
Anlagen fixed-assets
Daten accounts, documents, audit-trail

Schritt 2: einen Export herunterladen

curl -G "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/exports/general-ledger" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN" \
  -d format=xlsx \
  -d fiscal_year_id=7 \
  -d from=2026-01-01 \
  -d to=2026-09-30 \
  -d lang=fr \
  -D headers.txt \
  -o grand-livre-2026.xlsx

Parameter

Parameter Beschreibung
format pdf, xlsx oder csv. Standardmäßig csv
fiscal_year_id Geschäftsjahr. Ist es erforderlich und fehlt, wird das laufende Geschäftsjahr verwendet
from, to Zeitraum, für datierte Exporte
lang fr, nl, en oder de. Standardmäßig die Sprache des Mandats
account_from, account_to Kontenbereich (general-ledger)
scheme, general_meeting_date Schema abbreviated oder micro und Datum der Generalversammlung (annual-accounts)
declaration_id Betroffene Erklärung (vat-declaration)
year, period Jahr und Periode (intracom-listing)
third_party_id, party_type Geschäftspartner und Typ customer oder supplier (third-party-ledger)

Header der Antwort

HTTP/1.1 200 OK
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Length: 48211
Content-Disposition: attachment; filename="COMPTOIR_general-ledger_2026.xlsx"
X-Export-Fingerprint: 6b1f0c8a9e3d5a7c41f29d0e8b7a6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b

X-Export-Fingerprint ist die SHA-256-Prüfsumme des exportierten Datenbestands. Sie ist unabhängig vom Format identisch: Ein PDF und ein CSV derselben Auswertung zum selben Datum tragen dieselbe Prüfsumme. Sie steht auch in der Fußzeile der PDFs.

Hinweis

Die Erzeugung ist synchron. Ein umfangreiches Hauptbuch als PDF kann mehrere Dutzend Sekunden dauern: Stellen Sie das Timeout Ihres Clients auf 180 Sekunden ein. Das Limit liegt bei 30 Exporten pro Minute.

PDF-Vorschau in einem Browser

Um einen Export in einer Seite oder einem iframe anzuzeigen, ohne Ihr Token offenzulegen, fordern Sie eine signierte URL an, die 15 Minuten gültig ist:

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/exports/trial-balance/preview-url?fiscal_year_id=7" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN"
{
  "url": "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/exports/trial-balance/view?fiscal_year_id=7&format=pdf&by=12&expires=1791190900&signature=4c1d...",
  "expires_in": 900,
  "format": "pdf"
}

Schritt 3: die vollständige Akte herunterladen

Ein einziger Request erzeugt das ZIP-Archiv des gesamten Geschäftsjahres.

curl "https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/exports/full-dossier/7?lang=fr" \
  -H "Authorization: Bearer $NOVAFISKO_TOKEN" \
  --max-time 320 \
  -o COMPTOIR_dossier-complet_2026.zip

Die Antwort hat den Typ application/zip. Sehen Sie ein Timeout von 5 Minuten vor. Das Limit liegt bei 10 Archiven pro Minute.

Inhalt des Archivs

Ordner Inhalt
00-Dossier-comptable.pdf Deckblatt: Identität, Inhaltsverzeichnis mit Prüfsummen, Integritätsbescheinigung
01-Livres Journale, Hauptbuch, Kontenplan, Prüfprotokoll als PDF
02-Etats-financiers Saldenliste, Saldenliste nach Perioden, Bilanz und GuV, Jahresabschluss
03-TVA MwSt.-Übersicht, Listen und eine PDF-Erklärung pro Periode
04-Tiers Liste, Saldenlisten, Altersstrukturen, Hauptbuch der Geschäftspartner
05-Immobilisations Anlagen- und Abschreibungsspiegel
06-Donnees-CSV Dieselben Auswertungen im CSV-Format, von anderer Software verwertbar
07-Banque-CODA Ursprüngliche CODA-Dateien
08-Pieces Im Importer hochgeladene Belege und index.csv aller Belege des Geschäftsjahres
manifest.json Inventar des Archivs mit der SHA-256-Prüfsumme jeder Datei

Eine Auswertung, die sich nicht erzeugen lässt, zum Beispiel ein Jahresabschluss für ein Geschäftsjahr ohne Buchungen, wird übersprungen und im Manifest vermerkt, statt das Archiv scheitern zu lassen.

Schritt 4: die Prüfsummen prüfen

Die Datei manifest.json listet jede Datei des Archivs mit ihrem Pfad, ihrer Größe und ihrer Prüfsumme auf.

{
  "application": "NovaFisko",
  "manifest_version": 2,
  "company": {"code": "COMPTOIR", "name": "Le Comptoir Montois SRL", "legal_form": "SRL", "enterprise_number": "0999.900.134", "vat_number": "BE0999900134", "country_pack": "BE"},
  "fiscal_year": {"code": "2026", "starts_on": "2026-01-01", "ends_on": "2026-12-31", "is_closed": false, "closed_at": null, "periods_locked": 9, "periods_total": 12},
  "status": "provisional",
  "generated_at": "2026-10-05T09:14:22+00:00",
  "generated_by": "Claire Dumont",
  "locale": "fr",
  "hash_algorithm": "sha256",
  "files": [
    {"path": "00-Dossier-comptable.pdf", "bytes": 61220, "sha256": "5e2b..."},
    {"path": "01-Livres/COMPTOIR_general-ledger_2026.pdf", "bytes": 512340, "sha256": "a3f1..."},
    {"path": "06-Donnees-CSV/COMPTOIR_general-ledger_2026.csv", "bytes": 188412, "sha256": "9c0e..."}
  ],
  "integrity": {"periods_locked": 9, "periods_total": 12},
  "skipped": [],
  "csv_format": "CSV UTF-8 BOM ; separator \";\" ; decimal \",\""
}

status hat den Wert final, wenn das Geschäftsjahr abgeschlossen ist, andernfalls provisional. skipped listet die Auswertungen auf, die nicht erzeugt werden konnten, mit dem Grund. Die CSV-Dateien sind in UTF-8 mit BOM, mit Semikolon als Trennzeichen und Dezimalkomma.

import hashlib
import json
import zipfile

with zipfile.ZipFile("COMPTOIR_dossier-complet_2026.zip") as archive:
    manifest = json.loads(archive.read("manifest.json"))
    for item in manifest["files"]:
        digest = hashlib.sha256(archive.read(item["path"])).hexdigest()
        # Any mismatch means the file changed after the archive was built
        assert digest == item["sha256"], f"Fingerprint mismatch: {item['path']}"

print(len(manifest["files"]), "files verified")
$zip = new ZipArchive();
$zip->open('COMPTOIR_dossier-complet_2026.zip');
$manifest = json_decode($zip->getFromName('manifest.json'), true);

foreach ($manifest['files'] as $item) {
    if (! hash_equals($item['sha256'], hash('sha256', $zip->getFromName($item['path'])))) {
        throw new RuntimeException('Fingerprint mismatch: '.$item['path']);
    }
}
Tipp

Jeder Export wird im Aktivitätsprotokoll des Mandats mit seinem Typ, seinem Format und seiner Prüfsumme festgehalten. Sie können daher später nachweisen, dass eine bestimmte Datei tatsächlich dem entspricht, was NovaFisko erzeugt hat.

Häufige Fehler

Status Ursache Korrektur
404 Unbekannter Exporttyp oder Geschäftsjahr eines anderen Mandats Den Code im Katalog prüfen
422, Feld format Format außerhalb von pdf, xlsx, csv Den Parameter korrigieren
422, Feld fiscal_year_id Geschäftsjahr gehört nicht zum Mandat GET fiscal-years erneut lesen
429 Zu viele Exporte in einer Minute Retry-After Sekunden warten
Achtung

Ein Export über eine nicht gesperrte Periode trägt den Vermerk eines vorläufigen Dokuments. Für ein endgültiges Dokument sperren Sie die Perioden oder schließen Sie das Geschäftsjahr ab, bevor Sie exportieren. Siehe Konformität der Exporte.

Siehe auch