← User guide

CZ VAT Return (DPHDP3)

The Czech VAT return computed from the tax tags of Odoo's Czech chart and exported as the EPO DPHDP3 XML, validated against the current official XSD for every period.

Version19.0.1.12.0
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresl10n_cssk_vat_return_base, l10n_cz, l10n_cz_statutory
Extended byl10n_cz_datadance, l10n_cz_vat_status

What it is for

The Czech layer of the shared VAT-return engine. It supplies:

How to create, compute, review, export and file a return is described on the engine's page; this page covers what is Czech.

The form and its structure

The Czech Financial Administration publishes one DPHDP3 schema, dphdp3_epo2.xsd, and replaces it in place; every return — for the current period or an old one — is filed in the structure current at the time of filing. The module therefore ships a single, open-ended version, DPHDP3 (aktuální struktura), with that schema and the XML declared as verzePis="03.01.04" — structure 03.01.04 of 11. 8. 2026. Because nothing in the schema says which revision it is, the module pins the file's checksum and the structure version in data/SCHEMA_VERSION, with the procedure for refreshing them; a test fails if the bundled file or the template's verzePis drifts from the pin. It is offered for periods from 1 January 2016; that start date is a conservative bound chosen by the module, not a statutory one, and there is no version for earlier periods.

Amounts are exported in whole crowns: a tax (output tax, deduction and rows 62–66) rounded up to the next crown, as § 146 odst. 1 of the daňový řád says ("Daň se zaokrouhluje na celé koruny nahoru"); a base or a value to the nearest crown, a half up; the coefficients of rows 52 and 53 up to a whole percent (§ 76 odst. 3 ZDPH). The filing date in the XML (d_poddp) is the day of the export.

Setting it up

Beyond the engine's setup, the XML needs, on the company:

Where What
Tax ID The DIČ (written without CZ).
Finanční úřad The tax office; its submission code goes into c_ufo.
Finanční Úřad (CZ) The territorial office (územní pracoviště), c_pracufo.
Typ osoby / subjektu Decides whether the filer is a natural person or a legal entity.
tab EPO podání For a legal entity the oprávněná osoba (name and position), for a natural person the name and title; Sestavil (who prepared the return) and, if any, Zástupce.
NACE (main activity) The main CZ-NACE activity code, c_okec; EPO reports a return without it as a serious error.
address, phone, e-mail The filer's address (street and number are split), c_telef, email.

The payer type (typ_platce) is always P (payer) unless l10n_cz_vat_status records another status.

The Czech return

The statement types are Řádné (B), Opravné (O), Dodatečné (D) and Dodatečné/opravné (E). Each row's code is the attribute name in the XML (obrat23, dan23, odp_tuz23_nar …) and its name gives the form's row number, e.g. R1 tax_base.

Computed from tags: rows 1–13 (base and tax), 20–26, 30, 32, 33, 34, the base and the full deduction of rows 40–44 and 47, row 50, 51 and 61.

Computed from the other rows, as the EPO structure defines them, after the rows above (each summed in whole crowns, as exported, so the totals foot):

Row Formula
46 sum of rows 40–45, in each column (v plné výši, krácený odpočet)
62 rows 1–13 (tax) − row 61
63 row 46 v plné výši + row 52 + row 53 + row 60
64 row 62 − row 63 when positive (vlastní daň)
65 row 63 − row 62 when positive (nadměrný odpočet)
66 (row 62 − row 63) minus the same of the return amended, on a dodatečné return only

An Override on any of them is kept and feeds the rows after it. Rows 64 and 65 are left out of the XML of a dodatečné return, and row 66 out of any other. The tax under § 108 odst. 4 písm. g) and h), which the form adds to row 62 but has no row of its own, is not modelled: add it to row 62 with Override where it arises.

Rows 64 and 65 also drive the return's Settlement tab (amount to pay or refund, and the carry of an excess deduction).

Manual — enter them with Override, or they are exported as 0:

Row Content
31 triangular trade, middle person
40–44, 47 (reduced_claim) the deduction in reduced amount (v krácené výši)
45 correction of deduction
52, 53 coefficients and the settlement of the deduction
60 adjustment of deduction

Content checks at export: rows 64 and 65 must not be negative and must not both be filled.

A dodatečné return (types D and E) is created with Amended / corrective on the filed return, and states only the differences from it: "V dodatečném přiznání se uvádí pouze rozdíly od údajů, ze kterých byla stanovena poslední známá daň" (pokyny k přiznání). The rows on screen keep the period's full figures — they are what the next amendment differs from — and the XML files each row minus the same row of the return amended; the coefficients of rows 52 and 53 are filed as they are. A dodatečné/opravné return (E) raised from a dodatečné one replaces it, so it differs from what that dodatečné amended. Without the return it amends, the export refuses.

It also cannot be exported without Důvody zjištěny dne (d_zjist), shown next to the statement type. It is the same date as the engine's Den zjištění rozdílu (one field, shown once under its Czech name), so an amendment created with the button already carries it.

Filing through EPO. With l10n_cz_epo installed, File it offers the EPO channel: the return can be checked in EPO's test mode and filed with the company's certificate.

Repairs to the Czech chart

On install and whenever a company loads the Czech chart, the module adjusts the chart's taxes so that the return can report them:

Bad-debt corrections

A document flagged with Oprava u nedobytné pohledávky (a field added by l10n_cz_statutory) leaves every ordinary row of the return. Its tax goes to ř. 33 when it is a sales document (the creditor's correction) or ř. 34 when it is a purchase document (the debtor's), in addition to any entry tagged VAT 33 / VAT 34 by hand.

Historical rates

On install and whenever a company loads the Czech chart, the rates no longer in force are created as archived taxes (see the engine's page). Each is cloned from today's rate of the same band, because DPHDP3 keeps the standard rate (rows 1/2, deduction row 40) apart from the reduced one (rows 3/4, row 41):

Rate In force Cloned from
19 % 1. 5. 2004 – 31. 12. 2009 21 %
20 % 1. 1. 2010 – 31. 12. 2012 21 %
5 % 1. 5. 2004 – 31. 12. 2007 12 %
9 % 1. 1. 2008 – 31. 12. 2009 12 %
10 % 1. 1. 2010 – 31. 12. 2023 12 %
14 % 1. 1. 2012 – 31. 12. 2012 12 %
15 % 1. 1. 2013 – 31. 12. 2023 12 %

10 % is one tax for both of its periods (2010–2011 and 2015–2023), so the three years between are not excluded by its dates.

Limitations