Av Kristijan Sekereš

Tsjekkisk EET 2.0 fra 1. januar 2027: hva egenutviklet kasse- og kioskprogramvare må gjøre

Betalingskort i en håndholdt betalingsterminal på et restaurantbord

Tsjekkisk salgsregistrering er tilbake. President Petr Pavel signerte loven om EET 2.0 den 17. september 2026, og skatteetatens kunngjøring er klar om datoen: plikten til å registrere salg starter 1. januar 2027. Den omfatter kontaktbetalinger mellom virksomhet og kunde, inkludert alle kontantbetalinger. Kontanter, kort, telefon eller QR-kode: betaler kunden personlig eller i lokalene dine, sendes salget til skattemyndigheten i det det skjer.

For de fleste små næringsdrivende betyr det en oppdatering fra leverandøren eller en gratis statlig nettapp. For kjeder som kjører egen kasseprogramvare, selvbetjeningskiosker eller en betalingsapp de ansatte bærer med seg rundt i lokalet, er det et integrasjonsprosjekt med rundt 90 dager igjen. Denne artikkelen er for dem.

Hva som er endret siden den første EET

Den opprinnelige EET ble avskaffet i 2022. EET 2.0 beholder kjerneideen (hvert salg som omfattes, sendes på nett og kvitteres av staten) og kvitter seg med mye av tyngden:

  • Minimalt med data. Det gamle systemet delte hvert salg etter mva-sats. EET 2.0 sender én total, inkludert mva, uansett satser.
  • Ingen kvitteringsplikt. Virksomheter må ikke lenger utstede kvittering av hensyn til EET, og kvitteringskoden trenger ikke stå på en kvittering.
  • Et smalere virkeområde. Bare kontaktbetalinger mellom kunde og virksomhet registreres; det gamle systemet dekket et bredere spekter av betalinger.
  • Et gratis statlig alternativ. MOJE eet, en nettapp for de minste virksomhetene, pluss en mulighet til å reservere seg kalt EET OFF for noen enkeltpersonforetak med sjablongbeskatning.

Den tekniske endringen er større enn listen gir inntrykk av. Transporten er kjent: SOAP 1.1 over HTTPS med WS-Security-signaturer, som før. Meldingen er det ikke. Det nye grensesnittet er versjon 4.1, det gamle var 3.1, og spesifikasjonen sier at endringene fra 2026 «er inkompatible med det tidligere systemet». Presentasjonen fra utviklerseminaret lister opp sikkerhetskoden BKP, flagget for forenklet modus og mva-postene som fjernet. Gammel EET-kode er en referanse for rørleggerarbeidet og ikke noe mer.

Hva som omfattes

Den offisielle siden om hvem som må registrere salg stiller tre vilkår: betalingen er en kontaktbetaling eller en hvilken som helst kontantbetaling, den er næringsinntekt, og ingen unntak gjelder.

En kontaktbetaling skjer enten i personlig kontakt med deg eller de ansatte, eller i lokalene eller kjøretøyet ditt i forbindelse med varen eller tjenesten. Seminarpresentasjonen sier rett ut at den andre regelen er rettet mot selvbetjente kasser og selvbetjente lokaler. En kiosk inne i butikken din er omfattet selv om ingen ansatt rører transaksjonen. Kontanter registreres alltid, også utenfor lokalene dine, bortsett fra oppkrav som kreves inn av en posttjeneste.

Betalingsmåten spiller ingen rolle. Kontanter, kort, QR-kode, en bankoverføring eller et direkte trekk gjort på salgsstedet, kryptoeiendeler, gavekort, matkuponger og forhåndsbetalte kort er alle oppført.

Betalinger på avstand er utenfor: en nettbutikk som betales gjennom en betalingsløsning, eller en faktura kunden betaler fra kontoret sitt. Det som teller, er hvordan pengene faktisk ble overført, ikke hva fakturaen sier. Betaler en kunde 200 CZK med kort ved disken og de resterende 800 CZK med overføring hjemmefra dagen etter, registreres bare de 200 CZK.

Automater som er lokaler i seg selv (kaffeautomaten er det offisielle eksemplet), er unntatt, det samme er selvbetjente stander utenfor lokalene dine der registrering ville vært upraktisk. Unntakslisten dekker blant annet også offentlige organer, banker, pengespill og energi.

Hvem som kan hoppe over det meste av dette

Mikrovirksomheter kan bruke MOJE eet, som lanseres 1. desember 2026. Utviklerseminaret i juni rettet den mot virksomheter med opptil to registreringsenheter og to ansatte. Enkeltpersonforetak med sjablongbeskatning i første trinn og inntekt opptil 1 million CZK kan reservere seg gjennom EET OFF.

Virksomheter på et utbredt kassesystem bør få en oppdatering fra leverandøren. Spør når den kommer, og hva som skjer ved driftsstans, og registrer deg deretter i skatteportalen og installer sertifikatet.

