Vai al contenuto
v26.3

TSE & Agenzia delle Entrate

Dal 01.01.2020 in Germania è obbligatorio un dispositivo tecnico di sicurezza (TSE) per i sistemi di cassa (KassenSichV, §146a AO). DiKAS è pienamente conforme alla TSE e firma tutti i processi rilevanti ai fini di cassa secondo l'AEAO relativo al §146a AO.

Per i verificatori fiscali:Conformità TSE — Documentazione per i verificatori fiscali (descrizione tecnica dettagliata)

Per gli utenti:Guida TSE nel manuale utente (configurazione e utilizzo)


Che cos'è una TSE?

Una TSE è un modulo di sicurezza certificato che firma digitalmente ogni processo di cassa. L'Agenzia delle Entrate può così verificare se i dati di cassa sono stati manipolati a posteriori.

La TSE in DiKAS

DiKAS firma tutti i processi rilevanti ai fini di cassa — non solo le fatture:

Processo ProcessType Entity Descrizione
Scontrini di cassa Kassenbeleg-V1 Receipt Ogni pagamento (vendita diretta, pagamento al tavolo)
Storni Kassenbeleg-V1 Receipt Ogni storno di scontrino
Ordini Bestellung-V1 OpenBon Ogni ordine nel servizio al tavolo
Ordini cumulativi Bestellung-V1 OpenBon Ordini in batch (firma sullo scontrino capofila)
Apertura turno SonstigerVorgang Exchange Ogni apertura di turno
Chiusura turno SonstigerVorgang Exchange Ogni chiusura di turno
Chiusure giornaliere SonstigerVorgang DayClose Ogni report Z
Spese SonstigerVorgang Spending Ogni prelievo di contanti

Architettura

Flusso di firma

Handler (z.B. ProcessDirectSaleCommand)
    → TseSigningHelper.SignReceiptAsync()
        → BackendConfig laden (TSE-fähig?)
        → ITseService.IsAvailable prüfen
        → ProcessData aufbauen
        → ClientId auflösen (CashRegisterId → BonIdServer → "1")
        → ITseService.SignReceiptAsync() [5s Timeout]
        → TSE-Felder auf Entity speichern
        → HandleOutageLogAsync() (Ausfallprotokoll)

Spese (Spendings): Vengono firmate come SonstigerVorgang; il testo del processo dipende dall'AccountMode:

AccountMode Tipo di processo TSE
1 (Spesa) AVSonstAusgabe
2 (Cassa→Banca) AVTransfer
3 (Banca→Cassa) AVSonstEinlage
4 (Bonifico) AVSonstAusgabe

Componenti

Componente Descrizione
TseSigningHelper Classe statica centrale per tutte le firme TSE
ITseService Interfaccia per l'accesso alla TSE (IsAvailable, Sign, Export)
TseServiceRouter Routing verso la TSE attiva: fiskaly-Cloud preferita, poi TSE di rete, poi hardware Swissbit locale
FiskalyTseService fiskaly Cloud-TSE (SIGN DE) — firma tramite Internet, nessun dispositivo USB necessario
SwissbitTseService TSE USB Swissbit locale
TseProxyService TSE di rete: firma tramite un'altra cassa DiKAS che funge da TSE-Host (BonIdServer)
TseInitializationService Inizializzazione iniziale della TSE
ITseDataHolder Interfaccia con 9 campi TSE su tutte le entità firmate
TseOutageLog Entità del registro delle interruzioni
TseConfig Configurazione TSE (PublicKey, Serial, SigAlg, PIN)

Formati ProcessData

Le seguenti stringhe vengono trasmesse alla TSE e co-firmate. La descrizione dettagliata, orientata ai verificatori, si trova nella documentazione per la verifica fiscale, sezione 4.

Kassenbeleg-V1 — parte fiscale fissa composta da cinque slot lordi (19 % / 7 % / 10,7 % / 5,5 % / 0 %), seguita dalla parte di pagamento <Betrag>:<Bar|Unbar> (i pagamenti in contanti per primi):

