← User guide

ISDOC e-invoices (Czech format)

Sends customer invoices and credit notes as ISDOC 6.0.2 files, embedded in the invoice PDF as well, and turns received ISDOC files into draft vendor bills.

Version19.0.1.4.2
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresaccount_edi_ubl_cii, l10n_cssk_core, l10n_cz_base
Extended byaccount_edi_isdoc_kh, account_edi_isdoc_purchase_advance, account_edi_isdoc_sale

What it is for

ISDOC (Information System Document) is the Czech national format for electronic invoices, read by most Czech accounting software. This module adds version 6.0.2 to Odoo's electronic invoicing, next to Peppol BIS 3 and the other UBL/CII formats:

It builds on Odoo's account_edi_ubl_cii, so it uses the standard Send dialog and the standard bill upload. It needs l10n_cz_base for Czech bank account numbers.

Four add-ons install themselves when their counterpart is present:

Add-on With Adds
account_edi_isdoc_sale Sales an ISDOC proforma (document type 4) from a sales order — proformas
account_edi_isdoc_sale_advance advance invoices (sales) tax documents for received payments as types 5 and 6, and deducted advances on the final invoice — advances
account_edi_isdoc_purchase_advance received advance invoices imported types 4, 5 and 6 go into the received-advance flow — received advances
account_edi_isdoc_kh Czech control statement the local reverse charge with its commodity code on exported invoices — reverse charge

ISDOC is an industry standard, not a statutory format. What the law requires is that the customer agrees to an electronic tax document: a tax document is electronic when it is issued and received electronically, and the person for whom the supply is made must agree to its use — § 26 odst. 3 of the Czech VAT Act. An ISDOC file carries the particulars of § 29, including the date of the taxable supply (den uskutečnění plnění, DUZP), which ISDOC calls TaxPointDate.

ISDOC is not one of the syntaxes of the European standard EN 16931. It does not meet the Slovak e-invoicing obligation from 1 January 2027, which requires that structure; for Slovak customers use Peppol.

Setting it up

  1. Czech customers get ISDOC by default. A Czech contact with no eInvoice format of its own receives ISDOC, unless it is known to be on Peppol: Odoo's Peppol check found it, or its sending method is Peppol. Then it receives Peppol BIS 3. To choose otherwise, set the format on the contact: tab Invoicing, group Customer Invoices, eInvoice format (shown only in developer mode). A customer outside the Czech Republic gets ISDOC only when you set it there.
  2. Your company and the customer need a name, street, city, ZIP, country, and an IČO (Company ID) or a DIČ (Tax ID). The export lists anything missing.
  3. Bank account. The payment details are written only when the invoice has a bank account (Recipient Bank); the account is written in the domestic form (number and bank code) and as IBAN.
  4. Payment symbols. With l10n_cssk_payment_symbols, the invoice's variable, constant and specific symbols are written to the file.

Sending ISDOC

Send the invoice with Odoo's Send dialog as usual. For a customer set to ISDOC, Odoo generates the file INV_2026_00042.isdoc, attaches it to the invoice and the email, and embeds it in the invoice PDF, which is converted to PDF/A-3 — the form in which a PDF and its ISDOC travel as one file. If the PDF/A conversion fails, the ISDOC is still embedded. As with every Odoo e-invoice, the file is generated once and reused for later sends.

ISDOCX archive. On a posted customer invoice or credit note, Action → Download ISDOCX downloads INV_2026_00042.isdocx: a ZIP with the ISDOC, its manifest and the invoice PDF — the third form ISDOC defines. It is kept as the invoice's attachment and replaced on every download.

What the file contains:

ISDOC From Odoo
DocumentType 1 invoice, 2 credit note (5 and 6 with the advances add-on)
ID, UUID the invoice number; a UUID generated on first export and kept, so the document keeps its identity
IssueDate, TaxPointDate the invoice date; the taxable supply date, or the invoice date if there is none
VATApplicable whether the invoice carries VAT
Supplier and customer name, IČO, DIČ, address with the house number split off the street, phone, email
Invoice lines description, quantity and unit (ks when there is none), unit price and amount without and with VAT, VAT rate, barcode and internal reference of the product
OriginalDocumentReference on a credit note: number, date and UUID of the invoice it corrects
TaxTotal, LegalMonetaryTotal VAT breakdown by rate and totals — the VAT the invoice booked, rounded as on the invoice, so the breakdown adds up to the amount due
Deposits advances deducted on a final invoice, with the amounts already claimed (advances)
PaymentMeans bank transfer: due date, account number, bank code, IBAN, BIC, VS, KS, SS

The invoice must be in the company currency; an invoice in a foreign currency is refused for ISDOC.

Domestic reverse charge

With account_edi_isdoc_kh (installed with the Czech control statement), a line in the Czech domestic reverse charge (§ 92a ZDPH) is exported as one: LocalReverseCharge with the commodity code (kód předmětu plnění) the control statement reports, its VAT breakdown row marked as reverse charge and kept apart from exempt supplies. See account_edi_isdoc_kh.

Receiving ISDOC

Upload the file into vendor bills, drop it on the list, or send it to the purchase journal's email alias. Accepted are a plain .isdoc file (even when the sender labels it as a generic file type), an .isdocx archive — its PDF is attached to the bill too — and a PDF with an ISDOC embedded. Files of older ISDOC versions are read as well.

The draft bill gets:

Document types 2 and 6 become vendor credit notes; all others become bills. The VAT period declared is deliberately left empty: it is when you claim the deduction, which the supplier's document cannot know. The bill is a draft; check it before posting.

Proformas from sales orders

account_edi_isdoc_sale can write a sales order as an ISDOC proforma, document type 4 (zálohová faktura, a request for an advance payment): the order number as ID, the order date as issue date, the order lines, totals, and the company's first bank account with the order number's digits as variable symbol and the order's expiry date as due date. On the order, Action → Download ISDOC Proforma downloads it and keeps it as the order's attachment.

A received proforma is read by this module like any ISDOC — as a draft bill — unless the received advances add-on is installed.

Advance invoices

With account_edi_isdoc_sale_advance, the Czech advance chain of sale_order_advance_invoice maps to ISDOC:

Odoo document ISDOC
tax document for a received payment (daňový doklad k přijaté platbě) 5, or 6 for its credit note
final invoice with deducted advances (settling) 1; each deduction reported as a taxed (or untaxed) deposit, with the advance's tax document number and variable symbol, and the VAT already claimed shown per rate

The advance invoice itself is a sales order and is exported as a proforma. Odoo's own down payments are reported as deposits by the base module already.

Received advance invoices

With account_edi_isdoc_purchase_advance and purchase_order_advance_invoice, imported advance documents go into the received-advance flow:

See the supplier's tax document for what happens next.

Limitations