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 firma tutti i processi rilevanti ai fini di cassa con una TSE certificata 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)
Nessuna consulenza fiscale
Le indicazioni su scadenze, obblighi e imposte di questa pagina sono un supporto orientativo e non sostituiscono la consulenza fiscale. Chiarisca i dettagli legali con il Suo commercialista o con l'ufficio delle imposte.
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:
SonstigerVorgang — sigla del processo e dati, separati da ^:
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 → TSE mostra stato ed esportazioni. Una TSE hardware locale viene messa in funzione con l'unica azione «Attiva TSE ora». DiKAS distingue automaticamente una TSE nuova, una già associata a DiKAS e una proveniente da un altro sistema.
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:
- Inserire la TSE Swissbit
- Indicare il percorso locale (punto di mount) della TSE nella configurazione del server
- Admin → Impostazioni → TSE → fare clic su «Attiva TSE ora»
Per una TSE configurata ma sconosciuta DiKAS si ferma senza tentare l'accesso. Il salvataggio delle credenziali modificate del sistema precedente avvia esattamente un tentativo. Dopo una presa in carico riuscita, DiKAS imposta le credenziali DiKAS e registra la cassa come client.
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.
- Admin → Impostazioni → Finanze → TSE
- Nel campo «Server TSE» inserire l'indirizzo della cassa che funge da host TSE (es.
https://kasse1.local) - 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/activate |
Rilevare, configurare e attivare atomicamente la TSE locale dopo il successo |
| 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:
- Admin → Impostazioni → Esportazione → DSFinV-K
- Selezionare il periodo
- „Crea esportazione"
- File ZIP con tutti i file CSV prescritti
Esportazione GDPdU¶
Per la verifica fiscale digitale:
- Admin → Impostazioni → Esportazione → GDPdU
- Selezionare il periodo
- „Crea esportazione"
- File di esportazione conforme a GDPdU
Interruzione della TSE¶
Se la TSE si interrompe (guasto, problema di rete):
- DiKAS registra automaticamente l'interruzione (
TseOutageLogcon StartTime, Reason, AffectedTransactions) - La cassa non viene bloccata — l'attività prosegue
- Il campo
TseErrorsul documento interessato viene impostato - Al ripristino della disponibilità le voci di interruzione aperte vengono chiuse (EndTime impostato)
- 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