Generate ISDOC Invoice XML
Skill: Convert invoice data into a valid Czech ISDOC XML
Region: Czech Republic (Česká republika)
Category: E-Invoicing
Does: Takes ordinary invoice data and produces an ISDOC (Invoice) XML document — the Czech national e-invoice format used for domestic B2B/B2G exchange.
Schema version: ISDOC 6.0.1
ISDOC is the established Czech format; EN 16931 (PEPPOL/UBL, see the Slovakia skill for the UBL model) is the path for EU ViDA alignment. Validate the output against the official ISDOC 6.0.1 XSD before sending.
Input data required
| Input |
Used for |
| Invoice number, UUID, issue date, tax point date |
header |
| Seller DIČ (VAT no.), IČO (company no.), name, address |
AccountingSupplierParty |
| Buyer DIČ, IČO, name, address |
AccountingCustomerParty |
| Currency |
LocalCurrencyCode / ForeignCurrencyCode |
| Line items: description, quantity, unit, unit price, VAT rate |
InvoiceLines |
| Bank account / IBAN, due date, variable symbol |
PaymentMeans |
Namespace
| Prefix |
URI |
| default |
http://isdoc.cz/namespace/2013 |
Root element: <Invoice version="6.0.1" xmlns="http://isdoc.cz/namespace/2013">.
Document structure to emit
Invoice (version="6.0.1")
├── DocumentType (1 = invoice / tax document)
├── ID (invoice number)
├── UUID
├── IssueDate
├── TaxPointDate
├── VATApplicable (true/false)
├── LocalCurrencyCode (e.g. CZK)
├── AccountingSupplierParty (seller: Party > PartyIdentification, PartyName, PostalAddress, PartyTaxScheme)
├── AccountingCustomerParty (buyer)
├── InvoiceLines (one InvoiceLine per item)
├── TaxTotal (TaxSubTotal per rate + TaxAmount)
├── LegalMonetaryTotal (totals)
└── PaymentMeans (bank account, due date, VariableSymbol)
Party (seller / buyer)
| Element |
Notes |
Party > PartyIdentification > ID |
IČO (company registration number) |
Party > PartyName > Name |
legal name |
Party > PostalAddress |
StreetName, BuildingNumber, CityName, PostalZone, Country > IdentificationCode (CZ) |
Party > PartyTaxScheme > CompanyID |
DIČ (VAT number, e.g. CZ12345678) |
InvoiceLine
| Element |
Meaning |
ID |
line number |
InvoicedQuantity |
quantity (with unitCode attribute) |
LineExtensionAmount |
line net = quantity × unit price |
UnitPrice |
net unit price |
ClassifiedTaxCategory > Percent |
VAT rate (21, 12, 0) |
ClassifiedTaxCategory > VATCalculationMethod |
0 (from below) typical |
Item > Description |
item description |
TaxTotal / TaxSubTotal
| Element |
Meaning |
TaxSubTotal > TaxableAmount |
net per rate |
TaxSubTotal > TaxAmount |
VAT per rate |
TaxSubTotal > TaxInclusiveAmount |
gross per rate |
TaxSubTotal > Percent |
the rate |
TaxTotal > TaxAmount |
total VAT |
LegalMonetaryTotal
| Element |
Meaning |
TaxExclusiveAmount |
net total |
TaxInclusiveAmount |
gross total |
AlreadyClaimedTaxInclusiveAmount |
prepaid (if any) |
PayableAmount |
amount due |
Calculation rules
- Line net (
LineExtensionAmount) = quantity × net unit price, 2 decimals.
- Group lines by VAT rate →
TaxSubTotal: TaxableAmount = Σ nets; TaxAmount = taxable × rate; TaxInclusiveAmount = taxable + VAT.
TaxExclusiveAmount = Σ taxable; TaxTotal/TaxAmount = Σ VAT; TaxInclusiveAmount = exclusive + VAT total.
PayableAmount = TaxInclusiveAmount − already-paid.
- Czech standard VAT rate is 21%; reduced rate 12%.
Worked example (single 21% line)
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="http://isdoc.cz/namespace/2013" version="6.0.1">
<DocumentType>1</DocumentType>
<ID>2024-001</ID>
<UUID>3aa4d4f0-0b6a-4f1f-9b2d-2f1a9c0e1234</UUID>
<IssueDate>2024-01-15</IssueDate>
<TaxPointDate>2024-01-15</TaxPointDate>
<VATApplicable>true</VATApplicable>
<LocalCurrencyCode>CZK</LocalCurrencyCode>
<AccountingSupplierParty>
<Party>
<PartyIdentification><ID>12345678</ID></PartyIdentification>
<PartyName><Name>Acme s.r.o.</Name></PartyName>
<PostalAddress>
<StreetName>Programátorská</StreetName><BuildingNumber>42</BuildingNumber>
<CityName>Praha</CityName><PostalZone>11000</PostalZone>
<Country><IdentificationCode>CZ</IdentificationCode></Country>
</PostalAddress>
<PartyTaxScheme><CompanyID>CZ12345678</CompanyID></PartyTaxScheme>
</Party>
</AccountingSupplierParty>
<AccountingCustomerParty>
<Party>
<PartyIdentification><ID>87654321</ID></PartyIdentification>
<PartyName><Name>Klient a.s.</Name></PartyName>
<PostalAddress>
<StreetName>Obchodní</StreetName><BuildingNumber>7</BuildingNumber>
<CityName>Brno</CityName><PostalZone>60200</PostalZone>
<Country><IdentificationCode>CZ</IdentificationCode></Country>
</PostalAddress>
<PartyTaxScheme><CompanyID>CZ87654321</CompanyID></PartyTaxScheme>
</Party>
</AccountingCustomerParty>
<InvoiceLines>
<InvoiceLine>
<ID>1</ID>
<InvoicedQuantity unitCode="HUR">40</InvoicedQuantity>
<LineExtensionAmount>10000.00</LineExtensionAmount>
<UnitPrice>250.00</UnitPrice>
<ClassifiedTaxCategory><Percent>21</Percent><VATCalculationMethod>0</VATCalculationMethod></ClassifiedTaxCategory>
<Item><Description>Programátorské služby</Description></Item>
</InvoiceLine>
</InvoiceLines>
<TaxTotal>
<TaxSubTotal>
<TaxableAmount>10000.00</TaxableAmount>
<TaxAmount>2100.00</TaxAmount>
<TaxInclusiveAmount>12100.00</TaxInclusiveAmount>
<Percent>21</Percent>
</TaxSubTotal>
<TaxAmount>2100.00</TaxAmount>
</TaxTotal>
<LegalMonetaryTotal>
<TaxExclusiveAmount>10000.00</TaxExclusiveAmount>
<TaxInclusiveAmount>12100.00</TaxInclusiveAmount>
<AlreadyClaimedTaxInclusiveAmount>0</AlreadyClaimedTaxInclusiveAmount>
<PayableAmount>12100.00</PayableAmount>
</LegalMonetaryTotal>
<PaymentMeans>
<Payment>
<PaidAmount>12100.00</PaidAmount>
<PaymentMeansCode>42</PaymentMeansCode>
<Details><PaymentDueDate>2024-01-29</PaymentDueDate><ID>123456789/0100</ID><VariableSymbol>2024001</VariableSymbol></Details>
</Payment>
</PaymentMeans>
</Invoice>
Validation checklist
Last updated: 2026-05-26 — verify element names, the ISDOC version, and tax-category codes against the official ISDOC 6.0.1 schema and documentation before use.