Aller au contenu
Documentation
Français
Ouvrir l'application

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.

Note

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

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
Attention

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.

Voir aussi