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.
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']);
}
}
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 |
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.