Ana içeriğe geç
v26.3

TSE ve Maliye

01.01.2020 tarihinden bu yana Almanya'da kasa sistemleri için bir Teknik Güvenlik Donanımı (TSE) zorunludur (KassenSichV, §146a AO). DiKAS tamamen TSE uyumludur ve §146a AO'ya ilişkin AEAO uyarınca kasayla ilgili tüm işlemleri imzalar.

Vergi denetçileri için:TSE Uyumluluğu — Vergi denetçileri için dokümantasyon (ayrıntılı teknik açıklama)

Kullanıcılar için:Kullanım kılavuzundaki TSE talimatı (kurulum ve kullanım)


TSE nedir?

TSE, her kasa işlemini dijital olarak imzalayan sertifikalı bir güvenlik modülüdür. Maliye bununla kasa verilerinin sonradan manipüle edilip edilmediğini kontrol edebilir.

DiKAS'ta TSE

DiKAS kasayla ilgili tüm işlemleri imzalar — yalnızca faturaları değil:

İşlem ProcessType Entity Açıklama
Fişler Kassenbeleg-V1 Receipt Her ödeme (Doğrudan satış, masa ödemesi)
İptaller Kassenbeleg-V1 Receipt Her fiş iptali
Siparişler Bestellung-V1 OpenBon Masa servisindeki her sipariş
Toplu siparişler Bestellung-V1 OpenBon Toplu siparişler (imza Lead-Bon üzerinde)
Vardiya açılışı SonstigerVorgang Exchange Her vardiya açılışı
Vardiya kapanışı SonstigerVorgang Exchange Her vardiya kapanışı
Gün sonu raporları SonstigerVorgang DayClose Her Z raporu
Giderler SonstigerVorgang Spending Her nakit çıkışı

Mimari

İmzalama akışı

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)

Giderler (Spendings): SonstigerVorgang olarak imzalanır; işlem metni AccountMode'a göre belirlenir:

AccountMode TSE işlem türü
1 (Gider) AVSonstAusgabe
2 (Kasa→Banka) AVTransfer
3 (Banka→Kasa) AVSonstEinlage
4 (Havale) AVSonstAusgabe

Bileşenler

Bileşen Açıklama
TseSigningHelper Tüm TSE imzalamaları için merkezi statik sınıf
ITseService TSE erişimi için arayüz (IsAvailable, Sign, Export)
TseServiceRouter Yönlendirme: Proxy tercih edilir, donanıma geri dönüş
SwissbitTseService Yerel Swissbit USB-TSE
TseProxyService HTTP proxy üzerinden ağ TSE'si
TseInitializationService TSE ilk başlatma
ITseDataHolder İmzalanan tüm varlıklarda 9 TSE alanı içeren arayüz
TseOutageLog Arıza protokolü varlığı
TseConfig TSE yapılandırması (PublicKey, Serial, SigAlg, PIN'ler)

ProcessData formatları

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

QR kod formatı (DSFinV-K Ek I)

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

Kurulum

Donanım TSE'si (Swissbit)

Sunucuda USB bellek:

  1. Swissbit TSE'yi takın
  2. Yönetici → Ayarlar → TSE
  3. TSE türü: Donanım
  4. TSE'ye yerel yolu belirtin
  5. Kasa seri numarasını girin
  6. „Başlat" — PIN'leri ayarlar ve istemciyi kaydeder

TSE Proxy (Ağ)

Birden fazla kasaya sahip dağıtık sistemler için:

  1. TSE proxy sunucusunu kurun
  2. Yönetici → Ayarlar → TSE
  3. TSE türü: Proxy
  4. Proxy sunucusunun URL'sini girin
  5. „Etkinleştir"

API Uç Noktaları

Yöntem Uç Nokta Açıklama
GET /api/v1/tse/info TSE durum bilgileri (kapasite, sertifika, imzalar)
GET /api/v1/tse/config TSE yapılandırmasını oku
PUT /api/v1/tse/config TSE yapılandırmasını güncelle
POST /api/v1/tse/initialize TSE'yi başlat
GET /api/v1/tse/export/tar TSE günlük verilerini TAR olarak dışa aktar (isteğe bağlı ?startDate=&endDate=)

Fiş üzerindeki TSE verileri

Her fiş, TSE verilerini içerir:

══════════════════════════════════
  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]
══════════════════════════════════

QR kodu, tüm TSE verilerini DSFinV-K formatında (Ek I) içerir ve maliye tarafından taranabilir.

DSFinV-K Dışa Aktarma

Kasa denetimi için DiKAS, verileri DSFinV-K formatında dışa aktarır:

  1. Yönetici → Ayarlar → Dışa aktar → DSFinV-K
  2. Dönem seçin
  3. „Dışa aktarma oluştur"
  4. Zorunlu tüm CSV dosyalarını içeren ZIP dosyası

GDPdU Dışa Aktarma

Dijital işletme denetimi için:

  1. Yönetici → Ayarlar → Dışa aktar → GDPdU
  2. Dönem seçin
  3. „Dışa aktarma oluştur"
  4. GDPdU uyumlu dışa aktarma dosyası

TSE arızası

TSE arızalandığında (arıza, ağ sorunu):

  1. DiKAS arızayı otomatik olarak kaydeder (TseOutageLog ile StartTime, Reason, AffectedTransactions)
  2. Ödeme alma engellenmez — işletme devam eder
  3. İlgili belge üzerindeki TseError alanı ayarlanır
  4. Yeniden kullanılabilir olduğunda, açık arıza kayıtları kapatılır (EndTime ayarlanır)
  5. Arıza protokolleri maliye için saklanır

Önemli: TSE arızasında, arızayı belgelemek ve zamanında gidermekle yükümlüsünüz. DiKAS belgelemeyi otomatik olarak yapar.

Testler

TseSigningTests.cs içinde 17 özel TSE testi:

  • Kassenbeleg-V1 için ProcessData formatı (bir/birden fazla vergi oranı, sıfır belge)
  • Bestellung-V1 için ProcessData formatı (tekli, birden fazla pozisyon)
  • QR kod oluşturma (V0 formatı, sıfır durumları)
  • İmzalama akışı (TSE etkin, devre dışı, kullanılamaz)
  • ClientId geri dönüş zinciri (CashRegisterId → BonIdServer → "1")
  • Tutar biçimlendirme (InvariantCulture)
  • ProcessType sabitleri

TSE ile İlgili Sık Sorulan Sorular

Bir TSE'ye sahip olmak zorunda mıyım? Evet, 01.01.2020 tarihinden bu yana Almanya'da zorunludur.

DiKAS hangi TSE'yi destekler? Donanım TSE'si (Swissbit USB) ve ağ tabanlı TSE proxy'leri.

Bir TSE ne kadar maliyetlidir? Donanım TSE'si: tek seferlik yaklaşık 250–300 EUR.

Maliye verilerimi denetleyebilir mi? Evet, DSFinV-K, GDPdU ve TSE-TAR dışa aktarma üzerinden. DiKAS buna hazırdır.

Bir TSE arızası kasayı engeller mi? Hayır. DiKAS arızayı kaydeder ve çalışmaya devam eder. Arıza zamanında giderilmelidir.


İleri Okuma Belgeleri

Vergi denetçileri için TSE Uyumluluğu — İşletme denetimi için ayrıntılı teknik dokümantasyon → Kullanıcılar için TSE talimatı — Kurulum ve kullanım → Maliyeye kasa bildirimi — Kasayı Mein ELSTER üzerinden bildirme (§ 146a Abs. 4 AO) → Eklenti geliştirme — Kendi modüllerinizi oluşturma