Tekst: Kristijan Sekereš
Czeskie EET 2.0 od 1 stycznia 2027: co musi robić własne oprogramowanie POS i kioskowe

Czeska ewidencja sprzedaży wraca. Prezydent Petr Pavel podpisał ustawę o EET 2.0 17 września 2026, a komunikat administracji finansowej nie pozostawia wątpliwości co do daty: obowiązek ewidencjonowania sprzedaży zaczyna się 1 stycznia 2027. Obejmuje płatności kontaktowe między firmą a klientem, w tym każdą płatność gotówkową. Gotówka, karta, telefon czy kod QR: jeśli klient płaci osobiście albo w Twoim lokalu, sprzedaż trafia do organu podatkowego w chwili, gdy się odbywa.
Dla większości małych sprzedawców oznacza to aktualizację od dostawcy albo bezpłatną państwową aplikację internetową. Dla sieci z własnym oprogramowaniem kasowym, kioskami samoobsługowymi albo aplikacją płatniczą, z którą personel chodzi po sali, to projekt integracyjny, na który zostało około 90 dni. Ten artykuł jest dla nich.
Co się zmieniło od pierwszego EET
Pierwotne EET zniesiono w 2022. EET 2.0 zachowuje główną ideę (każda kwalifikująca się sprzedaż jest wysyłana online i potwierdzana przez państwo) i pozbywa się sporej części balastu:
- Minimum danych. Stary system dzielił każdą sprzedaż według stawek VAT. EET 2.0 wysyła jedną sumę z VAT, niezależnie od stawek.
- Brak obowiązku paragonu. Firmy nie muszą już wydawać paragonu na potrzeby EET, a kod potwierdzenia nie musi się na nim znaleźć.
- Węższy zakres. Ewidencjonowane są tylko płatności kontaktowe między klientem a firmą; stary system obejmował szerszy zakres płatności.
- Bezpłatna opcja państwowa. MOJE eet, aplikacja internetowa dla najmniejszych firm, oraz możliwość rezygnacji o nazwie EET OFF dla części przedsiębiorców jednoosobowych rozliczających się ryczałtowo.
Zmiana techniczna jest większa, niż sugeruje ta lista. Transport jest znajomy: SOAP 1.1 przez HTTPS z podpisami WS-Security, jak wcześniej. Komunikat już nie. Nowy interfejs ma wersję 4.1, stary miał 3.1, a specyfikacja mówi, że zmiany z 2026 „są niekompatybilne z poprzednim systemem”. Prezentacja z seminarium dla programistów wymienia jako usunięte kod zabezpieczający BKP, flagę trybu uproszczonego i pozycje VAT. Stary kod EET może służyć za wzorzec dla warstwy transportowej i niczego więcej.
Co jest objęte
Oficjalna strona o tym, kto musi ewidencjonować sprzedaż, stawia trzy warunki: płatność jest płatnością kontaktową albo dowolną płatnością gotówkową, stanowi przychód z działalności i nie ma zastosowania żadne zwolnienie.
Płatność kontaktowa odbywa się albo w osobistym kontakcie z Tobą lub Twoim personelem, albo w Twoim lokalu lub pojeździe w związku z towarem lub usługą. Prezentacja z seminarium mówi wprost, że druga reguła jest wymierzona w kasy samoobsługowe i lokale samoobsługowe. Kiosk w Twoim sklepie jest objęty, nawet jeśli żaden pracownik nie dotyka transakcji. Gotówka jest ewidencjonowana zawsze, także poza Twoim lokalem, z wyjątkiem płatności przy odbiorze pobieranej przez operatora pocztowego.
Metoda płatności nie ma znaczenia. Na liście są gotówka, karta, kod QR, przelew bankowy lub polecenie zapłaty zlecone w punkcie sprzedaży, kryptoaktywa, karty podarunkowe, bony żywieniowe i karty przedpłacone.
Płatności na odległość są poza zakresem: sklep internetowy opłacany przez bramkę płatniczą albo faktura, którą klient opłaca ze swojego biura. Liczy się to, jak faktycznie przemieściły się pieniądze, a nie to, co jest na fakturze. Jeśli klient płaci 200 CZK kartą przy ladzie, a pozostałe 800 CZK przelewem z domu następnego dnia, ewidencjonuje się tylko 200 CZK.
Automaty sprzedające, które same w sobie są lokalem (oficjalnym przykładem jest automat z kawą), są zwolnione, podobnie jak stoiska samoobsługowe poza Twoim lokalem, gdzie ewidencjonowanie byłoby niepraktyczne. Lista zwolnień obejmuje też między innymi podmioty publiczne, banki, gry hazardowe i energetykę.
Kto może pominąć większość tego tekstu
Mikrofirmy mogą korzystać z MOJE eet, które startuje 1 grudnia 2026. Czerwcowe seminarium dla programistów kierowało je do firm z najwyżej dwiema jednostkami ewidencyjnymi i dwoma pracownikami. Przedsiębiorcy jednoosobowi na ryczałcie w pierwszym przedziale, z przychodem do 1 mln CZK, mogą zrezygnować przez EET OFF.
Firmy korzystające z popularnego produktu POS powinny dostać aktualizację od dostawcy. Zapytaj, kiedy zostanie wydana i co się dzieje w czasie awarii, a potem zarejestruj się w portalu podatkowym i zainstaluj certyfikat.
Wszyscy pozostali powinni czytać dalej: własne lub dostosowane oprogramowanie kasowe, samodzielnie zbudowane kioski, aplikacje płatnicze dla personelu albo grupa, w której jedna płatność może należeć do dwóch spółek.
Co trzeba zbudować
Wszystko jest na stronie z dokumentami dla programistów: opis interfejsu (wersja angielska nie jest wiążąca), XSD i WSDL, przykładowe podpisane żądania oraz certyfikaty do środowiska testowego (playground).
Jednostki ewidencyjne i identyfikatory urządzeń
Każdy komunikat zawiera identyfikator jednostki ewidencyjnej. Jednostki (sklep, mobilne stoisko, samochód dostawczy) tworzy się w DIS+, portalu podatkowym, a system nadaje każdej numer. Sieci mogą importować jednostki hurtowo, a zmiany trzeba zgłaszać w ciągu 15 dni. Twój POS potrzebuje utrzymywanego mapowania każdej lokalizacji na identyfikator jednostki oraz identyfikatora urządzenia o długości do 20 znaków, unikalnego w obrębie jednostki.
Certyfikaty
Tu systemy własne zwykle tracą czas. Procedura certyfikacyjna opisuje kroki:
- Parę kluczy generuje urząd certyfikacji EET, a nie Twoje urządzenie. Pobierasz chroniony hasłem plik PKCS#12, dostępny do czasu potwierdzenia pobrania i najdłużej przez 30 dni.
- Plik używa przestarzałego szyfrowania 3DES ze względu na starsze kasy. Dokument ostrzega, że bez dostawcy legacy może się nie wczytać w OpenSSL 3, i zaleca ponowne opakowanie pliku albo przeniesienie klucza do sejfu.
- Certyfikaty są ważne przez rok. Jeden certyfikat może obsługiwać jedno urządzenie albo kilka; ile ich wystawisz, to Twoja decyzja.
- Odnowienie można zautomatyzować przez REST API: krótkotrwały JWT podpisany odnawianym certyfikatem, potem odpytywanie o status żądania, pobranie, potwierdzenie. Urząd zaleca odnowienie na dwa do trzech tygodni przed wygaśnięciem. Po wygaśnięciu certyfikatu droga przez API jest zamknięta i ktoś musi odnowić go ręcznie.
- Ochrona klucza prywatnego jest ustawowym obowiązkiem podatnika. Jeden plik klucza skopiowany na czterdzieści kas to odwołanie certyfikatu, które tylko czeka, żeby się wydarzyć.
Komunikat z danymi
Nagłówek zawiera nowy UUID dla każdej próby, czas wysłania, flagę pierwszej próby i opcjonalną flagę weryfikacji. Część z danymi zawiera EIČ podatnika, identyfikator jednostki, identyfikator urządzenia, numer kolejny (do 25 znaków, unikalny dla jednostki i urządzenia), czas sprzedaży z przesunięciem strefy czasowej oraz sumę w CZK z dokładnie dwoma miejscami po przecinku. Dwie opcjonalne kwoty obejmują doładowania przedpłat i ich wykorzystanie; dwa kolejne pola obejmują ewidencjonowanie w imieniu innego podatnika.
Ewidencjonuj to, co faktycznie otrzymano: rachunek gotówkowy na 78,90 zaokrąglony do 79 wchodzi jako 79,00, ten sam rachunek opłacony kartą jako 78,90. Rachunek opłacony częściowo bonami żywieniowymi, a częściowo kartą, to jeden komunikat z sumą.
Podpisywanie i wysyłanie
Każdy komunikat jest podpisywany XML Signature w nagłówku WS-Security: kanonikalizacja wyłączna, skrót SHA-256, RSA-SHA256, certyfikat dołączony jako BinarySecurityToken i podpisane wyłącznie ciało SOAP. Pomiń dodatkowe nagłówki, takie jak Timestamp czy WS-Addressing: komunikaty powyżej 12 kB są odrzucane, a komunikat wyglądający na atak może w ogóle nie dostać odpowiedzi. TLS 1.2 lub nowszy jest obowiązkowy, a klient musi weryfikować certyfikat serwera. Produkcja korzysta z równoważenia przez DNS, więc rozwiązuj nazwę hosta przy każdym połączeniu, zamiast przypinać adres IP.
Od wersji 1.2 punkt końcowy obsługuje CORS, więc POS działający w przeglądarce może wywoływać go bezpośrednio. Zanim ktokolwiek napisze ten JavaScript, zdecyduj, gdzie będzie przechowywany klucz prywatny.
Odpowiedzi, awarie i reguła 48 godzin
Prawidłowy komunikat dostaje synchroniczną odpowiedź z 39-znakowym kodem potwierdzenia (POK), podpisanym przez organ podatkowy. Zweryfikuj ten podpis i zapisz POK razem ze sprzedażą. Nieprawidłowy dostaje kod błędu; -1 oznacza błąd tymczasowy, więc wyślij ponownie później. Mniejsze problemy wracają jako ostrzeżenia, między innymi wtedy, gdy czas sprzedaży wyprzedza zegar serwera o więcej niż dwie godziny. Zegary kiosków się rozjeżdżają. Synchronizuj je.
Limit czasu odpowiedzi ustawiasz sam, na nie mniej niż dwie sekundy. Jeśli POK nie dotrze na czas, sprzedaż trafia do kolejki. Według prezentacji z seminarium ponowienie wykorzystuje pierwotne ciało komunikatu z nowym nagłówkiem: nowy UUID, flaga pierwszej próby ustawiona na false, nowy czas wysłania, pierwotny czas sprzedaży. Wychodzi, gdy tylko wróci połączenie, i nie później niż 48 godzin po sprzedaży. Obowiązek nie wygasa też po 48 godzinach: spóźniony komunikat nadal trzeba wysłać.
Kolejka musi więc przetrwać restart i podnieść alarm dużo wcześniej, niż minie 48 godzin. Jeszcze jedna pułapka: jeśli certyfikat wygaśnie, gdy sprzedaż czeka w kolejce, trzeba ją podpisać certyfikatem aktualnie ważnym.
Zwroty, korekty i duplikaty
Zwrot albo anulowanie to nowy komunikat z ujemną kwotą, datowany na teraz i niepowiązany z pierwotnym. Korekta to albo anulowanie, po którym następuje właściwy komunikat, albo pojedynczy komunikat z różnicą. Duplikaty wykrywa się po sześciu polach (EIČ, jednostka, urządzenie, numer kolejny, czas sprzedaży i suma), więc ponowienie z tym samym ciałem jest bezpieczne. Ponowienie, które generuje nowy numer kolejny, to druga sprzedaż.
Paragony
Mniej pracy niż przy pierwszym EET: paragon nie jest wymagany na potrzeby EET, a POK nie musi się na nim znaleźć. Usuń kod, który wstrzymuje druk do czasu nadejścia POK. Tam, gdzie wydajesz paragony na podstawie przepisów konsumenckich, utrzymuj zgodność numeru kolejnego EET z numerem paragonu; specyfikacja zauważa, że w praktyce oba zwykle się pokrywają.
Przypadki brzegowe, na które trafiają sieci
- Karty przedpłacone, opaski i portfele: ewidencjonuje się doładowanie i każde wydanie, z wypełnionymi dodatkowymi polami kwot.
- Jedna płatność, dwóch podatników: przykład stacji paliw z prezentacji (paliwo sprzedawane w imieniu innej spółki, kawa na własny rachunek) wymaga dwóch komunikatów, z których każdy zawiera dane właściwego podatnika.
Harmonogram
- 5 czerwca 2026: publikacja dokumentacji technicznej.
- 1 lipca 2026: otwarcie środowiska testowego (playground). Między 26 lipca a 26 sierpnia przetworzyło 170 389 transakcji testowych z 624 adresów IP klientów, z czego 94,6% przetworzono pomyślnie.
- 1 listopada 2026: EET w DIS+, jednostki ewidencyjne i certyfikaty produkcyjne.
- 1 grudnia 2026: start MOJE eet.
- 1 stycznia 2027: obowiązek startuje dla wszystkich naraz, bez etapów.
Oficjalny harmonogram nazywa styczeń miesiącem pilotażowym, po czym dodaje, że będzie to już standardowa ewidencja. Wcześniejszy komunikat opisywał pilotaż jako dobrowolny. Dopóki to się nie wyjaśni, planuj wysyłanie prawdziwych komunikatów od 1 stycznia.
Pozostał jeden krok formalny: gdy 22 września ogłoszono podpisanie ustawy, jej publikacja w Zbiorze ustaw (Sbírka zákonů) była jeszcze przed nami. To formalność.
Plan na 90 dni
Październik: zakres i budowa.
- Spisz każde miejsce, w którym pieniądze zmieniają właściciela: kasy, kioski, terminale przenośne, zamawianie przy stoliku opłacane na miejscu, własnych kierowców pobierających gotówkę. Przypisz każde do podatnika i przyszłej jednostki ewidencyjnej.
- Wybierz architekturę: podpisywanie na każdym urządzeniu albo jedna usługa, która podpisuje i kolejkuje dla wszystkich. System akceptuje oba warianty. W sieci zwykle wygrywa rozwiązanie centralne: jeden magazyn kluczy, jedna kolejka, jedno miejsce do obserwacji.
- Zbuduj generator komunikatów, moduł podpisu i kolejkę na środowisku testowym ze współdzielonymi certyfikatami testowymi. Waliduj każdy komunikat względem XSD w CI.
Listopad: dane produkcyjne.
- Od 1 listopada aktywuj EET w DIS+, utwórz jednostki (import hurtowy, jeśli jest ich wiele) i wystaw certyfikaty produkcyjne. Umieść je w sejfie, a nie na pendrive'ach.
- Specyfikacja ustala 1 listopada 2026 jako najwcześniejszą prawidłową datę sprzedaży na produkcji. Wysyłaj komunikaty w trybie weryfikacji z prawdziwym certyfikatem: testują cały łańcuch bez ewidencjonowania sprzedaży.
- Dokończ zwroty, przepływy przedpłat, odnawianie certyfikatów i alerty o wieku kolejki.
Grudzień: próba generalna.
- Wdróż w jednej lokalizacji. Wyciągnij kabel sieciowy w szczycie obiadowym i obserwuj, jak kolejka się potem opróżnia.
- Przetestuj obciążenie najbardziej ruchliwej godziny przez moduł podpisu.
- Zamroź zmiany przed świątecznym szczytem. Pokaż personelowi, jak wygląda awaria; jeśli kolejka działa, nie musi robić nic.
Styczeń: miesiąc pilotażowy.
- Uzgadniaj codziennie. Porównuj sumy z POS z zagregowanymi sumami w DIS+, gdzie możesz też zamówić szczegółowy eksport CSV zawierający każdy POK.
Gdzie szukać pomocy
Budujemy i zmieniamy integracje POS: generator komunikatów i moduł podpisu, kolejkę na czas awarii, przechowywanie i odnawianie certyfikatów, mapowanie jednostek i uzgadnianie z DIS+. Gdy oprogramowanie kasowe jest stare, a jego autorzy poszli dalej, ta praca zaczyna się od naszej usługi utrzymania systemów odziedziczonych. Jeśli Twój zespół zna system, ale przed styczniem brakuje mu rąk do pracy, możemy dołączyć do niego programistów.
Jeśli prowadzisz własne kasy albo kioski w Czechach i nie wysłałeś jeszcze komunikatu na środowisko testowe, napisz na office@c9group.dev.