Salta ai contenuti

Avvio rapido

fiskaly fornisce API di conformità fiscale in tutta Europa. Scegli il tuo paese qui sotto per accedere direttamente alla guida di integrazione, oppure scorri verso il basso per una procedura pratica SIGN DE.


La procedura seguente usa la Germania (SIGN DE) come esempio concreto. Il flusso è: autenticarsi → creare un TSS → firmare una transazione.

Tempo per completare: ~5 minuti con cURL, ~15 minuti se stai integrando nel codice dell’applicazione.

Hai bisogno di tre cose prima di iniziare:

  1. Un account fiskaly — registrati gratuitamente su hub.fiskaly.com
  2. Credenziali API — genera una chiave e un segreto API nell’HUB nella tua organizzazione
  3. Un client HTTP — cURL, Postman o la libreria HTTP del tuo linguaggio

Questa guida usa l’ambiente sandbox (TEST). Tutte le nuove organizzazioni iniziano qui. Non vengono creati dati fiscali reali e non ti verrà addebitato nulla.

Sandbox (TEST)Produzione (LIVE)
URL basehttps://kassensichv-middleware.fiskaly.com/api/v2https://kassensichv.fiskaly.com/api/v2
DatiEffimeri — sicuri per sperimentarePermanenti — rilevanti per gli audit
FatturazioneGratuitaPer contratto
PassaggioPredefinito per le nuove orgAbilitato tramite HUB

Scambia la tua chiave e il tuo segreto API per un token Bearer.

curl -X POST https://kassensichv-middleware.fiskaly.com/api/v2/auth \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "YOUR_API_KEY",
    "api_secret": "YOUR_API_SECRET"
  }'

Risposta attesa (200 OK):

{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"access_token_expires_in": 86400,
"refresh_token": "eyJhbGciOiJSUzI1NiIs...",
"refresh_token_expires_in": 172800
}

L’access_token è valido per 24 ore. Il refresh_token è valido per 48 ore. Includi l’access token come Authorization: Bearer <token> in tutte le richieste successive.

Un TSS (Technical Security System) è la risorsa di firma certificata. Ne hai bisogno una per ogni sede fisica. La creazione di un TSS prevede tre sotto-passi: creare, impostare il PIN Admin e inizializzare.

a) Creare il TSS

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 '{
    "description": "Il mio primo TSS"
  }'

Risposta attesa (200 OK) — nota il campo admin_puk:

{
"_id": "a1b2c3d4-...",
"description": "Il mio primo TSS",
"state": "UNINITIALIZED",
"admin_puk": "123456"
}

b) Impostare il PIN Admin (usando l’admin_puk dalla risposta precedente):

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": "123456",
    "new_admin_pin": "your-secure-admin-pin"
  }'

c) Autenticarsi come Admin e inizializzare:

# Autenticarsi come admin
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" }'

# Inizializzare il TSS
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" }'

Dopo l’inizializzazione, il state del TSS diventa INITIALIZED. Sei pronto per creare client e firmare transazioni.

Un client rappresenta un singolo terminale POS o un’istanza di applicazione collegata al TSS.

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" }'

Le transazioni hanno un ciclo di vita: avvio (stato ACTIVE) poi completamento (stato FINISHED). La risposta di completamento contiene la firma crittografica.

a) Avviare la transazione:

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) Completare la transazione (qui viene generata la firma):

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" }
          ]
        }
      }
    }
  }'

Risposta attesa (200 OK) — i campi chiave sono signature e qr_code_data:

{
"_id": "tx-uuid-...",
"state": "FINISHED",
"number": 1,
"time_start": 1700000000,
"time_end": 1700000001,
"signature": {
"value": "dGVzdC1zaWduYXR1cmU=",
"algorithm": "ecdsa-plain-SHA384",
"counter": 1,
"public_key": "BHHz..."
},
"qr_code_data": "V0;TSS-ID;TX-NUMBER;..."
}

La stringa qr_code_data è quella che codifichi nel QR code stampato sulla ricevuta.

Al termine della configurazione, disconnetti l’admin dal TSS:

Terminal window
curl -X POST "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin/logout" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
ErroreCausaSoluzione
401 UnauthorizedToken scaduto o non correttoRi-autenticati con /auth. Verifica di usare la chiave API corretta per questo ambiente.
400 E_TSS_NOT_INITIALIZEDTentato di creare un client o una transazione su un TSS non inizializzatoCompleta tutti e tre i passi di configurazione del TSS: crea, imposta il PIN Admin, inizializza.
400 con errore “admin_puk”PUK errato nell’impostazione del PIN AdminUsa il valore admin_puk dalla risposta di creazione del TSS, non un valore scelto da te.
409 ConflictRiutilizzato un UUID già esistenteGenera un nuovo UUID per ogni risorsa (TSS, client, transazione).
422 E_TX_INVALID_STATETentato di completare una transazione che non è ACTIVEAvvia prima la transazione (revisione 1 con state: ACTIVE), poi completala (revisione 2).

Per il riferimento completo degli errori, consulta Codici di errore.

Se preferisci un flusso di lavoro basato su GUI, scarica la raccolta Postman preconfigurata:

  1. Scaricare

  2. Importare

    Importa entrambi i file in Postman.
  3. Configurare

    Imposta api_key e api_secret nelle variabili d’ambiente.

  4. Eseguire

    Esegui le richieste in ordine — la raccolta usa variabili per collegare automaticamente le risposte.

Consulta il Tutorial Postman per una guida dettagliata.

Was this page helpful?