24. Výkazy DPH (DPHDP3 + KH + SH)

MyInvoice.cz generuje XML pro EPO portál MFČR:

Najdeš v menu Daně.

[!WARNING] ⚠️ Vygenerovaný XML je pouze pomůcka. Před odesláním na EPO portál MFČR VŽDY ověř s účetní nebo daňovým poradcem. Aplikace nezaručuje regulatorní správnost — testováno na omezené sadě dat.

Předpoklady před prvním podáním

V Nastavení → Daňové nastavení vyplň:

  1. Typ poplatníka — FO (OSVČ) nebo PO (s.r.o., a.s.)
  2. Perioda DPH přiznání — Měsíční nebo Kvartální
  3. Kód finančního úřadu (např. 451 = Praha 1)
  4. Kód územního pracoviště (ÚzP) — pokud existuje
  5. DIČ v Identifikaci firmy (povinné)
  6. Volitelně: CZ-NACE, datová schránka, sestavitel přiznání

Detailní mapping všech polí v UI na XML atributy najdeš v sekci Pole EPO / VetaP níže.

[!NOTE] Kontrolní hlášení se podává VŽDY měsíčně, i pro kvartální plátce DPH. Jen DPH přiznání může být kvartální.

Pole EPO / VetaP

Tato sekce mapuje pole z Nastavení → Daňové nastavení (admin only) na konkrétní atributy v EPO XML (DPHDP3 + DPHKH1). Vyplň je všechny — bez nich EPO portál podání odmítne nebo bude generovat formálně neúplný výkaz.

Identifikace finančního úřadu

Pole v UIXML atributPopisJak zjistit
Kód finančního úřaduc_ufoČíselný kód územního finančního orgánunapř. 451 Praha 1, 463 Jihomoravský kraj. Najdeš na posledním podaném přiznání nebo v EPO.
Kód územního pracovištěc_pracufoKonkrétní pracoviště v rámci FÚnapř. 3203 pracoviště Brno III. Volitelné, ale EPO ho někdy vyžaduje.
CZ-NACE kód (cz_nace_code)c_okecHlavní podnikatelská činnost (NACE)např. 631000 (IT poradenství). Najdeš na živnostenském listě / ARES. Fallback 631000 pokud necháš prázdné.

Typ plátce a perioda

Pole v UIXML atributHodnotyKdy použít
Typ poplatníkatyp_ds ve VetaPF (FO/OSVČ) / P (PO/s.r.o.)Podle právní formy.
Typ plátce DPHtyp_platce ve VetaDP (měsíční) / Q (čtvrtletní)Měsíční default. Čtvrtletní jen pokud máš obrat < 10 mil. Kč/rok a FÚ ti to přidělil.

Sídlo / adresa (od v4.0.6)

EPO rozděluje uliční adresu na tři samostatné atributy (ulice + c_pop + c_orient). Naše DB tyto sloupce drží separátně (supplier.street, street_number_pop, street_number_orient):

Pole v UIXML atributPopis
Ulice (street)uliceNázev ulice bez čísla, např. Vodičkova
Číslo popisné (street_number_pop)c_popPopisné číslo budovy, např. 1104
Číslo orientační (street_number_orient)c_orientOrientační číslo, např. 36
Město (city)naz_obceEPO vyžaduje VELKÝMI PÍSMENY, builder převede automaticky
PSČ (zip)pscBez mezer, builder odstraní
Země (country_id → ISO)statDefaultně CZE (Česká republika)

[!IMPORTANT] Pro OSVČ: EPO vyžaduje adresu sídla podnikání, nikoli trvalého bydliště, pokud jsou různé. Najdeš v živnostenském rejstříku / ARES jako *„Místo podnikání"*.

Osobní údaje (jen pro FO/OSVČ)

Pole v UIXML atributPopis
TitultitulPřed jménem (Bc., Ing., Mgr., …) — nepovinné
JménojmenoKřestní jméno plátce
PříjmeníprijmeniPříjmení plátce