Beleg^<19%>_<7%>_<10,7%>_<5,5%>_<0%>^<Zahlungen>
Beispiel: Beleg^47.60_12.40_0.00_0.00_0.00^60.00:Bar

Bestellung-V1 — una riga per ogni posizione dell'ordine; la denominazione è tra virgolette, il prezzo è il prezzo unitario lordo:

<Menge>;"<Bezeichnung>";<Brutto-Einzelpreis>
Beispiel:
2;"Cola";3.50
1;"Pizza Salami";11.50

SonstigerVorgang — sigla del processo e dati, separati da ^:

<Vorgang>^<Daten>
Beispiel: AVKassenschnitt^Tagesabschluss^1523.90

DiKAS utilizza a tale scopo sei sigle di processo: AVSichOpen (apertura turno), AVSichClose (chiusura turno), AVKassenschnitt (chiusura giornaliera), AVSonstAusgabe (uscita/prelievo di contanti), AVSonstEinlage (versamento di contanti) e AVTransfer (trasferimento di denaro). Uno storno non è un SonstigerVorgang, bensì un Kassenbeleg-V1 con importi negativi.

Formato del codice QR (DSFinV-K Allegato I)

V0;{KassenSerial};{ProcessType};{ProcessData};{TransNr};{SignZähler};{Start};{Ende};{SigAlg};{LogFormat};{Signatur};{PublicKey}

Configurazione

La maschera Admin → Impostazioni → Finanze → TSE mostra lo stato della TSE e le esportazioni (TSE-TAR, DSFinV-K, GDPdU). Lì sono presenti esattamente due impostazioni: l'interruttore «TSE attiva» e il campo opzionale «Server TSE». Non esiste un menu a tendina «Tipo di TSE» — quale TSE viene utilizzata risulta dalla configurazione del server. All'avvio DiKAS verifica in quest'ordine: Cloud-TSE (fiskaly) → Server TSE (rete) → TSE Swissbit locale.

Cloud-TSE (fiskaly)