Alle andre bør lese videre: egenutviklet eller tilpasset kasseprogramvare, kiosker dere har bygget selv, betalingsapper for ansatte, eller et konsern der én betaling kan tilhøre to selskaper.

Hva som må bygges

Alt ligger på siden med dokumenter for utviklere: grensesnittbeskrivelsen (den engelske versjonen er ikke bindende), XSD og WSDL, eksempler på signerte forespørsler og testsertifikater for testmiljøet (playground).

Registreringsenheter og enhets-ID-er

Hver melding har en ID for registreringsenhet. Du oppretter enheter (en butikk, en mobil stand, et leveringskjøretøy) i DIS+, skatteportalen, og systemet gir hver av dem et nummer. Kjeder kan importere enheter samlet, og endringer må meldes innen 15 dager. Kassen din trenger en vedlikeholdt kobling fra hvert sted til enhets-ID-en, pluss en ID for apparatet på opptil 20 tegn som er unik innenfor enheten.

Sertifikater

Det er her egenutviklede systemer som regel taper tid. Prosedyren for sertifikater beskriver trinnene:

  • Nøkkelparet genereres av sertifiseringsinstansen for EET, ikke på apparatet ditt. Du laster ned en passordbeskyttet PKCS#12-fil, som er tilgjengelig til du bekrefter nedlastingen, og i høyst 30 dager.
  • Filen bruker den eldre 3DES-krypteringen av hensyn til eldre kasser. Dokumentet advarer om at den kanskje ikke lar seg laste i OpenSSL 3 uten legacy-provideren, og anbefaler å pakke den om eller flytte nøkkelen inn i et hvelv.
  • Sertifikatene er gyldige i ett år. Ett sertifikat kan betjene ett apparat eller flere; hvor mange du utsteder, bestemmer du.
  • Fornyelse kan automatiseres over et REST-API: en kortlivet JWT signert med sertifikatet som skal fornyes, deretter polling av forespørselen, nedlasting og bekreftelse. Sertifiseringsinstansen anbefaler å fornye to til tre uker før utløp. Når et sertifikat har utløpt, er API-veien stengt, og noen må fornye det manuelt.
  • Å beskytte den private nøkkelen er skattyterens lovpålagte plikt. Én nøkkelfil kopiert over på førti kasser er en tilbakekalling som bare venter på å skje.

Datameldingen

Toppteksten inneholder en ny UUID for hvert forsøk, sendetidspunktet, et flagg for første forsøk og et valgfritt verifiseringsflagg. Datadelen inneholder skattyterens EIČ, enhets-ID-en, apparat-ID-en, et løpenummer (opptil 25 tegn, unikt per enhet og apparat), salgstidspunktet med tidssoneforskyvning og totalen i CZK med nøyaktig to desimaler. To valgfrie beløp dekker påfylling og bruk av forhåndsbetalt saldo; to felt til dekker registrering på vegne av en annen skattyter.

Registrer det som faktisk ble mottatt: en kontantregning på 78,90 som avrundes til 79, registreres som 79,00, og den samme regningen betalt med kort som 78,90. En regning som betales delvis med matkuponger og delvis med kort, er én melding med totalen.

Signering og sending

Hver melding signeres med XML Signature i WS-Security-toppteksten: eksklusiv kanonisering, en SHA-256-digest, RSA-SHA256, sertifikatet vedlagt som BinarySecurityToken, og bare SOAP-kroppen signert. Utelat ekstra topptekster som Timestamp eller WS-Addressing: meldinger over 12 kB avvises, og en melding som ser ut som et angrep, kan bli stående helt uten svar. TLS 1.2 eller nyere er obligatorisk, og klienten må verifisere serversertifikatet. Produksjon bruker DNS-balansering, så slå opp vertsnavnet ved hver tilkobling i stedet for å låse til en IP-adresse.

Siden versjon 1.2 støtter endepunktet CORS, så en nettleserbasert kasse kan kalle det direkte. Bestem hvor den private nøkkelen skal ligge før noen skriver den JavaScript-koden.

Svar, driftsstans og 48-timersregelen

En gyldig melding får et synkront svar med en kvitteringskode på 39 tegn (POK), signert av skattemyndigheten. Verifiser den signaturen og lagre POK sammen med salget. En ugyldig melding får en feilkode; -1 betyr en midlertidig feil, så send på nytt senere. Mindre problemer kommer tilbake som advarsler, blant annet når salgstidspunktet ligger mer enn to timer foran serverens klokke. Klokkene i kioskene driver. Synkroniser dem.

Du setter tidsavbruddet for svaret selv, til minst to sekunder. Kommer det ingen POK i tide, legges salget i en kø. Ifølge seminarpresentasjonen gjenbruker det nye forsøket den opprinnelige kroppen med en ny topptekst: ny UUID, flagget for første forsøk satt til false, nytt sendetidspunkt, opprinnelig salgstidspunkt. Det sendes så snart forbindelsen er tilbake, og senest 48 timer etter salget. Plikten faller heller ikke bort etter 48 timer: en forsinket melding skal fortsatt sendes.