PO (právnické osoby) tyto pole nevyplňují — místo nich se použije zkrobchjm z firmy.

Oprávněná osoba k podpisu (od v4.0.6) — POVINNÉ pro PO

Pole opr_* identifikují fyzickou osobu, která je u právnické osoby oprávněná přiznání podepsat (typicky jednatel, předseda představenstva).

Pole v UIXML atributPopis
Jméno oprávněné osoby (opr_jmeno)opr_jmenoKřestní jméno jednatele / podepisujícího
Příjmení oprávněné osoby (opr_prijmeni)opr_prijmeniPříjmení
Postavení (opr_postaveni)opr_postaveniFunkce, typicky jednatel, majitel, předseda představenstva

U FO (OSVČ) zůstávají prázdná — fallback je jmeno + prijmeni.

Sestavitel přiznání (sest_*)

Pole sestavitele jsou relevantní jen pokud přiznání za tebe podává jiná osoba (účetní, daňový poradce). Pokud podáváš sám, nech prázdná — builder použije tvoje údaje (fallback na jmeno + prijmeni + phone).

Pole v UIXML atributPopis
Jméno sestavitele (sest_jmeno)sest_jmenoKřestní jméno sestavitele
Příjmení sestavitele (sest_prijmeni)sest_prijmeniPříjmení
Telefon sestavitele (sest_telefon)sest_telefVe formátu +420XXXXXXXXX
E-mail sestavitele (sest_email)(interní log)Pro audit — EPO XML ho neukládá
Funkce / role (sest_funkce)(interní log)Volně psané, např. účetní, daňový poradce

