Aller au contenu

Intégration étape par étape

Ce guide vous accompagne tout au long du processus complet de configuration de votre système avec fiskaly SIGN DE, en utilisant une combinaison du fiskaly HUB, de la Management API et de l’API SIGN DE. À la fin, vous disposerez d’une organisation gérée entièrement provisionnée avec un TSS et un client prêts à signer des transactions.

Avant de plonger dans la configuration, voici ce que vous allez configurer :

🏢

Compte et Groupe

Votre Compte est l'entité de niveau supérieur créée lors de votre inscription sur le HUB — il représente votre entreprise en tant que fournisseur POS ou revendeur. Un Groupe est une couche intermédiaire au sein du Compte utilisée pour regrouper les organisations gérées de manière logique (p. ex. un Groupe par pays).

🔑

Clé API et Token

Identifiants générés dans le HUB et jetons obtenus depuis la Management API et SIGN DE, utilisés pour authentifier toutes les requêtes suivantes.

🏬

Organisation gérée

Représente un seul emplacement physique (p. ex. un magasin ou un restaurant), appelée Unit dans le HUB. Créée via la Management API et liée à un Groupe au sein de votre Compte.

🛡️

TSS (Système de sécurité technique)

Le composant de signature principal. Doit être créé, configuré avec un code PIN administrateur et initialisé avant de pouvoir signer des transactions.

💻

Client

Représente un terminal de point de vente ou une application qui crée des transactions contre un TSS.

🧾

Transaction

Un enregistrement fiscal signé. Une fois votre TSS et votre Client prêts, vous pouvez démarrer et terminer des transactions pour générer des signatures cryptographiques.

Le diagramme ci-dessous montre les dix étapes de l’intégration SIGN DE. Cliquez sur n’importe quelle vignette pour accéder à l’étape de configuration correspondante.

SIGN DE integration workflowTen-step SIGN DE integration workflow with tiles linking to the matching setup steps below.Register on HUBHUBCreate Account &OrganizationGroupHUBCreate API KeyHUBCreate Token(Management API)Management APICreate managedorganization(s)Management APICreate API Key(managed org)Management APICreate Token(SIGN DE)SIGN DE APICreate TSSSIGN DE APICreate ClientSIGN DE APICreateTransactionSIGN DE API
  1. S'inscrire sur le HUB

    Accédez à hub.fiskaly.com et créez votre compte fiskaly. Vous recevrez un email de confirmation — cliquez sur le lien pour vérifier votre adresse et activer votre compte.

  2. Créer un Compte et un Groupe

    Lorsque vous vous connectez au HUB pour la première fois, vous êtes invité à configurer votre Compte — l’entité de niveau supérieur représentant votre entreprise (fournisseur POS ou revendeur). Le HUB vous guidera également pour créer un Groupe, une couche intermédiaire au sein de votre Compte pour regrouper les organisations gérées de manière logique (par exemple, un Groupe par pays).

    Création d'organisation HUB

    Après avoir terminé la configuration, le HUB affichera votre vue d’ensemble actuelle — initialement avec 0 TSS et 0 client.

    Vue d'ensemble HUB
  3. Créer une clé API

    Accédez à la section Clés API dans le fiskaly HUB et créez une nouvelle clé API pour votre Compte.

    Section clés API dans le fiskaly HUB

    Vous recevrez une Clé API et un Secret API. Conservez-les en lieu sûr — vous en aurez besoin pour toutes les requêtes API suivantes.

  4. Créer un token (Management API)

    Utilisez la Clé API et le Secret de l’étape précédente pour obtenir un jeton d’accès à la Management API.

    curl -X POST https://dashboard.fiskaly.com/api/v0/auth \
      -H "Content-Type: application/json" \
      -d '{
        "api_key": "your_api_key",
        "api_secret": "your_api_secret"
      }'
    Exemple de réponse (200 OK)
    {
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "access_token_claims": {
    "env": "TEST",
    "organization_id": "00000000-0000-0000-0000-000000000000"
    },
    "access_token_expires_in": 300,
    "access_token_expires_at": 1577833200,
    "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refresh_token_expires_in": 300,
    "refresh_token_expires_at": 1577833200
    }

    Utilisez le access_token en tant que jeton Bearer dans l’en-tête Authorization pour toutes les requêtes de la Management API.

  5. Créer une/des organisation(s) gérée(s)

    Créez une ou plusieurs organisations gérées (également appelées Units dans le HUB) sous votre Groupe. Chaque Unit représente généralement un seul emplacement physique tel qu’un magasin ou un restaurant.

    curl -X POST "https://dashboard.fiskaly.com/api/v0/organizations" \
      -H "Authorization: Bearer ${MANAGEMENT_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "My Store Berlin",
        "managed_by_organization_id": "your-group-id",
        "address_line1": "Unter den Linden 1",
        "zip": "10117",
        "town": "Berlin",
        "country_code": "DEU"
      }'
    Exemple de réponse (200 OK)
    {
    "_id": "your-managed-org-id",
    "_type": "ORGANIZATION",
    "name": "My Store Berlin",
    "managed_by_organization_id": "your-group-id",
    "address_line1": "Unter den Linden 1",
    "zip": "10117",
    "town": "Berlin",
    "country_code": "DEU",
    "state": "active",
    "time_creation": "2026-03-01T10:00:00Z"
    }

    Notez le _id de la réponse — il s’agit de votre identifiant d’organisation gérée, nécessaire pour l’étape suivante.

  6. Créer une clé API (organisation gérée)

    Générez une clé API dédiée pour l’organisation gérée. Cette clé sera utilisée pour authentifier les requêtes API SIGN DE limitées à cette organisation.

    curl -X POST "https://dashboard.fiskaly.com/api/v0/organizations/${ORG_ID}/api-keys" \
      -H "Authorization: Bearer ${MANAGEMENT_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "sign-de-key",
        "status": "enabled",
        "managed_by_organization_id": "your-group-id"
      }'
    Exemple de réponse (200 OK)
    {
    "_id": "your-api-key-id",
    "_type": "MANAGED_API_KEY",
    "_envs": ["TEST"],
    "name": "sign-de-key",
    "key": "your-api-key",
    "secret": "your-api-secret",
    "status": "enabled",
    "managed_by_organization_id": "your-group-id",
    "created_at": 1577833200
    }
  7. Créer un token (SIGN DE)

    Utilisez la clé et le secret API de l’organisation gérée pour obtenir un jeton d’accès SIGN DE.

    curl -X POST https://kassensichv-middleware.fiskaly.com/api/v2/auth \
      -H "Content-Type: application/json" \
      -d '{
        "api_key": "managed_org_api_key",
        "api_secret": "managed_org_api_secret"
      }'
    Exemple de réponse (200 OK)
    {
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "access_token_claims": {
    "env": "TESTING",
    "organization_id": "your-managed-org-id"
    },
    "access_token_expires_in": 86400,
    "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refresh_token_expires_in": 172800
    }

    Utilisez ce access_token en tant que jeton Bearer pour toutes les requêtes API SIGN DE suivantes.

  8. Créer un TSS

    Créez un nouveau Système de Sécurité Technique (TSS) en envoyant une requête PUT avec un identifiant TSS unique (UUID). Le TSS doit ensuite être initialisé avant de pouvoir signer des transactions.

    TSS_ID=$(uuidgen)
    
    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"metadata": {}}'
    Exemple de réponse (200 OK)
    {
    "_id": "your-tss-id",
    "_type": "TSS",
    "_env": "TEST",
    "_version": "2.2.2",
    "admin_puk": "initial-puk-from-creation",
    "state": "CREATED",
    "serial_number": "a1b2c3d4e5f6...",
    "public_key": "MFkwEwYH...",
    "certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
    "signature_algorithm": "ECDSA",
    "signature_timestamp_format": "unixTime",
    "transaction_data_encoding": "UTF-8",
    "max_number_registered_clients": 100,
    "max_number_active_transactions": 1000,
    "time_creation": 1577833200,
    "metadata": {}
    }

    Après la création, initialisez le TSS en quatre sous-étapes :

    a) Personnaliser le TSS

    Faites passer le TSS de l’état CREATED à l’état UNINITIALIZED avant de modifier le code PIN administrateur :

    curl -X PATCH "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"state": "UNINITIALIZED"}'

    b) Modifier le code PIN administrateur

    Le TSS est créé dans un état UNINITIALIZED. Vous devez définir un nouveau code PIN administrateur en utilisant le admin_puk de la réponse de création.

    curl -X PATCH "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "admin_puk": "puk-from-creation-response",
        "new_admin_pin": "your-secure-admin-pin"
      }'

    c) S’authentifier en tant qu’administrateur

    curl -X POST "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin/auth" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "admin_pin": "your-secure-admin-pin"
      }'

    d) Initialiser le TSS

    Mettez à jour l’état du TSS à INITIALIZED :

    curl -X PATCH "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "state": "INITIALIZED"
      }'
    Exemple de réponse (200 OK)
    {
    "_id": "your-tss-id",
    "_type": "TSS",
    "state": "INITIALIZED",
    "certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
    "serial_number": "a1b2c3d4e5f6...",
    "signature_algorithm": "ECDSA",
    "max_number_registered_clients": 100,
    "max_number_active_transactions": 1000,
    "time_creation": "2026-03-01T10:00:00Z"
    }
    curl -X POST "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin/logout" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}"
  9. Créer un client

    Une fois le TSS initialisé, créez un client représentant votre terminal de point de vente ou votre application.

    CLIENT_ID=$(uuidgen)
    
    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/client/${CLIENT_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "serial_number": "POS-001"
      }'
    Exemple de réponse (200 OK)
    {
    "_id": "your-client-id",
    "_type": "CLIENT",
    "serial_number": "POS-001",
    "state": "REGISTERED",
    "tss_id": "your-tss-id",
    "time_creation": "2026-03-01T10:00:00Z"
    }
  10. Opérations quotidiennes : Créer une transaction

    Maintenant que votre TSS et votre Client sont provisionnés, vous êtes prêt pour les opérations quotidiennes. Les transactions suivent un cycle de vie en deux étapes qui correspond au flux de paiement réel :

    • Démarrer la transaction (ouvrir la caisse) — envoyez uniquement state: "ACTIVE" et client_id. Aucun schéma de reçu n’est requis à ce stade.
    • Terminer la transaction (après le paiement) — envoyez le schéma de reçu complet avec les montants et le type de paiement pour générer la signature cryptographique.

    a) Démarrer la transaction

    TX_ID=$(uuidgen)
    
    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/tx/${TX_ID}?tx_revision=1" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "state": "ACTIVE",
        "client_id": "your-client-id"
      }'

    b) Terminer la transaction

    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/tx/${TX_ID}?tx_revision=2" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "state": "FINISHED",
        "client_id": "your-client-id",
        "schema": {
          "standard_v1": {
            "receipt": {
              "receipt_type": "RECEIPT",
              "amounts_per_vat_rate": [
                { "vat_rate": "NORMAL", "amount": "10.00" }
              ],
              "amounts_per_payment_type": [
                { "payment_type": "CASH", "amount": "10.00" }
              ]
            }
          }
        }
      }'
    Exemple de réponse (200 OK)
    {
    "_id": "your-tx-id",
    "_type": "TRANSACTION",
    "state": "FINISHED",
    "client_id": "your-client-id",
    "tss_id": "your-tss-id",
    "time_start": "2026-03-01T10:00:00Z",
    "time_end": "2026-03-01T10:05:00Z",
    "qr_code_data": "V0;955002-00;Kassenbeleg-V1;...",
    "signature": {
    "value": "MEUCIQDx...",
    "timestamp": "2026-03-01T10:05:00Z",
    "serial_number": "a1b2c3d4e5f6..."
    }
    }

    La réponse inclut la transaction signée avec une chaîne qr_code_data pour le code QR du reçu et une signature cryptographique du TSS.

Was this page helpful?