EPO: elektronická podání ve formátu XML
Finanční správa přijímá daňová podání elektronicky přes aplikaci EPO na portálu Moje daně. Formulář jde vyplnit přímo v prohlížeči, ale účetní programy obvykle vyexportují hotový XML soubor, který se do EPO jen nahraje, zkontroluje a odešle. Kontrolní hlášení DPH se přitom podává výhradně elektronicky, a to ve formátu a struktuře, které finanční správa zveřejňuje.
Soubor můžeš poslat přes EPO, nebo ho jako přílohu vložit do zprávy z datové schránky — podání odeslané datovou schránkou nemusí mít elektronický podpis.
| Písemnost | Zkratka (element) | Soubor XSD |
|---|---|---|
| Kontrolní hlášení DPH | DPHKH1 | dphkh1_epo2.xsd |
| Přiznání k DPH | DPHDP3 | dphdp3_epo2.xsd |
| Souhrnné hlášení VIES | DPHSHV | dphshv_epo2.xsd |
Každá písemnost má na Daňovém portálu vlastní popis struktury s významem všech položek a ke stažení XSD schéma. Najdeš je v dokumentaci portálu Moje daně pod „Popis struktur EPO“; přímý odkaz na kontrolní hlášení je popis struktury DPHKH1. Struktury se mění se zákonem, proto vždy pracuj s aktuální verzí.
Písemnost, věty a položky
Soubory pro EPO mají zvláštní, ale jednoduchou stavbu. Kořenem je vždy
<Pisemnost>, uvnitř je element pojmenovaný zkratkou písemnosti
(<DPHKH1>) a v něm věty. Věta je element, jehož název začíná
slovem Veta a písmenem oddílu. Jednotlivé položky věty jsou jejich
atributy — data tedy leží téměř výhradně v atributech, ne v textu elementů.
<?xml version="1.0" encoding="UTF-8"?>
<Pisemnost nazevSW="Moje účetnictví" verzeSW="2026.3">
<DPHKH1 verzePis="03.01">
<VetaD dokument="KH1" k_uladis="DPH" mesic="8" rok="2026" khdph_forma="B" d_poddp="25.09.2026"/>
<VetaP c_ufo="451" c_pracufo="2001" dic="12345678" typ_ds="P" zkrobchjm="Ukázka s.r.o."
ulice="Vodičkova" c_pop="1" naz_obce="Praha" psc="11000" stat="ČESKÁ REPUBLIKA"/>
<VetaA4 c_radku="1" dic_odb="87654321" c_evid_dd="FV2026-042" dppd="15.08.2026"
zakl_dane1="100000.00" dan1="21000.00" kod_rezim_pl="0" zdph_44="N"/>
<VetaA5 zakl_dane1="8000.00" dan1="1680.00"/>
<VetaB2 c_radku="1" dic_dod="11223344" c_evid_dd="PF-7781" dppd="10.08.2026"
zakl_dane1="20000.00" dan1="4200.00" pomer="N" zdph_44="N"/>
</DPHKH1>
</Pisemnost>
Atributy nazevSW a verzeSW identifikují program, který soubor
vytvořil, a verzePis verzi struktury. Věty, které se mohou opakovat (řádky
jednotlivých dokladů), jsou samostatné elementy; c_radku určuje jejich pořadí ve
formuláři.
Věty kontrolního hlášení
| Věta | Oddíl kontrolního hlášení | Kolikrát |
|---|---|---|
| VetaD | záhlaví: období, druh hlášení, datum podání | právě jednou |
| VetaP | identifikace plátce: finanční úřad, DIČ, název, adresa | právě jednou |
| VetaA1 | A.1 — uskutečněná plnění v režimu přenesení daňové povinnosti | řádek za doklad |
| VetaA2 | A.2 — přijatá plnění, u kterých daň přiznává příjemce (např. z EU) | řádek za doklad |
| VetaA3 | A.3 — investiční zlato | řádek za doklad |
| VetaA4 | A.4 — uskutečněná plnění nad 10 000 Kč včetně daně | řádek za doklad |
| VetaA5 | A.5 — ostatní uskutečněná plnění do 10 000 Kč | nejvýš jednou, souhrnně |
| VetaB1 | B.1 — přijatá plnění v režimu přenesení daňové povinnosti | řádek za doklad |
| VetaB2 | B.2 — přijatá plnění nad 10 000 Kč s nárokem na odpočet | řádek za doklad |
| VetaB3 | B.3 — přijatá plnění do 10 000 Kč | nejvýš jednou, souhrnně |
| VetaC | C — kontrolní řádky k přiznání k DPH | nejvýš jednou |
Částky se zapisují do atributů zakl_dane1 a dan1 (základní sazba) a
zakl_dane2 a dan2 (snížená sazba). Třetí dvojice slouží jen pro plnění
s datem povinnosti přiznat daň do konce roku 2023, kdy platily dvě snížené sazby. Druh hlášení
určuje atribut khdph_forma ve větě D:
| khdph_forma | Druh kontrolního hlášení |
|---|---|
| B | řádné — první podání za dané období |
| O | řádné opravné — nahrazuje řádné hlášení ještě ve lhůtě |
| N | následné — oprava po uplynutí lhůty, vždy se všemi údaji za období |
| E | následné opravné |
Opravné i následné hlášení se neposílá jako rozdíl. Vždy obsahuje všechny údaje za dané období včetně opravených.
Formát hodnot
- Kódování: soubor musí odpovídat XML 1.0. Pro češtinu připadá v úvahu UTF-8, windows-1250 nebo ISO-8859-2 — deklarace v prologu musí odpovídat skutečnému kódování.
- Desetinná čísla se píšou s tečkou, ne s čárkou.
- Datum je u položek podání kvůli zpětné kompatibilitě v českém tvaru
DD.MM.RRRR, ne ve formátu ISO. - DIČ se uvádí jen číselnou částí bez předpony
CZ. - Nevyplněná položka v souboru vůbec není. Hodnota
0u nepovinné částky znamená „nula“ a počítá se s ní v kontrolách. - Pořadí vět musí odpovídat popisu struktury.
Jak soubor zkontrolovat před odesláním
-
Vlož soubor do XML validátoru. Chyby zápisu (neuzavřený element, znak
&v názvu firmy) najde okamžitě. - Stáhni z Daňového portálu XSD k dané písemnosti a v záložce Schéma ověř soubor proti němu. Validace odhalí špatný formát čísla, DIČ s předponou, chybějící povinnou položku i špatné pořadí vět — přesně s tím řádkem, kde chyba je.
- Nahraj soubor do EPO na portálu Moje daně a spusť kontrolu. EPO navíc ověří obsahové vazby (součty, návaznost na přiznání), které schéma popsat neumí.
| Chyba | Správně |
|---|---|
| dic_odb="CZ87654321" | jen číselná část DIČ: dic_odb="87654321" |
| zakl_dane1="100000,00" | desetinná tečka: zakl_dane1="100000.00" |
| dppd="2026-08-15" | datum ve tvaru DD.MM.RRRR: dppd="15.08.2026" |
| nepovinná částka vyplněná jako "0" | nevyplněný údaj z XML vynech; nula není totéž co nic |
| věty v jiném pořadí | pořadí vět musí odpovídat popisu struktury (D, P, A1 … C) |
| deklarované kódování neodpovídá souboru | uložit v UTF-8 a deklarovat UTF-8 (nebo stejně windows-1250) |
Soukromí: XML validátor na tomto webu běží celý v prohlížeči. Kontrolní hlášení s DIČ tvých odběratelů se nikam neodesílá.
Přehled o příjmech a výdajích OSVČ pro sociální zabezpečení má vlastní datovou větu a schéma, popisuje ho kapitola XML pro ČSSZ.