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 (CashPointSerial → 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: proxy preferito, fallback su hardware
SwissbitTseService TSE USB Swissbit locale
TseProxyService TSE di rete tramite proxy HTTP
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

Kassenbeleg-V1:

Beleg^{BruttoGesamt}_{MwStSatz1}:{MwStBetrag1}_{MwStSatz2}:{MwStBetrag2}
Beispiel: Beleg^50.00_19.00:5.00_7.00:2.00

Bestellung-V1:

{Menge}^{Artikeltext}^{BruttoBetrag};{Menge}^{Artikeltext}^{BruttoBetrag}
Beispiel: 2.00^Cola^7.00;1.00^Pizza^11.50

SonstigerVorgang:

{Vorgangstyp}^{Vorgangsdaten}
Beispiel: AVKassenschnitt^Tagesabschluss^1500.00

Formato del codice QR (DSFinV-K Allegato I)

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

Configurazione

TSE hardware (Swissbit)

Chiavetta USB sul server:

  1. Inserire la TSE Swissbit
  2. Admin → Impostazioni → TSE
  3. Tipo di TSE: Hardware
  4. Indicare il percorso locale della TSE
  5. Inserire il numero di serie della cassa
  6. „Inizializza" — imposta i PIN e registra il client

TSE Proxy (rete)

Per sistemi distribuiti con più casse:

  1. Configurare il server TSE Proxy
  2. Admin → Impostazioni → TSE
  3. Tipo di TSE: Proxy
  4. Inserire l'URL del server proxy
  5. „Attiva"

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.

Test

17 test TSE dedicati in TseSigningTests.cs:

  • Formato ProcessData per Kassenbeleg-V1 (una/più aliquote fiscali, giustificativo a zero)
  • Formato ProcessData per Bestellung-V1 (singola, più posizioni)
  • Generazione del codice QR (formato V0, casi nulli)
  • Flusso di firma (TSE attiva, disattivata, non disponibile)
  • Catena di fallback per ClientId (CashRegisterId → BonIdServer → "1")
  • Formattazione degli importi (InvariantCulture)
  • Costanti ProcessType

Domande frequenti sulla TSE

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

Quale TSE supporta DiKAS? TSE hardware (Swissbit USB) e TSE Proxy basate su rete.

Quanto costa una TSE? TSE hardware: ca. 250–300 EUR una tantum.

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