TSE ve Maliye¶
01.01.2020 tarihinden bu yana Almanya'da kasa sistemleri için bir Teknik Güvenlik Donanımı (TSE) zorunludur (Kasa Güvenlik Yönetmeliği (KassenSichV), Vergi Kanunu (AO) § 146a). 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 (CashRegisterId → 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 |
Aktif TSE'ye yönlendirme: önce fiskaly bulut TSE'si, sonra ağ TSE'si, ardından yerel Swissbit donanımı tercih edilir |
FiskalyTseService |
fiskaly bulut TSE'si (SIGN DE) — internet üzerinden imzalar, USB cihazı gerekmez |
SwissbitTseService |
Yerel Swissbit USB-TSE |
TseProxyService |
Ağ TSE'si: TSE ana bilgisayarı (Host) olarak görev yapan başka bir DiKAS kasası üzerinden imzalar (BonIdServer) |
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ı¶
Aşağıdaki karakter dizileri TSE'ye iletilir ve TSE tarafından imzalanır. Ayrıntılı, denetçi odaklı açıklama için bkz. TSE Uyumluluğu dokümantasyonu, Bölüm 4.
Kassenbeleg-V1 — beş brüt tutardan oluşan sabit bir vergi bölümü (%19 / %7 / %10,7 / %5,5 / %0), ardından <Tutar>:<Bar|Unbar> biçiminde ödeme bölümü (önce nakit ödemeler):
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 — her sipariş kalemi için bir satır; tanım tırnak içinde yer alır, fiyat brüt birim fiyattır:
SonstigerVorgang — işlem kısaltması ve veriler, ^ ile ayrılmış:
DiKAS bunun için altı işlem kısaltması kullanır: AVSichOpen (vardiya açılışı), AVSichClose (vardiya kapanışı), AVKassenschnitt (gün sonu raporu), AVSonstAusgabe (gider/nakit çıkışı), AVSonstEinlage (nakit girişi) ve AVTransfer (para transferi). Bir iptal, SonstigerVorgang değildir — negatif tutarlara sahip bir Kassenbeleg-V1'dir.
QR kod formatı (DSFinV-K Ek I)¶
V0;{KassenSerial};{ProcessType};{ProcessData};{TransNr};{SignZähler};{Start};{Ende};{SigAlg};{LogFormat};{Signatur};{PublicKey}
Kurulum¶
Yönetici → Ayarlar → Finans → TSE ekranı, TSE durumunu ve dışa aktarmaları (TSE-TAR, DSFinV-K, GDPdU) gösterir. Orada tam olarak iki ayar bulunur: „TSE aktif" anahtarı ve isteğe bağlı „TSE sunucusu" alanı. Bir „TSE türü" açılır menüsü yoktur — hangi TSE'nin kullanılacağı sunucu yapılandırmasından belirlenir. DiKAS başlangıçta şu sırayla kontrol eder: Bulut TSE'si (fiskaly) → TSE sunucusu (Verbund) → yerel Swissbit-TSE.
Bulut TSE'si (fiskaly)¶
USB cihazı gerekmez — imzalama, internet üzerinden sertifikalı fiskaly bulutu (SIGN DE) ile gerçekleşir. Erişim bilgileri (API-Key, API-Secret, TSS-ID, Client-ID) sunucu yapılandırmasında bulunur (appsettings içinde Tse:* ya da ortam değişkenleri), Test veya Live ortamı seçilebilir. Cloud-TSE'si etkinleştirilmiş DiKAS Cloud paketlerinde bu zaten önceden yapılandırılmıştır — başka bir işlem gerekmez.
Bir bulut TSE'si yapılandırıldığında, otomatik olarak önceliklidir.
Donanım TSE'si (Swissbit)¶
Kasa bilgisayarında veya cihazda (Appliance) USB bellek:
- Swissbit TSE'yi takın
- TSE'nin yerel yolunu (bağlama noktasını) sunucu yapılandırmasında belirtin
- Yönetici → Ayarlar → Finans → TSE → „TSE aktif"i etkinleştirin
Başlatma sırasında DiKAS, PIN'leri/PUK'ları kendisi belirler (cihaz başına rastgele) ve kasayı istemci olarak kaydeder. Kasa kimliği lisanstan gelir — manuel bir seri numarası alanı yoktur.
TSE ağı / Verbund (birden fazla kasa, tek TSE)¶
Birden fazla kasası olan ve tek bir TSE'yi paylaşan işletmeler için: Bir kasa TSE ana bilgisayarı (Host) olur, diğerleri yerel ağ üzerinden bu kasa aracılığıyla imzalar.
- Yönetici → Ayarlar → Finans → TSE
- „TSE sunucusu" alanına, TSE ana bilgisayarı (Host) olarak görev yapan kasanın adresini girin (örn.
https://kasse1.local) - „TSE aktif"i etkinleştirin
Arızada otomatik devre dışı bırakma
TSE başlatma işlemi başlangıçta birden fazla kez başarısız olursa, TSE otomatik olarak devre dışı kalır ve kasa üst bilgisinde „TSE devre dışı" ifadesi görünür. Kullanıcılar için ayrıntılar: Günlük kasa kullanımında TSE.
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 (mali idarenin standart dijital arayüzü) formatında dışa aktarır:
- Yönetici → Ayarlar → Dışa aktar → DSFinV-K
- Dönem seçin
- „Dışa aktarma oluştur"
- Zorunlu tüm CSV dosyalarını içeren ZIP dosyası
GDPdU Dışa Aktarma¶
Dijital işletme denetimi için:
- Yönetici → Ayarlar → Dışa aktar → GDPdU
- Dönem seçin
- „Dışa aktarma oluştur"
- GDPdU uyumlu dışa aktarma dosyası
TSE arızası¶
TSE arızalandığında (arıza, ağ sorunu):
- DiKAS arızayı otomatik olarak kaydeder (
TseOutageLogile StartTime, Reason, AffectedTransactions) - Ödeme alma engellenmez — işletme devam eder
- İlgili belge üzerindeki
TseErroralanı ayarlanır - Yeniden kullanılabilir olduğunda, açık arıza kayıtları kapatılır (EndTime ayarlanır)
- 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.
Kalite Güvencesi¶
TSE imzalama işlemi, otomatikleştirilmiş testlerle güvence altına alınmıştır. Diğerlerinin yanı sıra şunlar kontrol edilir:
- Kassenbeleg-V1 için ProcessData formatları (tek/birden fazla vergi oranı, sıfır belge) ve Bestellung-V1
- QR kod oluşturma (V0 formatı)
- İmzalama akışı (TSE etkin, devre dışı, kullanılamaz)
- Tutar biçimlendirmesi ve bir TSE arızası durumundaki davranış
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? Swissbit donanım TSE'sini (USB, yerinde), fiskaly bulut TSE'sini (SIGN DE, internet üzerinden) ve ağdaki TSE Verbund'unu (birden fazla kasa bir TSE'yi paylaşır) destekler.
Bir TSE ne kadar maliyetlidir? Bu, seçilen çözüme bağlıdır: Donanım TSE'si tek seferlik bir satın almadır, bulut TSE'si ise düzenli olarak faturalandırılır. Güncel koşulları DiKAS'tan öğrenebilirsiniz.
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 (vergi dairesinin çevrimiçi portalı) üzerinden bildirme (§ 146a Abs. 4 AO) → Eklenti geliştirme — Kendi modüllerinizi oluşturma