2027년 1월 1일부터 체코 EET 2.0: 자체 POS와 키오스크 소프트웨어가 해야 할 일

체코의 매출 기록 제도가 돌아옵니다. 페트르 파벨 대통령은 2026년 9월 17일 EET 2.0 법안에 서명했고, 재정청의 발표는 날짜를 분명히 밝힙니다. 매출 기록 의무는 2027년 1월 1일에 시작됩니다. 대상은 사업자와 고객 사이의 대면 결제이며, 모든 현금 결제가 포함됩니다. 현금이든 카드든 휴대폰이든 QR 코드든, 고객이 직접 또는 귀사의 영업장에서 결제하면 그 매출은 발생하는 즉시 세무 당국으로 전송됩니다.
대부분의 소규모 사업자에게 이는 벤더 업데이트나 무료 국가 웹 앱을 뜻합니다. 자체 POS 소프트웨어, 셀프서비스 키오스크, 직원이 매장을 돌며 쓰는 결제 앱을 운영하는 체인에게는 남은 기간이 약 90일인 연동 프로젝트입니다. 이 글은 그들을 위한 것입니다.
첫 번째 EET 이후 바뀐 것
원래의 EET는 2022년에 폐지되었습니다. EET 2.0은 핵심 아이디어(해당하는 매출 건마다 온라인으로 전송하고 국가가 확인 응답을 보냄)는 유지하면서 부담을 많이 덜어 냈습니다.
- 최소한의 데이터. 예전 시스템은 매출을 VAT 세율별로 나눴습니다. EET 2.0은 세율과 관계없이 VAT 포함 합계 하나만 보냅니다.
- 영수증 의무 없음. 사업자는 더 이상 EET 목적의 영수증을 발행하지 않아도 되며, 확인 코드를 영수증에 표시할 필요도 없습니다.
- 좁아진 범위. 고객과 사업자 사이의 대면 결제만 기록합니다. 예전 시스템은 더 넓은 범위의 결제를 다뤘습니다.
- 무료 국가 선택지. 가장 작은 사업자를 위한 웹 앱 MOJE eet, 그리고 일부 정액 과세 개인사업자를 위한 적용 제외 제도 EET OFF가 있습니다.
기술적 변화는 이 목록이 보여 주는 것보다 큽니다. 전송 방식은 익숙합니다. 예전처럼 WS-Security 서명을 붙인 HTTPS 위의 SOAP 1.1입니다. 메시지는 그렇지 않습니다. 새 인터페이스는 버전 4.1이고 예전 것은 3.1이었으며, 사양서는 2026년의 변경 사항이 "이전 시스템과 호환되지 않는다"고 말합니다. 개발자 세미나 자료는 BKP 보안 코드, 간이 모드 플래그, VAT 항목이 삭제되었다고 적고 있습니다. 예전 EET 코드는 배관 작업의 참고 자료일 뿐 그 이상은 아닙니다.
적용 범위
매출을 기록해야 하는 대상에 관한 공식 페이지는 세 가지 조건을 정합니다. 결제가 대면 결제이거나 현금 결제이고, 사업 소득이며, 면제 사유가 없어야 합니다.
대면 결제는 귀사나 직원과 직접 대면한 상태에서 이루어지거나, 재화나 서비스와 관련해 귀사의 영업장이나 차량 안에서 이루어지는 결제입니다. 세미나 자료는 두 번째 규칙이 셀프 계산대와 무인 영업장을 겨냥한 것이라고 분명히 말합니다. 매장 안의 키오스크는 직원이 거래에 전혀 관여하지 않아도 적용 대상입니다. 현금은 영업장 밖에서도 언제나 기록 대상이며, 우편 서비스가 수금하는 착불 대금만 예외입니다.
결제 수단은 상관없습니다. 현금, 카드, QR 코드, 판매 시점에 이루어진 계좌 이체나 자동 이체, 암호자산, 상품권, 식권, 선불카드가 모두 열거되어 있습니다.
원격 결제는 대상이 아닙니다. 결제 게이트웨이로 결제하는 온라인 쇼핑몰, 또는 고객이 자기 사무실에서 결제하는 인보이스가 그렇습니다. 기준은 인보이스에 적힌 내용이 아니라 돈이 실제로 어떻게 움직였는지입니다. 고객이 카운터에서 카드로 200코루나를 내고 나머지 800코루나를 다음 날 집에서 이체했다면, 기록하는 것은 200코루나뿐입니다.
그 자체로 영업장인 자판기(공식 예시는 커피 자판기)는 면제되며, 기록이 현실적으로 어려운 영업장 밖의 무인 판매대도 마찬가지입니다. 면제 목록에는 공공기관, 은행, 사행 산업, 에너지 등도 들어 있습니다.
대부분을 건너뛰어도 되는 곳
영세 사업자는 2026년 12월 1일에 출시되는 MOJE eet를 쓸 수 있습니다. 6월 개발자 세미나는 이를 등록 단위 두 개, 직원 두 명 이하의 사업자용으로 소개했습니다. 소득이 100만 코루나 이하인 첫 번째 구간의 정액 과세 개인사업자는 EET OFF로 적용을 제외할 수 있습니다.
주류 POS 제품을 쓰는 사업자는 벤더에게서 업데이트를 받게 됩니다. 언제 제공되는지, 장애 중에는 어떻게 되는지 물어본 뒤 세무 포털에 등록하고 인증서를 설치하십시오.
그 밖의 모든 곳은 계속 읽으십시오. 사내 개발이나 커스터마이징한 POS 소프트웨어, 직접 만든 키오스크, 직원용 결제 앱, 또는 결제 하나가 두 회사에 속할 수 있는 그룹입니다.
구축해야 하는 것
모든 자료는 개발자 문서 페이지에 있습니다. 인터페이스 설명서(영어판은 구속력이 없음), XSD와 WSDL, 서명된 요청 샘플, 플레이그라운드 인증서입니다.
등록 단위와 장치 ID
모든 메시지에는 등록 단위 ID가 들어갑니다. 세무 포털 DIS+에서 단위(매장, 이동 판매대, 배송 차량)를 만들면 시스템이 각각에 번호를 부여합니다. 체인은 단위를 일괄로 가져올 수 있으며, 변경 사항은 15일 안에 신고해야 합니다. POS에는 사업장마다 단위 ID를 대응시키는 관리된 매핑과, 단위 안에서 고유한 20자 이하의 장치 ID가 필요합니다.
인증서
자체 시스템이 대개 시간을 잃는 곳이 여기입니다. 인증서 절차는 단계를 다음과 같이 정합니다.
- 키 쌍은 귀사의 장치가 아니라 EET 인증 기관이 생성합니다. 비밀번호로 보호된 PKCS#12 파일을 내려받으며, 이 파일은 내려받기를 확인할 때까지, 최대 30일 동안 받을 수 있습니다.
- 이 파일은 구형 POS를 위해 레거시 3DES 암호화를 씁니다. 문서는 레거시 프로바이더 없이는 OpenSSL 3에서 로드되지 않을 수 있다고 경고하며, 다시 포장하거나 키를 볼트로 옮기라고 권합니다.
- 인증서의 유효 기간은 1년입니다. 인증서 하나를 장치 하나에 쓸 수도, 여러 장치에 쓸 수도 있으며, 몇 개를 발급할지는 귀사가 정합니다.
- 갱신은 REST API로 자동화할 수 있습니다. 갱신 대상 인증서로 서명한 수명이 짧은 JWT를 보내고, 요청을 폴링하고, 내려받고, 확인합니다. 인증 기관은 만료 2주에서 3주 전에 갱신하라고 권합니다. 인증서가 만료되면 API 경로는 닫히고, 누군가 수동으로 갱신해야 합니다.
- 개인 키 보호는 납세자의 법적 의무입니다. 키 파일 하나를 POS 마흔 대에 복사해 두면 언젠가 폐기 사태가 납니다.
데이터 메시지
헤더에는 시도마다 새로 만든 UUID, 전송 시각, 첫 시도 플래그, 선택적인 검증 플래그가 들어갑니다. 데이터 부분에는 납세자의 EIČ, 단위 ID, 장치 ID, 일련번호(최대 25자, 단위와 장치별로 고유), 시간대 오프셋을 포함한 매출 시각, 정확히 소수점 둘째 자리까지의 코루나(CZK) 합계가 들어갑니다. 선택 금액 두 개는 선불 충전과 사용을 다루고, 다른 두 필드는 다른 납세자를 대신한 기록을 다룹니다.
실제로 받은 금액을 기록하십시오. 현금으로 낸 78.90코루나짜리 계산서를 79로 반올림했다면 79.00으로, 같은 계산서를 카드로 냈다면 78.90으로 들어갑니다. 일부는 식권, 일부는 카드로 낸 계산서는 합계를 담은 메시지 하나입니다.
서명과 전송
각 메시지는 WS-Security 헤더 안의 XML Signature로 서명합니다. 배타적 정규화(exclusive canonicalisation), SHA-256 다이제스트, RSA-SHA256을 쓰고, 인증서는 BinarySecurityToken으로 첨부하며, 서명 대상은 SOAP 본문뿐입니다. Timestamp나 WS-Addressing 같은 추가 헤더는 넣지 마십시오. 12kB를 넘는 메시지는 거부되고, 공격처럼 보이는 메시지는 아예 응답을 받지 못할 수도 있습니다. TLS 1.2 이상이 필수이고, 클라이언트는 서버 인증서를 검증해야 합니다. 운영 환경은 DNS 부하 분산을 쓰므로, IP를 고정하지 말고 연결할 때마다 호스트 이름을 조회하십시오.
버전 1.2부터 엔드포인트가 CORS를 지원하므로 브라우저 기반 POS가 직접 호출할 수 있습니다. 누군가 그 JavaScript를 작성하기 전에 개인 키를 어디에 둘지부터 정하십시오.
응답, 장애, 48시간 규칙
유효한 메시지에는 세무 당국이 서명한 39자짜리 확인 코드(POK)가 담긴 동기 응답이 옵니다. 그 서명을 검증하고 POK를 매출과 함께 저장하십시오. 유효하지 않은 메시지에는 오류 코드가 옵니다. -1은 일시적 장애이므로 나중에 다시 보내면 됩니다. 작은 문제는 경고로 돌아오며, 그중 하나는 매출 시각이 서버 시계보다 2시간 넘게 앞설 때입니다. 키오스크 시계는 어긋납니다. 동기화하십시오.
응답 타임아웃은 귀사가 정하되 2초 이상이어야 합니다. 제때 POK가 오지 않으면 그 매출은 대기열로 갑니다. 세미나 자료에 따르면 재시도는 원래 본문을 그대로 쓰고 헤더만 새로 만듭니다. 새 UUID, false로 설정한 첫 시도 플래그, 새 전송 시각, 원래의 매출 시각입니다. 연결이 돌아오는 즉시, 늦어도 매출 후 48시간 안에 보냅니다. 의무는 48시간이 지나도 사라지지 않습니다. 늦은 메시지라도 보내야 합니다.
따라서 대기열은 재부팅을 견뎌야 하고, 48시간이 되기 한참 전에 알림을 띄워야 합니다. 함정이 하나 더 있습니다. 매출이 대기 중인 동안 인증서가 만료되면, 그 매출은 현재 유효한 인증서로 서명해야 합니다.
환불, 정정, 중복
환불이나 취소는 음수 금액을 담은 새 메시지이며, 현재 시각으로 기록하고 원래 메시지와 연결하지 않습니다. 정정은 취소 후 올바른 메시지를 보내거나, 차액 메시지 하나를 보내는 방식입니다. 중복은 여섯 개 필드(EIČ, 단위, 장치, 일련번호, 매출 시각, 합계)로 탐지하므로 같은 본문으로 재시도하는 것은 안전합니다. 일련번호를 새로 만들어 재시도하면 두 번째 매출이 됩니다.
영수증
첫 번째 EET 때보다 작업이 적습니다. EET 목적의 영수증은 필요 없고, POK를 영수증에 표시할 필요도 없습니다. POK가 도착할 때까지 인쇄를 붙잡아 두는 코드가 있다면 없애십시오. 소비자법에 따라 영수증을 발행한다면 EET 일련번호를 영수증 번호와 맞춰 두십시오. 사양서는 실무에서 둘이 대개 일치한다고 언급합니다.
체인이 마주치는 예외 상황
- 선불카드, 손목 밴드, 지갑: 충전과 모든 사용을 기록하며, 추가 금액 필드를 채웁니다.
- 결제 하나, 납세자 둘: 세미나 자료의 주유소 예시(연료는 다른 회사를 대신해 판매하고 커피는 자사 계정으로 판매)는 각자의 납세자 데이터를 담은 메시지 두 개가 필요합니다.
일정
- 2026년 6월 5일: 기술 문서 공개.
- 2026년 7월 1일: 플레이그라운드 개설. 7월 26일부터 8월 26일까지 클라이언트 IP 주소 624개에서 170,389건의 테스트 거래를 처리했으며, 그중 94.6%가 정상 처리되었습니다.
- 2026년 11월 1일: DIS+의 EET, 등록 단위, 운영 인증서.
- 2026년 12월 1일: MOJE eet 출시.
- 2027년 1월 1일: 단계적 시행 없이 모든 대상에게 동시에 의무 시작.
공식 일정은 1월을 파일럿 기간이라고 부르면서도, 그때부터 이미 정식 기록이 될 것이라고 덧붙입니다. 앞선 발표는 파일럿을 자발적 참여로 설명했습니다. 이 점이 명확해지기 전까지는 1월 1일부터 실제 메시지를 보내는 것으로 계획하십시오.
형식적인 절차가 하나 남아 있습니다. 9월 22일 서명이 발표되었을 때 법령집(Sbírka zákonů) 게재는 아직 남아 있었습니다. 통상적인 절차입니다.
90일 계획
10월: 범위 확정과 구축.
- 돈이 오가는 모든 지점을 나열합니다. POS, 키오스크, 휴대용 단말, 매장 안에서 결제하는 테이블 주문 흐름, 현금을 수금하는 자사 운전자입니다. 각각을 납세자와 향후 등록 단위에 배정합니다.
- 아키텍처를 고릅니다. 장치마다 서명할지, 모든 장치를 위해 서명하고 대기열을 관리하는 서비스 하나를 둘지입니다. 시스템은 둘 다 받아들입니다. 체인이라면 대개 중앙 방식이 낫습니다. 키 저장소 하나, 대기열 하나, 지켜볼 곳 하나입니다.
- 공용 테스트 인증서로 플레이그라운드를 대상으로 메시지 생성기, 서명기, 대기열을 만듭니다. CI에서 모든 메시지를 XSD로 검증합니다.
11월: 운영 자격 증명.
- 11월 1일부터 DIS+에서 EET를 활성화하고, 단위를 만들고(많다면 일괄 가져오기), 운영 인증서를 발급합니다. 인증서는 USB 메모리가 아니라 볼트에 넣습니다.
- 사양서는 운영 환경에서 유효한 가장 이른 매출일을 2026년 11월 1일로 정합니다. 실제 인증서로 검증 모드 메시지를 보내십시오. 매출을 기록하지 않고 전체 경로를 테스트할 수 있습니다.
- 환불, 선불 흐름, 인증서 갱신, 대기열 체류 시간 알림을 마무리합니다.
12월: 리허설.
- 한 사업장에 먼저 배포합니다. 점심 피크 시간에 네트워크 케이블을 뽑고, 그 뒤 대기열이 비워지는 것을 지켜봅니다.
- 가장 바쁜 시간대의 부하로 서명기를 테스트합니다.
- 크리스마스 성수기 전에 변경을 동결합니다. 직원들에게 장애가 어떤 모습인지 알려 주십시오. 대기열이 제대로 작동한다면 직원들은 아무것도 하지 않아도 됩니다.
1월: 파일럿 기간.
- 매일 대사합니다. POS 합계를 DIS+의 집계 금액과 비교하며, DIS+에서는 모든 POK가 담긴 상세 CSV 내보내기도 요청할 수 있습니다.
도움이 필요하시면
저희는 POS 연동을 구축하고 수정합니다. 메시지 생성기와 서명기, 장애 대기열, 인증서 저장과 갱신, 단위 매핑, DIS+와의 대사입니다. POS 소프트웨어가 오래되었고 만든 사람들이 떠났다면 레거시 시스템 유지보수 서비스가 그 작업의 출발점입니다. 귀사 팀이 시스템은 알지만 1월 전까지 일손이 부족하다면 개발자를 투입해 드릴 수 있습니다.
체코에서 자체 POS나 키오스크를 운영하는데 아직 플레이그라운드에 메시지를 한 번도 보내지 않았다면 office@c9group.dev로 연락 주십시오.