Køen må altså overleve en omstart og varsle godt før de 48 timene er gått. Én felle til: utløper sertifikatet mens salg venter, må de signeres med et sertifikat som er gyldig nå.

Refusjoner, korrigeringer og duplikater

En refusjon eller kansellering er en ny melding med negativt beløp, datert nå og ikke koblet til den opprinnelige. En korrigering er enten en kansellering etterfulgt av den riktige meldingen, eller én enkelt differansemelding. Duplikater oppdages ut fra seks felt (EIČ, enhet, apparat, løpenummer, salgstidspunkt og total), så et nytt forsøk med samme kropp er trygt. Et nytt forsøk som genererer løpenummeret på nytt, er et salg til.

Kvitteringer

Mindre arbeid enn under den første EET: det kreves ingen kvittering av hensyn til EET, og POK trenger ikke stå på en. Fjern kode som holder igjen utskriften til POK kommer. Der du utsteder kvitteringer etter forbrukerlovgivningen, hold løpenummeret i EET i takt med kvitteringsnummeret; spesifikasjonen påpeker at de to i praksis som regel er like.

Spesialtilfeller kjedene støter på

  • Forhåndsbetalte kort, armbånd og lommebøker: påfyllingen og hvert kjøp registreres, med de ekstra beløpsfeltene utfylt.
  • Én betaling, to skattytere: presentasjonens eksempel med en bensinstasjon (drivstoff solgt på vegne av et annet selskap, kaffe for egen regning) krever to meldinger, hver med dataene til sin egen skattyter.

Tidslinjen

  • 5. juni 2026: den tekniske dokumentasjonen publisert.
  • 1. juli 2026: testmiljøet (playground) åpnet. Mellom 26. juli og 26. august behandlet det 170 389 testtransaksjoner fra 624 klient-IP-adresser, og 94,6 % av dem ble behandlet uten feil.
  • 1. november 2026: EET i DIS+, registreringsenheter og produksjonssertifikater.
  • 1. desember 2026: MOJE eet lanseres.
  • 1. januar 2027: plikten starter for alle samtidig, uten innfasing.

Den offisielle tidsplanen kaller januar en pilotmåned, og legger så til at det allerede vil være ordinær registrering. En tidligere kunngjøring beskrev piloten som frivillig. Inntil det er avklart, planlegg å sende ekte meldinger fra 1. januar.

Ett formelt trinn gjenstår: da signeringen ble kunngjort 22. september, gjensto fortsatt kunngjøringen i lovsamlingen (Sbírka zákonů). Det er rutine.

En plan for 90 dager

Oktober: avgrensning og utvikling.

  1. List opp hvert punkt der penger skifter hender: kasser, kiosker, håndholdte apparater, bordbestillinger som betales i lokalet, egne sjåfører som tar imot kontanter. Knytt hvert punkt til en skattyter og en fremtidig registreringsenhet.
  2. Velg arkitektur: signering på hvert apparat, eller én tjeneste som signerer og legger i kø for alle. Systemet godtar begge. For en kjede vinner sentralt som regel: ett nøkkellager, én kø, ett sted å overvåke.
  3. Bygg meldingsbyggeren, signeringen og køen mot testmiljøet med de delte testsertifikatene. Valider hver melding mot XSD-en i CI.

November: legitimasjon for produksjon.

  1. Fra 1. november aktiverer du EET i DIS+, oppretter enhetene (samlet import hvis du har mange) og utsteder produksjonssertifikater. Legg dem i et hvelv, ikke på minnepinner.
  2. Spesifikasjonen setter 1. november 2026 som tidligste gyldige salgsdato i produksjon. Send meldinger i verifiseringsmodus med det ekte sertifikatet: de tester hele kjeden uten å registrere et salg.
  3. Gjør ferdig refusjoner, flyter for forhåndsbetaling, sertifikatfornyelse og varsling på køens alder.

Desember: generalprøve.

  1. Rull ut på ett sted. Trekk ut nettverkskabelen i lunsjrushet og se køen tømmes etterpå.
  2. Belastningstest den travleste timen deres gjennom signeringen.
  3. Frys endringer før julerushet. Fortell de ansatte hvordan en driftsstans ser ut; fungerer køen, gjør de ingenting.

Januar: pilotmåneden.

  1. Avstem daglig. Sammenlign kassetotalene med de aggregerte summene i DIS+, der du også kan be om en detaljert CSV-eksport med hver POK.

Hvor du får hjelp

Vi bygger og endrer kasseintegrasjoner: meldingsbyggeren og signeringen, køen for driftsstans, lagring og fornyelse av sertifikater, enhetskoblingen og avstemmingen mot DIS+. Når kasseprogramvaren er gammel og forfatterne har gått videre, er det vår tjeneste for vedlikehold av eldre systemer som er utgangspunktet. Kjenner deres eget team systemet, men mangler folk før januar, kan vi tilføre utviklere.

Kjører du egne kasser eller kiosker i Tsjekkia og ikke har sendt en melding til testmiljøet ennå, skriv til office@c9group.dev.