Senza dispositivo USB — la firma avviene tramite la fiskaly-Cloud certificata (SIGN DE) su Internet. Le credenziali di accesso (API-Key, API-Secret, TSS-ID, Client-ID) si trovano nella configurazione del server (Tse:* in appsettings ovvero variabili d'ambiente), con ambiente Test o Live selezionabile. Nei pacchetti DiKAS-Cloud con Cloud-TSE inclusa questo è già preconfigurato — non c'è altro da fare.

Non appena è configurata una Cloud-TSE, questa ha automaticamente la priorità.

TSE hardware (Swissbit)

Chiavetta USB sul computer di cassa o sull'appliance:

  1. Inserire la TSE Swissbit
  2. Indicare il percorso locale (punto di mount) della TSE nella configurazione del server
  3. Admin → Impostazioni → Finanze → TSE → attivare «TSE attiva»

Durante l'inizializzazione DiKAS imposta da sé i PIN/PUK (casuali per ogni dispositivo) e registra la cassa come client. L'identificativo della cassa proviene dalla licenza — non esiste un campo manuale per il numero di serie.

Rete TSE (più casse, una TSE)

Per gli esercizi con più casse che condividono una sola TSE: una cassa è l'host TSE, le altre firmano tramite questa nella rete locale.

  1. Admin → Impostazioni → Finanze → TSE
  2. Nel campo «Server TSE» inserire l'indirizzo della cassa che funge da host TSE (es. https://kasse1.local)
  3. Attivare «TSE attiva»

Disattivazione automatica in caso di guasto

Se l'inizializzazione della TSE fallisce più volte all'avvio, la TSE si disattiva automaticamente e nell'intestazione della cassa compare «TSE disattivata». Dettagli per gli utenti: La TSE nell'uso quotidiano della cassa.

Endpoint API

Metodo Endpoint Descrizione
GET /api/v1/tse/info Informazioni sullo stato della TSE (capacità, certificato, firme)
GET /api/v1/tse/config Leggere la configurazione TSE
PUT /api/v1/tse/config Aggiornare la configurazione TSE
POST /api/v1/tse/initialize Inizializzare la TSE
GET /api/v1/tse/export/tar Esportare i dati di log TSE come TAR (opzionale ?startDate=&endDate=)

Dati TSE sullo scontrino

Ogni scontrino di cassa contiene i dati TSE:

══════════════════════════════════
  BON Nr. 20260313-0042
──────────────────────────────────
  ...Artikel...
──────────────────────────────────
  TSE-Information:
  Signatur:   a8f3c2d1e5...
  Trans.-Nr:  12345
  Sign.-Zäh:  67890
  Start:      2026-03-13T18:30:00
  Ende:       2026-03-13T18:30:01
  Seriennr:   ABCDEF1234567890

  [QR-Code]
══════════════════════════════════

Il codice QR contiene tutti i dati TSE nel formato DSFinV-K (Allegato I) e può essere scansionato dall'Agenzia delle Entrate.

Esportazione DSFinV-K

Per la verifica fiscale della cassa, DiKAS esporta i dati nel formato DSFinV-K:

  1. Admin → Impostazioni → Esportazione → DSFinV-K
  2. Selezionare il periodo
  3. „Crea esportazione"
  4. File ZIP con tutti i file CSV prescritti

Esportazione GDPdU

Per la verifica fiscale digitale:

  1. Admin → Impostazioni → Esportazione → GDPdU
  2. Selezionare il periodo
  3. „Crea esportazione"
  4. File di esportazione conforme a GDPdU

Interruzione della TSE

Se la TSE si interrompe (guasto, problema di rete):

  1. DiKAS registra automaticamente l'interruzione (TseOutageLog con StartTime, Reason, AffectedTransactions)
  2. La cassa non viene bloccata — l'attività prosegue
  3. Il campo TseError sul documento interessato viene impostato
  4. Al ripristino della disponibilità le voci di interruzione aperte vengono chiuse (EndTime impostato)
  5. I registri delle interruzioni vengono conservati per l'Agenzia delle Entrate

Importante: In caso di interruzione della TSE si è tenuti a documentare l'interruzione e a risolverla tempestivamente. DiKAS si occupa automaticamente della documentazione.

Garanzia di qualità

La firma TSE è garantita da test automatizzati. Vengono verificati tra l'altro:

  • i formati ProcessData per Kassenbeleg-V1 (una/più aliquote fiscali, scontrino a zero) e Bestellung-V1
  • la generazione del codice QR (formato V0)
  • il flusso di firma (TSE attiva, disattivata, non disponibile)
  • la formattazione degli importi e il comportamento in caso di interruzione della TSE

Domande frequenti sulla TSE

Devo avere una TSE? Sì, dal 01.01.2020 è obbligatoria in Germania.

Quale TSE supporta DiKAS? La TSE hardware Swissbit (USB, in sede), la TSE cloud fiskaly (SIGN DE, tramite Internet) e la rete TSE (più casse condividono una TSE).

Quanto costa una TSE? Dipende dalla variante scelta: una TSE hardware è un acquisto una tantum, una TSE cloud viene fatturata in modo continuativo. Le condizioni attuali sono disponibili presso DiKAS.

L'Agenzia delle Entrate può verificare i miei dati? Sì, tramite esportazione DSFinV-K, GDPdU e TSE-TAR. DiKAS è predisposto a tale scopo.

Un'interruzione della TSE blocca la cassa? No. DiKAS registra l'interruzione e prosegue. L'interruzione deve essere risolta tempestivamente.


Documenti di approfondimento

Conformità TSE per i verificatori fiscali — Documentazione tecnica dettagliata per la verifica fiscale → Guida TSE per gli utenti — Configurazione e utilizzo → Notifica di cassa all'ufficio delle imposte — Notificare il registratore di cassa tramite Mein ELSTER (§ 146a comma 4 AO) → Sviluppo di plugin — Creare moduli propri