fiskaltrust / middleware

The fiskaltrust.Middleware is an integrated set of highly configurable software components for POS systems to abstract the complexity of national fiscalization laws.
https://docs.fiskaltrust.eu
European Union Public License 1.2
9 stars 4 forks source link

DE 2024 KassenSichV / TSE SerialNumber on receipt #180

Closed saschaknapp closed 1 year ago

saschaknapp commented 1 year ago

The new AEAO / KassenSichV valid from 1.1.2024 requires the TSE serialnumber to be printed on the receipt if the QR-Code isn't used. Currently the middleware doesn't return the TSE serialnumber in the ftSignatureTypes.

What we need:

legal baseline:

AEAO zu §146 https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/AO-Anwendungserlass/2023-06-30-AEAO-Par-146-AO.pdf?__blob=publicationFile&v=2

2.4.4 Der Beleg muss mindestens folgende Angaben enthalten:

  1. Den vollständigen Namen und die vollständige Anschrift des leistenden Unternehmers (vgl. § 6 Satz 1 Nr. 1 KassenSichV).
  2. Das Datum der Belegausstellung und den Zeitpunkt des Vorgangsbeginns sowie den Zeitpunkt der Vorgangsbeendigung (vgl. AEAO zu § 146a, Nr. 2.2.3.3)
  3. Die Menge und die Art der gelieferten Gegenstände oder den Umfang und die Art der sonstigen Leistung (vgl. auch AEAO zu § 146, Nr. 2.1.3).
  4. Die Transaktionsnummer i. S. d. § 2 Satz 2 Nr. 2 KassenSichV (vgl. AEAO zu § 146a, Nr. 2.2.2)
  5. Das Entgelt und den darauf entfallenden Steuerbetrag für die Lieferung oder sonstige Leistung in einer Summe sowie den anzuwendenden Steuersatz oder im Fall einer Steuerbefreiung einen Hinweis darauf, dass für die Lieferung oder sonstige Leistung eine Steuerbefreiung gilt. Erfordert ein Geschäftsvorfall (vgl. AEAO zu § 146a, Nr. 1.10) nicht die Erstellung einer Rechnung i. S. d. § 14 UStG, sondern einen sonstigen Beleg (z. B. Lieferschein), wird nicht beanstandet, wenn dieser Beleg nicht den unter § 6 Satz 1 Nr. 5 KassenSichV geforderten Steuerbetrag enthält.
  6. Die Seriennummer des elektronischen Aufzeichnungssystems sowie die Seriennummer des Sicherheitsmoduls. … Sofern ein QR-Code gemäß Anhang I der DSFinV-K anstelle der für jedermann ohne maschinelle Unterstützung lesbaren Daten verwendet wird, gelten die vorgenannten Anforderungen als erfüllt.

Das Wort „sowie“ ersetzt das Wort „oder“ aus der vorherigen Fassung. Das sind die Anforderungen an den Beleg.

Der Verweis auf die DSFInV-K für den QR-Code zeigt nun folgenden Hinweis: Hinweis: Um derzeit eine Belegprüfung durchführen zu können, muss der Public-Key mit im QR-Code enthalten sein. Die Seriennummer des TSE entfällt dabei aus Platzgründen (kann für die Validierung aus dem Public-Key errechnet werden (SHA256 als OctetString)).

Zusammengefasst: Ab 01.01.2024 muss die TSE Seriennummer auf dem Kassenbon mit ausgedruckt werden. Im QR-Code kann diese aus Platzgründen weggelassen werden.

TSchmiedlechner commented 1 year ago

Hey @saschaknapp, thanks for bringing this up! @mijomilicevic we shouldn't forget to also use the "optional printing" ftSignatureFormat flag for this one (0x0000000000010000).

StefanKert commented 1 year ago

Hi folks,

quick question on this one. Currently one of the optional signatures is the public key of the TSE (https://github.com/fiskaltrust/middleware/blob/main/queue/src/fiskaltrust.Middleware.Localization.QueueDE/SignatureFactoryDE.cs#L127). AFAIK this is connected to the TSE SerialNumber.

In the document that you have attached @saschaknapp there is no information on a requirement to print the public key.

So I am not sure if we already fulfill that requirement (since the public key should be enough) or if we can get rid of the public key as a signature that has to be printed.

saschaknapp commented 1 year ago

Hi @StefanKert , i can't find the requirement for the public key either. The serial number of the TSE is the only new mandatory requirement for the receipt. I do wonder how a validation of the signature should work without the public key though. That's why the public key is included in the QR code instead of the TSE serial. I haven't seen a receipt without a QR code that doesn't contain the public key in real life yet. IMO we should keep it as an optional parameter and add the TSE serial as required new parameter. That way we're always ready if the public key does suddenly become mandatory.