Pokud necháš Příjmení sestavitele prázdné a do Jména napíšeš celé jméno („Jan Novák"), builder ho do XML rozdělí podle první mezery (zpětná kompatibilita). Pro spolehlivost ale vyplň obě pole zvlášť.

Kontaktní údaje pro podání

Pole v UIXML atributPopis
E-mail (email)emailKontakt pro FÚ
Telefon (phone)c_telefVe formátu +420XXXXXXXXX

Postup podání na EPO portál

  1. Vygeneruj XML v aplikaci: Daně → DPH přiznání (resp. KH/SH), vyber období, klikni Stáhnout XML.
  2. Zkontroluj v textovém editoru:
  1. Přihlas se na https://adisspr.mfcr.cz/dpr/epo (EPO portál MFČR).
  2. Zvol DPH přiznání → Nové podání → Nahrát soubor.
  3. Nahraj XML — portál ho zvaliduje vůči XSD a zobrazí náhled. Validace zachytí strukturální chyby (chybějící povinné atributy, špatný formát data, ...).
  4. Pokud validace projde, potvrď Odeslat.
  5. Stáhni si potvrzení (PDF nebo e-mail). To je tvůj doklad o podání.

[!TIP] XML soubor lze ručně doupravit v textovém editoru — struktura musí zůstat zachovaná, ale hodnoty atributů můžeš editovat. Užitečné pro hotfix bez přepočtu celé databáze.

Časté problémy

EPO odmítne soubor s chybou „neúplná adresa" → Vyplň street_number_pop + street_number_orient v Daňovém nastavení. Pole street se ukládá samostatně, EPO chce všechny tři atributy.

„Chybí kód finančního úřadu" warning v náhledu → Vyplň financial_office_code v Daňovém nastavení. Bez něj XML neprojde XSD validací (c_ufo je use="required").

„Tenant není evidovaný jako plátce DPH" → V Identifikaci firmy zapni is_vat_payer = true. Vyplň DIČ.

Čísla v Veta1/Veta4 nesedí → Zkontroluj VAT klasifikační kódy na položkách faktur za období. Každý řádek musí mít vat_classification_code (1/2 pro sales 21/12 %, 40/41 pro purchase, 23 pro EU pořízení zboží, 5 pro tuzemský RC, atd.). Auto-defaulter to dělá při vytvoření faktury — pro starší / importovaná data můžeš spustit backfill v Daně → DPH přiznání → topbar tlačítko Přemapovat klasifikace (od v4.0.5).

„Aplikace generuje typ_platce='P', ale jsem čtvrtletní plátce" → V Daňovém nastavení změň vat_period na quarterly. Pak v UI DPH přiznání toggluj na Kvartálně a vyber kvartál.

„Nevím, jaký je můj kód FÚ a pracoviště" → Podívej se na poslední DPH přiznání, které jsi nahrál na EPO — kódy jsou v sekci VetaD/VetaP. Alternativně zavolej na svůj FÚ nebo se podívej na seznam FÚ.

„OKÉČ kód mi vyjde fallback 631000, ale moje činnost je jiná" → Vyplň cz_nace_code v Daňovém nastavení. Číslo najdeš na živnostenském listě nebo v ARES. Builder ho normalizuje (odstraní CZ-NACE prefix, padne na 6 číslic).

DPH přiznání (DPHDP3)

Cesta: Daně → DPH přiznání

Topbar

4 KPI karty

Trend graf

12 měsíců DPH na výstupu / vstupu / net due (rozdíl). Pro rychlou orientaci, jak se podání vyvíjí.

Tabulky DPH na výstupu (řádky 1-29) a vstupu (40+)

Per řádek: kód, popis, základ, DPH. Hodnoty se počítají agregací invoice_items / purchase_invoice_items per vat_classification_code.

Jak se DPHDP3 generuje a co zahrnuje

Tato sekce přesně popisuje, podle jakých pravidel se přiznání sestavuje — užitečné pro kontrolu proti seznamu faktur i pro účetní.

Zdroje dat a granularita

Které doklady se zahrnou

FiltrPravidlo
ObdobíVystavené se řadí podle DUZP (COALESCE(tax_date, issue_date)) — daň na výstupu vzniká k datu plnění. Přijaté tuzemské se řadí podle pozdějšího z dat DUZP / vystavení — nárok na odpočet nelze uplatnit dříve, než plátce drží daňový doklad (§ 73 odst. 1 písm. a ZDPH), takže faktura se zpětným DUZP, ale vystavená v pozdějším měsíci, spadá do měsíce vystavení. Přijaté zahraniční reverse charge (příznak RC + dodavatel mimo CZ — pořízení zboží z JČS, služby z EU/3. země, dovoz) se řadí podle DUZP *(od v4.16.0)* — povinnost přiznat daň (ř. 3–13) vzniká k DUZP bez ohledu na to, kdy doklad dorazil (§ 25 odst. 1, § 24), a pozdní doklad neblokuje ani zrcadlový odpočet ř. 43 (§ 73 odst. 1 písm. b — nárok lze prokázat jiným způsobem). Tuzemský RC (kód 5) zůstává konzervativně na pozdějším z dat. (Zobrazené *Datum plnění* dál nese skutečné DUZP, mění se jen příslušnost k období.) Doklad bez vyplněného DUZP nevypadne.
StavVylučují se draft a cancelled. U vystavených navíc proforma (zálohová faktura není daňový doklad).
KlasifikaceŘádek se zařadí podle vat_classification_code (item-level override → header → auto-default podle sazby + RC + směru). Řádek bez výsledného kódu se do přiznání nedostane.

Přepočet měny

Základ i daň se vždy převedou na CZK kurzem faktury (exchange_rate); u CZK faktur je kurz 1. Přiznání je vždy v korunách, částky se zaokrouhlují na celé Kč.

Mapování na řádky přiznání

ŘádekCo obsahujeTypický kód
1 / 2Tuzemská zdanitelná plnění na výstupu 21 % / 12 %1 / 2
3 / 4Pořízení zboží z JČS (samovyměření) 21 % / 12 %23
5 / 6Přijetí služby z EU24
7 / 8Dovoz zboží ze 3. země25
10 / 11Tuzemský reverse charge (příjemce)5
12 / 13Přijetí služby ze 3. země(custom)
20-26 (oddíl C)Dodání zboží do EU, vývoz, služby do JČS — osvobozená plnění s nárokem na odpočet, jen základ bez daně20 / 22 / 26
40 / 41Nárok na odpočet — tuzemsko 21 % / 12 %40 / 41
43Nárok na odpočet u samovyměřené daně (zrcadlo ř. 3-13)(secondary)
47Hodnota pořízeného dlouhodobého majetku — doplňující údaj k ř. 40-45flag majetek

[!NOTE] Oddíl C (ř. 20-26) — dodání do EU (dod_zb), vývoz (pln_vyvoz), služby do JČS (pln_sluzby) a další — se generuje do elementu Veta2. Jde o osvobozená plnění, na DPHDP3 se uvádí jen základ (žádná daň), ale ovlivňují vypořádací koeficient (ř. 51-53).

Samovyměření daně u reverse charge

U reverse charge (faktura s reverse_charge=1 nebo klasifikační kód s příznakem is_reverse_charge — kódy 5 a 23) vendor fakturuje bez DPH. Aplikace daň dopočítá ze základu: daň_CZK = základ_CZK × sazba / 100. Tatáž částka se uvede dvakrát:

Net dopad na vlastní daň je tedy nulový (daň = odpočet), pokud máš plný nárok.

Vlastní daň vs. nadměrný odpočet

vlastní daň = DPH na výstupu − nárok na odpočet. Kladná hodnota = daň k úhradě FÚ; záporná = nadměrný odpočet. Atribut trans ve VetaD se nastaví A (vznikla povinnost) / N podle znaménka.

Jak fungují VAT klasifikační kódy

Každá faktura (nebo její řádek) má vat_classification_code (např. "1", "40", "5", "20"). Tento kód určuje na který řádek DPH přiznání položka patří.

Standardní kódy (CZ, 2025-2026):

Vystavené (sale)Přijaté (purchase)
1 — Tuzemsko 21% (řádek 1 DPHDP3)40 — Tuzemsko 21% s odpočtem
2 — Tuzemsko 12% (řádek 2)41 — Tuzemsko 12% s odpočtem
3 — Osvobozeno (řádek 3)42 — Bez nároku na odpočet
20 — EU dodání zboží (řádek 20)5 — Tuzemský reverse charge (řádek 10)
22 — EU služby23 — EU acquisition zboží (řádek 3)
26 — Export do 3. země24 — Přijatá služba z EU (řádek 5)

Auto-default klasifikace

Pokud na fakturu/řádek manuálně nevybereš kód, systém automaticky přiřadí podle:

Mapování čte z databáze vat_classifications table. Pokud admin v Codebooks tabu Klasifikace DPH upraví sazbu (např. 21% → 20% k 1.1.2027), defaulter automaticky chytne novou hodnotu.

Override per řádek nebo header

V editoru faktury (vystavené i přijaté) je sekce Klasifikace s VAT picker dropdown. Můžeš:

Reverse charge v cizí měně (od v4.1.0)

Pro RC plnění (typicky reverse_charge=true na fakturě, kódy 5 / 23 / 24) v cizí měně:

  1. Kurz se aplikuje na základ DPH (pii.total_without_vat × invoice.exchange_rate).
  2. Samovyměřená daň se dopočte ze sazby (základ_CZK × vat_rate / 100), protože vendor vystavil bez DPH.
  3. Odpočet se uvede na ř. 43 jako mirror primary řádku (3 / 10 / 12 — viz dphdp3_line_secondary v vat_classifications).

Příklad: faktura z DE, 1 000 € @ kurz 25, vat_classification_code='23' → ř. 3 (p_zb23=25000, dan_pzb23=5250) + ř. 43 (odp_rezim=25000, odp_rez_nar=5250) + KH sekce A.2.

Pořízení dlouhodobého majetku (od v4.1.0)

Checkbox „Pořízení dlouhodobého majetku" v editoru přijaté faktury označí doklad za majetek vymezený v § 4 odst. 4 písm. c) (vozidlo, stroj). Pro mixed doklady lze flag nastavit i per řádek.

Hodnota se na DPHDP3 uvede:

Daň se v součtech ř. 46 neduplikuje (ř. 47 je informativní). V Knize DPH je samostatná sekce 47.047 se sumací.

Kontrolní hlášení (DPHKH1)

Cesta: Daně → Kontrolní hlášení

KH se podává vždy měsíčně s sekcemi:

UI ukazuje count řádků per sekce + deadline countdown.

Pravidla zařazení do sekcí

Aby v reálně podaném KH seděly sekce, řídí se zařazení dokladů těmito pravidly (odpovídají metodice GFŘ a opravám z reportu #35):

PravidloDetail
ObdobíCOALESCE(tax_date, issue_date) v daném měsíci — DUZP, fallback datum vystavení. Doklad bez DUZP se zařadí podle data vystavení (nevypadne).
StavBez draft a cancelled (storno je součást auditní stopy, do KH nepatří).
Práh 10 000 KčPorovnává se abs() celkové částky vč. DPH — záporný dobropis nad limit (např. −25 000 Kč) jde tedy správně do A.4/B.2 jednotlivě, ne do sumace.
DIČ protistranyDo A.4/B.2 patří jen plnění nad limit a s DIČ plátce. Plnění bez DIČ (B2C, doklad od neplátce) jde do sumace A.5/B.3 bez ohledu na částku — dříve se nad limit bez DIČ tiše zahazovalo.
Jen zdanitelná plněníDo A.4/A.5/B.2/B.3 patří jen plnění se zdanitelným základem 21/12 %. Osvobozená, EU dodání, vývoz a reverse charge (kde je uložená sazba 0) se sem nezařazují (netvoří nulové řádky).

Kam který doklad patří

[!NOTE] Rekapitulace (VetaC) sčítá obraty napříč sekcemi. rez_pren5 (RC ve snížené sazbě) je vždy 0 — tuzemský reverse charge je v ČR vždy v základní sazbě 21 %.

Atributy A.2 (pořízení z JČS)

k_stat (země dodavatele), vatid_dod (DIČ bez prefixu země), c_evid_dd (číslo dokladu dodavatele), dppd (datum povinnosti přiznat daň), zakl_dane1/dan1 (21 %), zakl_dane2/dan2 (12 %). Daň se dopočítá ze základu × sazba/100, protože vendor fakturuje bez DPH.

Kniha DPH (měsíční VAT žurnál)

Cesta: Daně → Kniha DPH

Interní reportingový výkaz — není to EPO podání na finanční úřad, slouží jen pro vnitřní přehled a archivaci. Žurnál seskupený podle řádků DPH přiznání:

Per řádek faktury sekce: **Datum plněníZaúčtováníDoklad (PF / VF +
číslo)PopisZáklad daně CZKDPH CZKCelkem CZKPartner + DIČ
Orig. číslo dokladuOrig. datum plněníKH kód (A.4. / B.2. / B.3.)**.

Měsíční selektor (rok + měsíc), tlačítko Stáhnout PDF (landscape A4). Zahrnuje i drafty (vizuálně označené) — užitečné pro pracovní přehled před uzavřením období. Storno faktury (status cancelled) se neukazují.

Měsíční export (ZIP)

Cesta: Daně → Měsíční export

Stáhne jeden ZIP za zvolený měsíc se vším, co účetní pro daný měsíc potřebuje, roztříděné do pojmenovaných složek. Zaškrtnutím vyberete, co se zabalí:

U každé části se hned ukáže počet dostupných dokladů; prázdné části nejdou zaškrtnout.

Zařazení do období je daňově korektní a shodné s výkazy DPH (přiznání, kontrolní hlášení, kniha DPH): vystavené dle DUZP, přijaté tuzemské dle pozdějšího z dat DUZP / vystavení, přijaté zahraniční reverse charge dle DUZP *(od v4.16.0)*, výpisy dle data výpisu.

Běh na pozadí

Protože u většího počtu faktur může příprava PDF chvíli trvat, export běží jako úloha na pozadí — po spuštění vidíte průběh (stav, postup, krok) a po dokončení tlačítko Stáhnout ZIP. Hotové exporty zůstávají v seznamu Poslední exporty a jdou stáhnout opakovaně; soubor se stažením nemaže. Úklid proběhne automaticky po 7 dnech (nebo ručně tlačítkem koš). Souběžně běží vždy jen jeden export.

Souhrnné hlášení (DPHSHV)

Cesta: Daně → Souhrnné hlášení

Souhrnné hlášení (anglicky Recapitulative Statement) je výkaz EU dodání zboží a služeb v režimu B2B (vystavené faktury klientům — plátcům DPH v jiných členských státech EU). Podává se měsíčně.

[!IMPORTANT] Souhrnné hlášení podávají i identifikované osoby (neplátci DPH), pokud poskytují B2B služby plátcům v EU, nebo nakupují zboží z EU nad limit.

Co se generuje

Per VAT_ID protistrany + typ plnění:

KódTyp plněníVAT klasifikační kód v MyInvoice
0Dodání zboží do jiného členského státu EU20
1Trojstranný obchod (prostředník)21 (pokud máte custom kód)
2Poskytnutí služby s místem plnění v EU22
3Přemístění zboží

Hodnota plnění = suma total_without_vat (základ daně, BEZ DPH) v CZK.

Předpoklady

  1. Vystavené faktury klientům z EU (country_iso2 ≠ CZ AND countries.is_eu = 1)
  2. Klient má vyplněné DIČ (pro EU obvykle s prefixem země: SK1234567890, DE123456789, atd.)
  3. Faktury musí mít VAT klasifikační kód 20 (zboží) nebo 22 (služby) — auto-default je řeší, ale ověř manuálně

XML formát

Generuje DPHSHV verze 06.01. Per řádek VetaA1:

Termín podání

Vždy 25. den následujícího měsíce (stejně jako KH).

Změna VAT sazby v budoucnu (např. 21% → 20% v 2027)

Pokud se sazba změní, postupuj:

  1. Codebooks → Sazby DPH:
  1. Codebooks → Klasifikace DPH:
  1. Pro historické faktury 2026 — sazba 21% zůstane na řádku (snapshot, immutable po vystavení).
  2. Pro nové faktury 2027+ — systém auto-default najde novou sazbu/kód.

Časté chyby

"Chybí kód finančního úřadu"

→ Doplň v Nastavení → Daňové nastavení.

"Faktura nemá VAT klasifikační kód"

→ Auto-default by ho měl přiřadit. Pokud ne, znamená to, že VAT sazba na řádku nemá v vat_classifications defaultní kód. Buď přidej kód v Codebooks, nebo vyber manual v editoru.

"DIČ klienta není ve formátu CZxxxxxxxx"

→ Pro KH XML potřebuje DIČ být čisté číslo (bez prefixu CZ). Systém to ořezává automaticky. Pokud klient nemá DIČ, doklad se zařadí do sumační sekce A.5 (resp. B.3) bez ohledu na částku — do A.4/B.2, kde je DIČ povinné, se nedostane. Pokud doklad do A.4/B.2 patřit má (protistrana je plátce), doplň jí DIČ.

Podpora pro daňového poradce

Pokud XML zpracovává externí účetní:

  1. Vyplň v Nastavení Sestavitel přiznání (jméno, funkce, telefon, email)
  2. Doporučujeme: u poradce ověřit XML před prvním podáním
  3. Pro testovací podání používej EPO portal v módu "Testovací podání" (https://adisspr.mfcr.cz)