Aller au contenu

L'API Unifiée

L’API Unifiée de fiskaly est une architecture d’intégration unique qui couvre plusieurs pays. Intégrez-la une fois pour la France ou l’Italie, et ajouter le pays suivant signifie changer le schéma de payload — pas réécrire votre intégration.

Cette page documente comment fonctionne l’API Unifiée, à quoi ressemble son modèle de ressources et comment elle diffère des API Spécialisées (SIGN DE, SIGN AT, SIGN ES).

fiskaly propose deux architectures API. Les deux sont entièrement supportées et maintenues activement :

API UnifiéeAPI Spécialisées
PaysFrance (SIGN FR), Italie (SIGN IT), Suède (à venir)Allemagne (SIGN DE), Autriche (SIGN AT), Espagne (SIGN ES)
URL de basetest.api.fiskaly.com / live.api.fiskaly.comSpécifiques au produit (ex. kassensichv.fiskaly.com)
Gestion des orgsIntégrée dans l’API du produitManagement API séparée (management.fiskaly.com)
ID des ressourcesGénérés par le serveur (utiliser X-Idempotency-Key)UUID générés par le client
Contrôle de versionHeader X-Api-Version (basé sur la date, pas de breaking change)Pas de header de version (breaking changes possibles)
Portée des ressourcesHeader X-Scope-IdentifierParamètres de chemin
TerminologieOrganization, Taxpayer, Location, System, RecordTSS, client, transaction (varie par produit)
Ajouter un paysChanger le schéma payload dans le même modèle de ressourcesIntégrer une API séparée avec des endpoints différents
ScénarioRecommandation
Vous avez besoin uniquement de l’AllemagneSIGN DE (API Spécialisée)
Vous avez besoin uniquement de l’AutricheSIGN AT (API Spécialisée)
Vous avez besoin uniquement de l’EspagneSIGN ES (API Spécialisée)
Vous avez besoin uniquement de la France ou de l’ItalieAPI Unifiée
Vous avez besoin de la France + Italie (ou + Suède)API Unifiée — intégrez une fois, ajoutez des pays via le schéma payload
Vous avez besoin de l’Allemagne + FranceLes deux — SIGN DE (Spécialisée) + SIGN FR (Unifiée). Même schéma auth, modèles de ressources différents.
Vous démarrez de zéro et planifiez 3+ paysCommencez par l’API Unifiée pour FR/IT, ajoutez les API Spécialisées pour DE/AT/ES selon les besoins

L’API Unifiée utilise des URL de base séparées pour chaque environnement :

  • TEST : https://test.api.fiskaly.com
  • LIVE : https://live.api.fiskaly.com

C’est différent des API Spécialisées (ex. SIGN DE), où une seule URL de base est utilisée et la clé API détermine l’environnement.

Chaque requête à l’API Unifiée inclut ces headers :

Obligatoire pour chaque requête. La valeur est la date de publication de la version API que vous ciblez (ex. 2026-02-03).

X-Api-Version: 2026-02-03

Cela vous donne un contrôle total sur le moment où adopter une nouvelle version. Vous pouvez :

  • Tester une nouvelle version en TEST avant de migrer en LIVE
  • Faire tourner différents clients sur différentes versions simultanément
  • Garantir aucun breaking change dans une version bloquée

Obligatoire pour toutes les requêtes POST et PATCH. Comme les ID de ressources sont générés par le serveur (pas fournis par le client comme dans SIGN DE), ce header garantit que les requêtes répétées ne créent pas de ressources en double.

X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000

Utilisez un UUIDv4 ou UUIDv3 frais pour chaque opération distincte. Utilisez une nouvelle clé lors d’une nouvelle tentative après une requête échouée.

Utilisé pour établir des relations entre ressources. Remplace les paramètres de chemin utilisés dans la Management API et les API Spécialisées.

X-Scope-Identifier: organization-unit-id

Par exemple, lors de la création d’une clé API pour une Organization::UNIT spécifique, le header X-Scope-Identifier contient l’ID de l’Unité au lieu de l’encoder dans le chemin URL.

L’API Unifiée utilise une hiérarchie de ressources standardisée dans tous les pays :

Organization::ACCOUNT ← Votre entreprise (niveau supérieur, gérée dans le HUB)
└── Organization::GROUP ← Cluster logique (région, enseigne, franchise)
└── Organization::UNIT ← Commerçant individuel / contribuable
├── Subject::API_KEY ← Identifiants API pour cette unité
├── Taxpayer (COMPANY ou INDIVIDUAL)
│ │
│ ├── Informations générales (nom, adresse — partagées entre pays)
│ │
│ └── Informations de fiscalisation (spécifiques au pays : SIREN pour FR,
│ Codice Fiscale pour IT, etc.)
├── Location ← Emplacement physique de l'entreprise (boutique, magasin)
└── System::FISCAL_DEVICE ← Terminal POS / caisse enregistreuse

Chaque ressource principale (Taxpayer, Location, System) suit la même machine à états :

ACQUIRED ──→ COMMISSIONED ──→ DECOMMISSIONED
(créée) (active) (retirée)
  • ACQUIRED — la ressource est créée mais pas encore active. Mode : INACTIVE.
  • COMMISSIONED — la ressource est active et prête pour la production. Mode : OPERATIVE. Cette transition est irréversible et déclenche la facturation.
  • DECOMMISSIONED — la ressource est définitivement retirée. Mode : INACTIVE. Également irréversible.

Modes opérationnels à l’intérieur de l’état COMMISSIONED :

ModeSignificationDéfini par
OPERATIVEOpération normaleAutomatique (à la commission ou après résolution du problème)
DEGRADEDProblème détectéAutomatique (par le service)
SUSPENDEDPause de maintenanceManuel (par vous, via API)

