Het volledige dossier exporteren
Use case stap voor stap om een boek in PDF, XLSX of CSV en het volledige ZIP-archief van een boekjaar te downloaden, met controle van de vingerafdrukken.
NovaFisko produceert elk boek en elke staat in PDF, XLSX of CSV, en ook een ZIP-archief dat een volledig boekjaar bundelt. Deze gids behandelt beide, en daarna de controle van de SHA-256-vingerafdrukken.
Vereisten: een token met de bevoegdheid read, de public_token van het dossier en de id van het boekjaar (zie Het grootboek lezen).
Stap 1: de catalogus raadplegen
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"}
]
}
]
}
De lijsten zijn ingekort. catalog beschrijft elke export: zijn groep, zijn formaten en zijn eigen parameters.
Beschikbare types
| Groep | Codes |
|---|---|
| Boeken | journals, purchases, sales, financial, miscellaneous, general-ledger |
| Financiële staten | trial-balance, balance-by-period, financial-statements, annual-accounts |
| Btw | vat-summary, vat-declaration, customer-listing, intracom-listing |
| Derden | third-parties, customer-balance, supplier-balance, aged-customers, aged-suppliers, third-party-ledger |
| Vaste activa | fixed-assets |
| Gegevens en controle | accounts, documents, audit-trail |
Stap 2: een export downloaden
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
Parameters
| Parameter | Beschrijving |
|---|---|
format |
pdf, xlsx of csv. Standaard csv |
fiscal_year_id |
Boekjaar. Wanneer het vereist is en ontbreekt, wordt het lopende boekjaar gebruikt |
from, to |
Periode, voor de gedateerde exports |
lang |
fr, nl, en of de. Standaard de taal van het dossier |
account_from, account_to |
Rekeningbereik (general-ledger) |
scheme, general_meeting_date |
Model abbreviated of micro en datum van de algemene vergadering (annual-accounts) |
declaration_id |
Betrokken aangifte (vat-declaration) |
year, period |
Jaar en periode (intracom-listing) |
third_party_id, party_type |
Derde en type customer of supplier (third-party-ledger) |
Headers van het antwoord
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 is de SHA-256-vingerafdruk van de geëxporteerde dataset. Ze is identiek ongeacht het formaat: een pdf en een CSV van dezelfde staat op dezelfde datum dragen dezelfde vingerafdruk. Ze staat ook in de voettekst van de pdf's.
De generatie is synchroon. Een omvangrijk grootboek in PDF kan enkele tientallen seconden duren: stel de time-out van uw client in op 180 seconden. De limiet bedraagt 30 exports per minuut.
Pdf-voorbeeld in een browser
Om een export in een pagina of een iframe te tonen zonder uw token bloot te stellen, vraagt u een ondertekende URL aan die 15 minuten geldig is:
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"
}
Stap 3: het volledige dossier downloaden
Eén enkele request produceert het ZIP-archief van het volledige boekjaar.
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
Het antwoord is van het type application/zip. Voorzie een time-out van 5 minuten. De limiet bedraagt 10 archieven per minuut.
Inhoud van het archief
| Map | Inhoud |
|---|---|
00-Dossier-comptable.pdf |
Voorblad: identiteit, inhoudsopgave met vingerafdrukken, integriteitsattest |
01-Livres |
Dagboeken, grootboek, rekeningenstelsel, audittrail in PDF |
02-Etats-financiers |
Proef- en saldibalans, balans per periode, balans en resultatenrekening, jaarrekening |
03-TVA |
Btw-overzicht, listings en één pdf-aangifte per periode |
04-Tiers |
Lijst, balansen, ouderdomsbalansen, historiek van de derden |
05-Immobilisations |
Staat van de vaste activa en afschrijvingen |
06-Donnees-CSV |
Dezelfde staten in CSV-formaat, bruikbaar in andere software |
07-Banque-CODA |
Oorspronkelijke CODA-bestanden |
08-Pieces |
Stukken die in de importmodule zijn geüpload en index.csv van alle stukken van het boekjaar |
manifest.json |
Inventaris van het archief met de SHA-256-vingerafdruk van elk bestand |
Een staat die niet kan worden geproduceerd, bijvoorbeeld een jaarrekening voor een boekjaar zonder boekingen, wordt overgeslagen en in het manifest vermeld in plaats van het archief te doen mislukken.
Stap 4: de vingerafdrukken controleren
Het bestand manifest.json somt elk bestand van het archief op met zijn pad, zijn grootte en zijn vingerafdruk.
{
"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 heeft de waarde final wanneer het boekjaar is afgesloten, anders provisional. skipped somt de staten op die niet konden worden geproduceerd, met de reden. De CSV-bestanden zijn in UTF-8 met BOM, met puntkomma als scheidingsteken en decimale komma.
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']);
}
}
Elke export wordt getraceerd in het activiteitenlogboek van het dossier met zijn type, zijn formaat en zijn vingerafdruk. U kunt dus later bewijzen dat een bepaald bestand wel degelijk overeenkomt met wat NovaFisko heeft gegenereerd.
Veelvoorkomende fouten
| Status | Oorzaak | Oplossing |
|---|---|---|
404 |
Onbekend exporttype, of boekjaar van een ander dossier | De code in de catalogus nakijken |
422, veld format |
Formaat buiten pdf, xlsx, csv |
De parameter corrigeren |
422, veld fiscal_year_id |
Boekjaar dat niet bij het dossier hoort | GET fiscal-years opnieuw lezen |
429 |
Te veel exports in één minuut | Retry-After seconden wachten |
Een export die over een niet-vergrendelde periode wordt geproduceerd, draagt de vermelding voorlopig document. Voor een definitief document vergrendelt u de periodes of sluit u het boekjaar af voordat u exporteert. Zie Conformiteit van de exports.