InvoiceyDocs
How Invoicey works

VAT & Czech tax rules

Rates, DUZP, reverse charge, OSS and document types.

Check your tax treatment

This page explains how Invoicey renders VAT. Ask your accountant which mode applies, with reference to zákon č. 235/2004 Sb.

Rates

RateCzechCommon examples
21 %základní sazbaMost goods and services
12 %snížená sazbaAccommodation, catering and passenger transport
0 %nulová sazba / osvobozeníBooks, exports and eligible intra-EU supplies

The UI offers 21 / 12 / 0, while the schema accepts historical positive rates. A backdated invoice with a 2022 DUZP may legitimately need 15 % or 10 %.

VAT modes

vat.mode drives what appears on the PDF and how the ISDOC is tagged.

The standard domestic invoice. VAT is charged per line.

  • Requires a DUZP.
  • The PDF prints a full VAT recap (Rekapitulace DPH) grouped by rate.
  • ISDOC emits standard <TaxTotal> blocks per rate.

For a non-payer, every line is forced to 0 %, the PDF omits the DPH column and the daňový doklad subtitle, and prints Nejsem plátce DPH. ISDOC still records rate 0.

DUZP

Datum uskutečnění zdanitelného plnění is the taxable-supply date. It determines the tax period and is separate from the issue date.

  • Required on invoice and credit_note.
  • May be before or after the issue date.
  • On proforma and advance, it may equal the issue date.
  • For a non–VAT-payer, the same date is printed as Datum uskutečnění plnění (not a tax-point date).

Document types

TypeCzechTax document?
invoiceFaktura vystavenáYes, if the issuer is a VAT payer
proformaProformová fakturaNo — a request for payment
advanceZálohová fakturaYes, for the advance (VAT payer)
credit_noteDobropis (opravný daňový doklad)Yes for a VAT payer — corrects a previous invoice

A credit_note must reference the invoice it corrects via meta.correctedInvoiceNumber. The schema enforces this.

Each type can have its own numbering scheme and counter.

Not a VAT payer?

Set vatPayer = false on the issuer. Invoicey forces every line to 0 %, does not label the PDF as a daňový doklad, omits the DPH column (0 % is not the same as “I am not a VAT payer”), replaces the VAT recap with Nejsem plátce DPH, and prints the performance date as Datum uskutečnění plnění. Numbering, QR, ISDOC and automation stay available. Add a registry line on the issuer (for an OSVČ typically Fyzická osoba zapsaná v živnostenském rejstříku.).