Dans l’API Unifiée, les transactions sont appelées Records et utilisent un modèle en deux étapes :

  1. Record::INTENTION — marque le début d’une opération fiscale (équivalent à Start-Transaction dans SIGN DE)
  2. Record::TRANSACTION — complète l’opération fiscale avec le payload complet (équivalent à Finish-Transaction dans SIGN DE)

Types d’opérations supplémentaires supportés uniquement via Record::INTENTION (pas de contrepartie TRANSACTION nécessaire) :

  • EVENT — événements système (mode formation, opérations de test, redémarrages)
  • DUPLICATE — duplicata d’un document fiscal existant
  • EXPORT — génération d’export de données fiscales

Correspondance des terminologies (API Unifiée vs SIGN DE)

Section intitulée « Correspondance des terminologies (API Unifiée vs SIGN DE) »

Si vous venez d’une intégration SIGN DE, ce tableau met en correspondance les concepts :

API UnifiéeSIGN DEExplication
Organization::ACCOUNT(pas d’équivalent)Structure de niveau supérieur dans le HUB
Organization::GROUPorganizationOrganisation principale sous laquelle les contribuables sont imbriqués
Organization::UNITmanaged_organizationCommerçant individuel. Lié à un Taxpayer.
Taxpayer (COMPANY/INDIVIDUAL)Partie de managed_organization ou taxpayer (SUBMIT DE)L’entité fiscale
Locationestablishment (SUBMIT DE)Emplacement physique de l’entreprise
System::FISCAL_DEVICEclientTerminal POS / caisse enregistreuse
Subject::API_KEYAPI keyIdentifiants d’authentification
RecordtransactionUne opération fiscale
Record::INTENTIONStart-TransactionMarque le début d’un achat
Record::TRANSACTIONFinish-TransactionComplète l’achat avec les données fiscales complètes

La proposition de valeur de l’API Unifiée est que la majeure partie de l’intégration est partagée. Voici ce qui reste identique et ce qui diffère :

Partagé dans tous les pays de l’API UnifiéeSpécifique au pays
Authentification (POST /tokens)Section fiscalization du Taxpayer (ex. SIREN pour FR ; Codice Fiscale, TVA et identifiants pour IT)
Hiérarchie organisationnelle (ACCOUNT > GROUP > UNIT)Schéma payload du Record (structure du reçu, gestion de la TVA, types de document)
Headers (X-Api-Version, X-Idempotency-Key, X-Scope-Identifier)Opérations d’intention supportées (FR a EVENT/DUPLICATE/EXPORT ; IT a uniquement TRANSACTION)
Cycle de vie des ressources (ACQUIRED > COMMISSIONED > DECOMMISSIONED)Exigences réglementaires (certification NF525 pour FR, loterie des reçus pour IT)
Gestion des états et modes (OPERATIVE, DEGRADED, SUSPENDED)Gestion des pertes de connexion (protocoles différents par pays)
URL de base (test.api.fiskaly.com / live.api.fiskaly.com)

Effort typique pour ajouter un deuxième pays de l’API Unifiée : ~1 semaine pour une équipe déjà intégrée avec le premier pays. Vous adaptez la section fiscalisation du Taxpayer et le schéma payload du Record — tout le reste est réutilisable.

Voici le flux de configuration complet pour un pays de l’API Unifiée (en utilisant SIGN FR comme exemple). Le flux est identique pour SIGN IT.

  1. Créer le Token

    POST /tokens avec votre clé et votre secret API (identique à tous les produits fiskaly). Ce token est utilisé pour créer la structure organisationnelle.

  2. Créer Organization::UNIT

    POST /organizations avec X-Idempotency-Key. Seul le nom est requis à ce stade. Représente votre client (commerçant).

  3. Créer Subject::API_KEY

    POST /subjects avec X-Scope-Identifier défini sur l’ID Organization::UNIT. Chaque client a besoin de sa propre clé API.

  4. Créer un Token avec portée

    POST /tokens en utilisant la clé API du client. Ce token avec portée est utilisé pour toutes les opérations spécifiques au contribuable.

  5. Créer le Taxpayer

    POST /taxpayers avec les informations générales (nom, adresse) et la section fiscalization spécifique au pays (ex. numéro SIREN pour la France, Codice Fiscale, TVA et identifiants pour IT).

  6. Commissionner le Taxpayer

    PATCH /taxpayers/{id} — mettre à jour l’état de ACQUIRED à COMMISSIONED. C’est irréversible et active la facturation.

  7. Créer et commissionner la Location

    POST /locations puis PATCH /locations/{id} pour commissionner. Représente un emplacement physique de l’entreprise.

  8. Créer et commissionner le System

    POST /systems puis PATCH /systems/{id} pour commissionner. Représente un terminal POS. Dans SIGN FR, vous fournissez également les détails du système de conservation électronique à cette étape.

  9. Créer Record::INTENTION

    POST /records avec le type d’opération (ex. TRANSACTION) et l’ID du System. Ceci démarre l’opération fiscale.

  10. Créer Record::TRANSACTION

    POST /records référençant le record INTENTION. Contient le payload fiscal complet (articles, montants, TVA, moyens de paiement). La réponse inclut la signature cryptographique.

Contrairement aux API Spécialisées (SIGN DE, SIGN AT, SIGN ES), l’API Unifiée ne nécessite pas la Management API (management.fiskaly.com). Toute la gestion des organisations, la création de clés API et la configuration sont gérées directement dans l’API du produit.

Cela signifie moins de surfaces API à intégrer, moins d’identifiants à gérer et une architecture globale plus simple.

Was this page helpful?