Guides · · 8 min read

Filing VAT electronically: XML export for EPO

How to file a Czech VAT return and control statement electronically. The DPHDP3, DPHKH1 and DPFDP7 XML formats, where to upload them and what gets rejected.

Filing VAT electronically: XML export for EPO

If you are registered for DPH (Czech VAT), paper is not an option — the return has to reach the Financial Administration electronically. What usually causes trouble is not the filing but the file itself: how to produce valid XML, where to upload it, and why the portal keeps refusing it. This guide follows the whole route, from the records you keep to a submission that is accepted.

Why XML, and what it actually is

XML (eXtensible Markup Language) is a structured text format for moving data between systems. The Czech Financial Administration requires submissions in XML for four reasons:

  • Automatic processing — the data is read straight into the authority's systems, with nobody retyping it
  • Standardisation — a published structure (the XSD schema) fixes what every field means and where it belongs
  • Validation — the file can be checked before it is accepted
  • Verified identity — an electronic submission carries proof of who sent it, which a paper form does not

Every type of submission has its own XML format defined by an XSD schema that the Financial Administration publishes. Your file has to match that schema, or it is rejected.

The three schemas a sole trader meets

DPHDP3 — the VAT return

The main VAT return, filed monthly or quarterly. The XML carries:

  • identification of the registered person (DIČ, which is the tax ID, plus name and address)
  • the tax period
  • taxable supplies made (lines 1–13)
  • taxable supplies received with a right to deduct (lines 40–47)
  • the tax liability calculation
  • details of any excess deduction

DPHKH1 — the VAT control statement

The kontrolní hlášení, a transaction-by-transaction report filed alongside the return. The XML carries:

  • identification of the registered person
  • Section A — supplies made (A.4. itemised above 10 000 Kč, A.5. as a single total up to 10 000 Kč)
  • Section B — supplies received (B.2. itemised above 10 000 Kč, B.3. as a single total up to 10 000 Kč)
  • for every transaction above 10 000 Kč: the counterparty's DIČ, the document number, the DUZP (date of taxable supply), the tax base and the VAT

DPFDP7 — the personal income tax return

The annual income tax return. The form itself covers:

  • the taxpayer's personal details
  • income from self-employment (Annex 1)
  • expenses, actual or flat-rate
  • non-taxable parts of the tax base
  • tax reliefs and the child tax credit
  • the tax calculation

DPHDP3, DPHKH1 and DPFDP7 are the Financial Administration's own form codes. They are never translated or abbreviated — a file labelled anything else will not be recognised.

Where to send the file

1. Datová schránka (data box)

The simplest and most dependable route. You attach the XML to a data message addressed to the electronic filing room of your tax office. Why it is the easy option:

  • no electronic signature needed
  • proof of delivery is generated for you
  • since 2023 every OSVČ (self-employed person, sole trader) has a data box set up automatically

In practice: log in to the data box, start a new message, choose your tax office as the recipient, attach the XML and send it.

2. EPO — Elektronická podání pro finanční správu

The EPO portal at adisspr.mfcr.cz/adistc/adis/idpr_epo/epo2/uvod/vstup.faces accepts an uploaded XML file and submits it. To file through EPO you need either:

  • a qualified electronic signature from an accredited provider (PostSignum, eIdentity, I.CA), or
  • verification through NIA (Národní identitní autorita, the national identity authority) — for example Bank iD or the eObčanka electronic ID card

EPO will also validate a file without submitting it: it checks the XML against the schema and lists the problems while you can still fix them.

3. Portál MOJE daně

Portál MOJE daně (mojedane.cz) is the newer alternative to EPO. You sign in with a NIA identity. It lets you:

  • upload an XML file
  • fill in a form interactively in the browser
  • see the returns and payments already on record
  • correspond with the tax office

Producing the XML in Taxorio

Writing the XML by hand is not realistic. The schemas are deep, and a single wrong date format or one missing mandatory element is enough for the whole submission to bounce.

Taxorio on the PRO plan generates the XML for all three submissions (DPHDP3, DPHKH1, DPFDP7) from records you already keep. The routine:

  1. Enter invoices and expenses as you go — issued invoices (income) and received documents (expenses) belong in Taxorio during the tax period, not after it. On every document get the details right: the partner's DIČ, the DUZP, the tax base and the VAT rate.
  2. Check the figures before you generate anything — the dashboard shows output and input VAT for the period. Compare it with what you expect.
  3. Generate the export — in the VAT exports section choose the period and the statement. Taxorio builds the file against the Financial Administration's current XSD schema.
  4. Download it — save the file on your computer.
  5. Upload it — through your data box, EPO or Portál MOJE daně.

One boundary to know before you file DPFDP7: Taxorio's income tax export carries the self-employment part of the return (§ 7) and the basic taxpayer relief. The child tax credit, spouse relief, § 15 deductions and any tax advances you have already paid are not in it — add them in EPO or MOJE daně before you submit. The income and expense book exports to CSV on every plan, including FREE.

Validate before you send

Validation confirms that the file:

  • matches the required XSD schema, in structure and in data types
  • contains every mandatory element
  • has no internal contradictions, such as totals that do not add up

There are three places to do it:

  • the EPO portal — the check runs automatically on upload
  • the offline EPO application — the Financial Administration publishes a desktop tool for preparing and checking submissions
  • Portál MOJE daně — the schema check runs on upload there as well

Five things that get a submission refused

1. A malformed DIČ

The DIČ must be exactly CZ followed by the number, with no spaces and no dashes: CZ12345678, never CZ 123 456 78. Generating the file from an invoicing system removes this whole class of error, provided the client records are clean — which is what the ARES lookup is for.

2. A date in the wrong shape

The schemas prescribe an exact date format, and the DUZP in particular has to be written the way the schema defines it. Hand-editing an XML file is the usual way this breaks.

3. The return and the control statement disagreeing

The totals in the control statement have to reconcile with the corresponding lines of the VAT return. When both come out of the same records — as they do in Taxorio — the question does not arise. It arises when the two are prepared separately.

4. A document number that is yours rather than theirs

For transactions above 10 000 Kč in the control statement, the document number has to be the one the counterparty used. On a received invoice that means the supplier's number, not your internal reference. On an invoice you issued it is your own invoice number.

5. An out-of-date schema

The Financial Administration revises the XSD schemas from time to time, and a file built to an older version can be refused. Software that tracks the current schema takes this off your plate.

Deadlines

  • VAT return (DPHDP3) — by the 25th day of the month following the tax period
  • VAT control statement (DPHKH1) — for a sole trader, the same deadline as the return
  • Income tax return (DPFDP7) — for 2025, by 1 April 2026 on paper or by 4 May 2026 electronically (the statutory date of 1 May falls on a public holiday, so it moves). Filing through a tax adviser extends the deadline to 1 July.
Filing the income tax return electronically gives you a month more than paper does. If you have a data box you have to file electronically in any case, so that month is simply yours.

What you need in place

  1. A data box — sole traders have had one set up automatically since 2023. If you have never activated yours, log in at mojedatovaschranka.cz with your citizen identity.
  2. Or an electronic signature or NIA identity — for filing through EPO or MOJE daně.
  3. The XML files — generated from your invoicing or accounting system.
  4. A record of the advances you have paid — so you know whether anything is still outstanding.

Electronic filing looks forbidding from the outside and turns out to be more comfortable than paper forms once you have done it once. What makes it comfortable is keeping the underlying records in order all year and letting a tool build the file: that removes the form-filling and most of the ways it can go wrong.

⚠️ Current Taxorio scope: Taxorio generates the EC Sales List XML (DPHSHV) for supported EU transactions on the PRO plan. OSS is outside its supported scope.

Taxorio scope: Taxorio provides invoicing and income/expense records for Czech sole traders. It is not full accounting or personalised tax advice. For an unsupported or unusual case, verify the treatment with a Czech accountant or tax adviser before filing.