← User guide

CZ EC Sales List (Souhrnné hlášení)

The Czech EC sales list — souhrnné hlášení, EPO form DPHSHV — computed from the intra-EU supply taxes of Odoo's Czech chart and exported as EPO XML.

Version19.0.1.3.0
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresl10n_cssk_ec_summary_base, l10n_cz, l10n_cz_statutory
Extended byl10n_cz_datadance

What it is for

A Czech VAT payer that supplies goods or services to customers registered for VAT in another EU member state reports them on the souhrnné hlášení (EC sales list), filed electronically through the Financial Administration's EPO as the form DPHSHV.

This module is the Czech layer of l10n_cssk_ec_summary_base, which holds the screens and the workflow — preparing the list, reviewing lines, exporting and filing are described there. This module adds the Czech transaction codes, the DPHSHV XML template and the official schema, and codes the standard taxes of Odoo's Czech chart.

All references are to § 102 of the VAT Act, No. 235/2004 Sb. (zákon o dani z přidané hodnoty). Statutory terms are given in Czech.

The transaction codes (kód plnění) are those of the EPO form instructions, as carried in the official schema:

Code Supply
0 supply of goods to a person registered for VAT in another member state (§ 13 odst. 1 and 2)
1 transfer of the payer's business assets to another member state (§ 13 odst. 6)
2 supply in a triangular trade (§ 17), filled in only by the middle party
3 service with its place of supply in another member state (§ 9 odst. 1)

Form version

The module installs one version, Souhrnné hlášení 2025, valid from 1 January 2010 with no end date. It renders the EPO structure Pisemnost / DPHSHV (verzePis 02.01.05, the structure of 11. 8. 2026) and validates it against the bundled schema dphshv_epo2.xsd. The schema's checksum and the structure version are pinned in data/SCHEMA_VERSION, with the procedure for refreshing them, and a test fails when the file or the template's verzePis drifts from the pin.

One open-ended version is deliberate: the Czech Financial Administration publishes a single schema per form and updates it in place, and EPO takes every period in the current structure. There is no older Czech form to choose by year; the "2025" in the name is only a label.

The XML contains the header (VetaD: year, month or quarter, the form type), the filer block (VetaP, taken from l10n_cz_statutory without e-mail and telephone, which the form does not have) and one VetaR per line: country code, the customer's VAT number without the country prefix, the code, the number of supplies and the total value in whole crowns. A storno row carries k_storno="A" with the country, VAT number and code only.

Setting it up

When the module is installed, it sets the transaction code on the intra-EU taxes of every company that uses the Czech chart of accounts at that moment, unless a code is already there:

Tax of Odoo's Czech chart Code
0% EU G — intra-Community supply of goods 0
0% EU S — intra-Community supply of services 3

There is no standard tax for codes 1 and 2. If you transfer your own goods or act as the middle party in a triangular trade, the tax you use for it has to be coded yourself — see setting up the framework, which also lists the company data the export needs (VAT number, the tax office under Default tax authority).

Preparing and filing

Follow the shared workflow at Accounting → Reporting → Statutory Reports → EC Sales List. The statement types this module offers are Řádné, exported as form R, and Opravné and Následné (dodatečné), both exported as N (následné souhrnné hlášení): the form knows only these two, and § 102 has no opravné hlášení.

A následné hlášení reports only the changes. On Compute the module compares the recomputed period with what was filed for it — the statements of the same period marked submitted, or recorded as historical filings, taken in the order they were filed — and keeps:

Unchanged rows are left out. Storno rows are shown greyed out with Cancels a filed row ticked. A následné hlášení with no filed statement of its period recorded here is refused: mark the original submitted, or import it as a historical filing, first.

The export writes the country code of each customer's VAT number as the form lists it — EL for Greece, XI for Northern Ireland — and rounds each value up to whole crowns. A customer with an XI number is accepted for goods only; a service to one stops the export.

After Export XML, upload the file to EPO, or use File it: with l10n_cz_epo installed the list can be sent to EPO in test mode or filed directly, signed with the company's certificate.

Limitations

Check the following before you rely on the export for a live filing: