Exporter le dossier complet
Cas d'usage pas à pas pour télécharger un livre comptable en PDF, XLSX ou CSV et l'archive ZIP complète d'un exercice, avec vérification des empreintes.
NovaFisko produit chaque livre et chaque état en PDF, XLSX ou CSV, ainsi qu'une archive ZIP qui réunit tout un exercice. Ce guide couvre les deux, puis la vérification des empreintes SHA-256.
Prérequis : un jeton avec la capacité read, le public_token du dossier et l'id de l'exercice (voir Lire le grand livre).
Étape 1 : consulter le catalogue
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"}
]
}
]
}
Les listes sont abrégées. catalog décrit chaque export : son groupe, ses formats et ses paramètres propres.
Types disponibles
| Groupe | Codes |
|---|---|
| Livres | journals, purchases, sales, financial, miscellaneous, general-ledger |
| États financiers | trial-balance, balance-by-period, financial-statements, annual-accounts |
| TVA | vat-summary, vat-declaration, customer-listing, intracom-listing |
| Tiers | third-parties, customer-balance, supplier-balance, aged-customers, aged-suppliers, third-party-ledger |
| Immobilisations | fixed-assets |
| Données | accounts, documents, audit-trail |
Étape 2 : télécharger un export
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
Paramètres
| Paramètre | Description |
|---|---|
format |
pdf, xlsx ou csv. Par défaut csv |
fiscal_year_id |
Exercice. Quand il est requis et absent, l'exercice en cours est utilisé |
from, to |
Période, pour les exports datés |
lang |
fr, nl, en ou de. Par défaut, la langue du dossier |
account_from, account_to |
Plage de comptes (general-ledger) |
scheme, general_meeting_date |
Schéma abbreviated ou micro et date d'assemblée (annual-accounts) |
declaration_id |
Déclaration visée (vat-declaration) |
year, period |
Année et période (intracom-listing) |
third_party_id, party_type |
Tiers et type customer ou supplier (third-party-ledger) |
En-têtes de la réponse
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 est l'empreinte SHA-256 du jeu de données exporté. Elle est identique quel que soit le format : un PDF et un CSV du même état à la même date portent la même empreinte. Elle figure aussi en pied de page des PDF.
La génération est synchrone. Un grand livre volumineux en PDF peut prendre plusieurs dizaines de secondes : réglez le délai d'attente de votre client sur 180 secondes. La limite est de 30 exports par minute.
Aperçu PDF dans un navigateur
Pour afficher un export dans une page ou une iframe sans exposer votre jeton, demandez une URL signée valable 15 minutes :
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"
}
Étape 3 : télécharger le dossier complet
Une seule requête produit l'archive ZIP de tout l'exercice.
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
La réponse est de type application/zip. Prévoyez un délai d'attente de 5 minutes. La limite est de 10 archives par minute.
Contenu de l'archive
| Dossier | Contenu |
|---|---|
00-Dossier-comptable.pdf |
Page de garde : identité, sommaire avec empreintes, attestation d'intégrité |
01-Livres |
Journaux, grand livre, plan comptable, piste d'audit en PDF |
02-Etats-financiers |
Balance, balance par période, bilan et compte de résultats, comptes annuels |
03-TVA |
Récapitulatif TVA, listings et une déclaration PDF par période |
04-Tiers |
Liste, balances, balances âgées, grand livre des tiers |
05-Immobilisations |
Tableau des immobilisations et des amortissements |
06-Donnees-CSV |
Les mêmes états au format CSV, exploitables par un autre logiciel |
07-Banque-CODA |
Fichiers CODA d'origine |
08-Pieces |
Pièces déposées dans l'importateur et index.csv de toutes les pièces de l'exercice |
manifest.json |
Inventaire de l'archive avec l'empreinte SHA-256 de chaque fichier |
Un état impossible à produire, par exemple des comptes annuels sur un exercice sans écritures, est ignoré et signalé dans le manifeste au lieu de faire échouer l'archive.
Étape 4 : vérifier les empreintes
Le fichier manifest.json liste chaque fichier de l'archive avec son chemin, sa taille et son empreinte.
{
"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 vaut final quand l'exercice est clôturé, provisional sinon. skipped liste les états qui n'ont pas pu être produits, avec la raison. Les fichiers CSV sont en UTF-8 avec BOM, séparateur point-virgule et virgule décimale.
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']);
}
}
Chaque export est tracé dans le journal d'activité du dossier avec son type, son format et son empreinte. Vous pouvez donc prouver plus tard qu'un fichier donné correspond bien à ce que NovaFisko a généré.
Erreurs fréquentes
| Statut | Cause | Correction |
|---|---|---|
404 |
Type d'export inconnu, ou exercice d'un autre dossier | Vérifier le code dans le catalogue |
422, champ format |
Format hors pdf, xlsx, csv |
Corriger le paramètre |
422, champ fiscal_year_id |
Exercice étranger au dossier | Relire GET fiscal-years |
429 |
Trop d'exports en une minute | Attendre Retry-After secondes |
Un export produit sur une période non verrouillée porte la mention de document provisoire. Pour un document définitif, verrouillez les périodes ou clôturez l'exercice avant d'exporter. Voir Conformité des exports.