Door Kristijan Sekereš
Tsjechische EET 2.0 vanaf 1 januari 2027: wat maatwerksoftware voor kassa's en kiosken moet doen

De Tsjechische verkoopregistratie is terug. President Petr Pavel ondertekende de EET 2.0-wet op 17 september 2026, en de aankondiging van de Tsjechische belastingdienst is duidelijk over de datum: de plicht om verkopen te registreren begint op 1 januari 2027. Ze geldt voor betalingen met contact tussen bedrijf en klant, inclusief alle contante betalingen. Contant, pin, telefoon of QR-code: betaalt de klant in persoon of in uw zaak, dan gaat de verkoop direct naar de belastingdienst.
Voor de meeste kleine ondernemers betekent dit een update van de leverancier of een gratis webapp van de overheid. Voor ketens met eigen kassasoftware, zelfbedieningskiosken of een betaalapp die medewerkers over de vloer meenemen, is het een integratieproject met nog ongeveer 90 dagen te gaan. Dit artikel is voor hen.
Wat er sinds de eerste EET is veranderd
De oorspronkelijke EET werd in 2022 afgeschaft. EET 2.0 houdt het kernidee vast (elke verkoop die eronder valt, wordt online verstuurd en door de overheid bevestigd) en laat veel ballast vallen:
- Minimale gegevens. Het oude systeem splitste elke verkoop per btw-tarief. EET 2.0 verstuurt één totaal inclusief btw, wat de tarieven ook zijn.
- Geen bonplicht. Bedrijven hoeven voor de EET geen bon meer uit te reiken, en de bevestigingscode hoeft er niet op te staan.
- Een smallere reikwijdte. Alleen betalingen met contact tussen klant en bedrijf worden geregistreerd; het oude systeem dekte een breder scala aan betalingen.
- Een gratis overheidsoptie. MOJE eet, een webapp voor de kleinste bedrijven, plus een opt-out die EET OFF heet voor bepaalde eenmanszaken met een forfaitaire regeling.
De technische verandering is groter dan de lijst doet vermoeden. Het transport is bekend: SOAP 1.1 over HTTPS met WS-Security-handtekeningen, zoals voorheen. Het bericht niet. De nieuwe interface is versie 4.1, de oude was 3.1, en de specificatie zegt dat de wijzigingen van 2026 “onverenigbaar zijn met het vorige systeem”. De presentatie van het ontwikkelaarsseminar noemt de BKP-beveiligingscode, de vlag voor de vereenvoudigde modus en de btw-posten als verwijderd. Oude EET-code is een referentie voor het loodgieterswerk en niets meer.
Wat eronder valt
De officiële pagina over wie verkopen moet registreren stelt drie voorwaarden: de betaling is een betaling met contact of een contante betaling, ze is bedrijfsinkomen, en er geldt geen vrijstelling.
Een betaling met contact vindt plaats in persoonlijk contact met u of uw personeel, of in uw zaak of voertuig in verband met de goederen of de dienst. De seminarpresentatie zegt ronduit dat de tweede regel gericht is op zelfscankassa's en zelfbedieningsruimtes. Een kiosk in uw winkel valt eronder, ook al raakt geen medewerker de transactie aan. Contant geld wordt altijd geregistreerd, ook buiten uw zaak, behalve bij rembours dat door een postdienst wordt geïnd.
De betaalwijze doet er niet toe. Contant, pin, QR-code, een overschrijving of automatische incasso die aan het verkooppunt wordt gedaan, cryptoactiva, cadeaukaarten, maaltijdcheques en prepaidkaarten staan allemaal op de lijst.
Betalingen op afstand vallen erbuiten: een webwinkel die via een betaalgateway wordt betaald, of een factuur die de klant vanaf kantoor betaalt. Wat telt is hoe het geld werkelijk is overgemaakt, niet wat er op de factuur staat. Betaalt een klant CZK 200 met de pinpas aan de toonbank en de resterende CZK 800 de volgende dag per overschrijving vanuit huis, dan wordt alleen de CZK 200 geregistreerd.
Verkoopautomaten die zelf een verkoopruimte vormen (de koffieautomaat is het officiële voorbeeld) zijn vrijgesteld, net als zelfbedieningskraampjes buiten uw zaak waar registratie onpraktisch zou zijn. De lijst met vrijstellingen dekt onder meer ook publieke instanties, banken, kansspelen en energie.
Wie het meeste hiervan kan overslaan
Microbedrijven kunnen MOJE eet gebruiken, dat op 1 december 2026 van start gaat. Het ontwikkelaarsseminar van juni presenteerde het voor bedrijven met maximaal twee registratie-eenheden en twee werknemers. Eenmanszaken met een forfaitaire regeling in de eerste schijf en een inkomen tot CZK 1 miljoen kunnen zich via EET OFF afmelden.
Bedrijven met een gangbaar kassaproduct horen een update van hun leverancier te krijgen. Vraag wanneer die komt en wat er gebeurt bij een storing, registreer daarna in het belastingportaal en installeer het certificaat.
Alle anderen lezen beter door: eigen of aangepaste kassasoftware, zelfgebouwde kiosken, betaalapps voor personeel, of een concern waarin één betaling bij twee bedrijven kan horen.
Wat er moet worden gebouwd
Alles staat op de pagina met documenten voor ontwikkelaars: de interfacebeschrijving (de Engelse versie is niet bindend), de XSD en WSDL, voorbeelden van ondertekende verzoeken en certificaten voor de testomgeving.
Registratie-eenheden en apparaat-ID's
Elk bericht bevat een ID van de registratie-eenheid. U maakt eenheden aan (een winkel, een mobiele stand, een bestelwagen) in DIS+, het belastingportaal, en het systeem kent elke eenheid een nummer toe. Ketens kunnen eenheden in bulk importeren, en wijzigingen moeten binnen 15 dagen worden gemeld. Uw kassasysteem heeft een bijgehouden koppeling nodig van elke locatie naar het ID van de eenheid, plus een apparaat-ID van maximaal 20 tekens dat binnen de eenheid uniek is.
Certificaten
Hier verliezen maatwerksystemen meestal tijd. De certificaatprocedure beschrijft de stappen:
- Het sleutelpaar wordt gegenereerd door de EET-certificeringsautoriteit, niet op uw apparaat. U downloadt een met een wachtwoord beveiligd PKCS#12-bestand, dat beschikbaar blijft tot u de download bevestigt, en hoogstens 30 dagen.
- Het bestand gebruikt de verouderde 3DES-versleuteling, met het oog op oudere kassa's. Het document waarschuwt dat het op OpenSSL 3 mogelijk niet laadt zonder de legacy provider, en raadt aan het opnieuw te verpakken of de sleutel naar een kluis te verplaatsen.
- Certificaten zijn een jaar geldig. Eén certificaat kan één apparaat of meerdere bedienen; hoeveel u er uitgeeft, beslist u zelf.
- Verlenging kan worden geautomatiseerd via een REST-API: een kortlevende JWT, ondertekend met het certificaat dat wordt verlengd, daarna het verzoek pollen, downloaden en bevestigen. De autoriteit raadt aan twee tot drie weken vóór het verlopen te verlengen. Is een certificaat eenmaal verlopen, dan is de API-route dicht en verlengt iemand het met de hand.
- De bescherming van de privésleutel is de wettelijke plicht van de belastingplichtige. Eén sleutelbestand dat naar veertig kassa's is gekopieerd, is een intrekking die op het punt staat te gebeuren.
Het gegevensbericht
De header bevat bij elke poging een nieuwe UUID, het verzendtijdstip, een vlag voor de eerste poging en een optionele vlag voor verificatie. Het gegevensdeel bevat het EIČ van de belastingplichtige, het ID van de eenheid, het apparaat-ID, een volgnummer (maximaal 25 tekens, uniek per eenheid en apparaat), het tijdstip van verkoop met de afwijking van de tijdzone, en het totaal in CZK met precies twee decimalen. Twee optionele bedragen dekken het opwaarderen en het besteden van prepaidtegoed; twee andere velden dekken registratie namens een andere belastingplichtige.
Registreer wat werkelijk is ontvangen: een contante rekening van 78,90 die naar 79 wordt afgerond, gaat erin als 79,00, dezelfde rekening per pin als 78,90. Een rekening die deels met maaltijdcheques en deels per pin wordt betaald, is één bericht met het totaal.
Ondertekenen en versturen
Elk bericht wordt ondertekend met XML Signature in de WS-Security-header: exclusieve canonicalisatie, een SHA-256-digest, RSA-SHA256, het certificaat bijgevoegd als BinarySecurityToken, en alleen de SOAP-body ondertekend. Laat extra headers zoals Timestamp of WS-Addressing weg: berichten boven 12 kB worden geweigerd, en een bericht dat op een aanval lijkt, krijgt misschien helemaal geen antwoord. TLS 1.2 of hoger is verplicht, en de client moet het servercertificaat controleren. Productie gebruikt DNS-balancering, dus resolve de hostnaam bij elke verbinding in plaats van een IP-adres vast te zetten.
Sinds versie 1.2 ondersteunt het endpoint CORS, zodat een kassasysteem in de browser het rechtstreeks kan aanroepen. Beslis waar de privésleutel staat voordat iemand die JavaScript schrijft.
Antwoorden, storingen en de regel van 48 uur
Een geldig bericht krijgt een synchroon antwoord met een bevestigingscode (POK) van 39 tekens, ondertekend door de belastingdienst. Controleer die handtekening en sla de POK op bij de verkoop. Een ongeldig bericht krijgt een foutcode; -1 betekent een tijdelijke fout, dus verstuur het later opnieuw. Kleinere problemen komen terug als waarschuwingen, waaronder een als het tijdstip van verkoop meer dan twee uur vóór de klok van de server ligt. Klokken van kiosken lopen uit. Synchroniseer ze.
De time-out voor het antwoord stelt u zelf in, op minimaal twee seconden. Komt er niet op tijd een POK, dan gaat de verkoop naar een wachtrij. Volgens de seminarpresentatie gebruikt de nieuwe poging de oorspronkelijke body met een nieuwe header: nieuwe UUID, vlag voor de eerste poging op false, nieuw verzendtijdstip, oorspronkelijk tijdstip van verkoop. Het bericht gaat weg zodra de verbinding terug is, en uiterlijk 48 uur na de verkoop. Na 48 uur vervalt de plicht ook niet: een te laat bericht blijft verschuldigd.
De wachtrij moet dus een herstart overleven en ruim vóór de 48 uur alarm slaan. Nog één valkuil: verloopt het certificaat terwijl verkopen wachten, dan moeten ze met een op dat moment geldig certificaat worden ondertekend.
Terugbetalingen, correcties en duplicaten
Een terugbetaling of annulering is een nieuw bericht met een negatief bedrag, gedateerd op nu en niet gekoppeld aan het origineel. Een correctie is ofwel een annulering gevolgd door het juiste bericht, ofwel één verschilbericht. Duplicaten worden herkend aan zes velden (EIČ, eenheid, apparaat, volgnummer, tijdstip van verkoop en totaal), dus een nieuwe poging met dezelfde body is veilig. Een nieuwe poging die het volgnummer opnieuw genereert, is een tweede verkoop.
Bonnen
Minder werk dan onder de eerste EET: voor de EET is geen bon verplicht, en de POK hoeft er niet op te staan. Verwijder code die het afdrukken tegenhoudt tot de POK binnen is. Waar u op grond van het consumentenrecht bonnen uitreikt, houd het EET-volgnummer dan in lijn met het bonnummer; de specificatie merkt op dat de twee in de praktijk meestal gelijk zijn.
Randgevallen waar ketens tegenaan lopen
- Prepaidkaarten, polsbandjes en wallets: het opwaarderen en elke besteding worden geregistreerd, met de extra bedragvelden ingevuld.
- Eén betaling, twee belastingplichtigen: het tankstationvoorbeeld uit de presentatie (brandstof verkocht namens een ander bedrijf, koffie voor eigen rekening) vraagt om twee berichten, elk met de gegevens van de eigen belastingplichtige.
De planning
- 5 juni 2026: technische documentatie gepubliceerd.
- 1 juli 2026: de testomgeving ging open. Tussen 26 juli en 26 augustus verwerkte ze 170.389 testtransacties van 624 IP-adressen van clients, waarvan 94,6% met succes werd verwerkt.
- 1 november 2026: EET in DIS+, registratie-eenheden en productiecertificaten.
- 1 december 2026: MOJE eet gaat van start.
- 1 januari 2027: de plicht begint voor iedereen tegelijk, zonder fasering.
Het officiële schema noemt januari een pilotmaand, en voegt eraan toe dat het al om reguliere registratie gaat. Een eerdere aankondiging beschreef de pilot als vrijwillig. Tot dat is opgehelderd, kunt u het beste plannen om vanaf 1 januari echte berichten te versturen.
Er resteert één formele stap: toen de ondertekening op 22 september werd aangekondigd, moest de publicatie in de Sbírka zákonů (de Tsjechische wettenverzameling) nog volgen. Dat is routine.
Een plan van 90 dagen
Oktober: reikwijdte en bouwen.
- Maak een lijst van elk punt waar geld van eigenaar wisselt: kassa's, kiosken, handhelds, stromen voor bestellen aan tafel die in de zaak worden betaald, eigen chauffeurs die contant geld innen. Wijs elk punt toe aan een belastingplichtige en een toekomstige registratie-eenheid.
- Kies de architectuur: ondertekenen op elk apparaat, of één dienst die voor alle apparaten ondertekent en een wachtrij bijhoudt. Het systeem accepteert beide. Voor een keten wint centraal meestal: één sleutelopslag, één wachtrij, één plek om in de gaten te houden.
- Bouw de berichtopbouw, de ondertekening en de wachtrij tegen de testomgeving met de gedeelde testcertificaten. Valideer elk bericht in CI tegen de XSD.
November: productiegegevens.
- Activeer vanaf 1 november EET in DIS+, maak de eenheden aan (met een bulkimport als u er veel hebt) en vraag productiecertificaten aan. Zet ze in een kluis, niet op usb-sticks.
- De specificatie stelt 1 november 2026 vast als de vroegste geldige verkoopdatum in productie. Verstuur berichten in verificatiemodus met het echte certificaat: die testen de hele keten zonder een verkoop te registreren.
- Rond terugbetalingen, prepaidstromen, certificaatverlenging en waarschuwingen op de leeftijd van de wachtrij af.
December: repeteren.
- Rol uit op één locatie. Trek tijdens de lunchpiek de netwerkkabel eruit en kijk hoe de wachtrij daarna leegloopt.
- Test uw drukste uur onder belasting via de ondertekeningsdienst.
- Bevries wijzigingen vóór de kerstpiek. Vertel het personeel hoe een storing eruitziet; werkt de wachtrij, dan hoeven ze niets te doen.
Januari: de pilotmaand.
- Sluit dagelijks aan. Vergelijk de totalen van uw kassasysteem met de geaggregeerde bedragen in DIS+, waar u ook een gedetailleerde CSV-export kunt opvragen met elke POK.
Waar u hulp krijgt
Wij bouwen en wijzigen kassa-integraties: de berichtopbouw en de ondertekening, de wachtrij voor storingen, de opslag en verlenging van certificaten, de koppeling van eenheden en de aansluiting met DIS+. Is de kassasoftware oud en zijn de makers vertrokken, dan begint dat werk bij onze dienst voor onderhoud van legacysystemen. Kent uw eigen team het systeem maar komt het handen tekort vóór januari, dan kunnen we er ontwikkelaars aan toevoegen.
Draait u eigen kassa's of kiosken in Tsjechië en hebt u nog geen bericht naar de testomgeving gestuurd, schrijf dan naar office@c9group.dev.