Kompletní struktura UBL faktury vysvětlená krok za krokem: od hlavičky a stran přes řádky faktury po souhrny DPH.
UBL faktura je sestavena z pevné sady stavebních bloků. Ať už posíláte faktury přes platformu eConnect, přes PSB API, nebo si budujete vlastní propojení: velmi pomáhá vědět, jaké části UBL faktura obsahuje a v jakém pořadí jsou uspořádány. Tento článek prochází strukturu od začátku do konce.
UBL Invoice (verze 2.1) se skládá ze čtyř hlavních oblastí, vždy v tomto pořadí:
V rámci každé hlavní oblasti jsou prvky v pevném XML pořadí. Toto pořadí je předepsáno standardem UBL. Pokud pořadí změníte, faktura bude při validaci zamítnuta.
Každá faktura začíná několika povinnými prvky, které identifikují fakturu jako celek:
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>F-2026-00042</cbc:ID>
<cbc:IssueDate>2026-03-08</cbc:IssueDate>
<cbc:DueDate>2026-04-07</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
CustomizationID informuje příjemce, jakým profilem se faktura řídí (například NLCIUS nebo BIS Billing V3). ProfileID identifikuje obchodní proces. InvoiceTypeCode udává, zda jde o běžnou fakturu (380), variantu dobropisu (381) nebo self-billing fakturu (389).
Tip: eConnect rozpozná profil automaticky na základě CustomizationID. Nemusíte nic nastavovat.
Po identifikaci následují volitelné odkazy. Nejčastější je číslo objednávky (OrderReference), ale můžete také odkazovat na smlouvu, projekt nebo dříve odeslanou fakturu:
<cac:OrderReference>
<cbc:ID>PO-2026-1234</cbc:ID>
</cac:OrderReference>
<cac:ContractDocumentReference>
<cbc:ID>CT-2025-5678</cbc:ID>
</cac:ContractDocumentReference>
Pro přijímající organizace, které faktury zpracovávají automaticky (například velké korporace a orgány veřejného sektoru), je číslo objednávky často povinné. Bez čísla objednávky faktura nebude akceptována.
Mnoho faktur obsahuje PDF jako vizuální přílohu. Ta se vkládá jako base64-kódovaný soubor v prvku AdditionalDocumentReference (EmbeddedDocumentBinaryObject). eConnect může tuto přílohu automaticky přidat při odesílání.
Zda je vložené PDF na platformě eConnect zobrazeno jako PDF faktury (zobrazení faktury na dashboardu), závisí na přesné detekční hodnotě v tomto bloku:
cbc:DocumentDescription = CommercialInvoice (camelCase, bez mezery), neboDocumentType = PrimaryImageText "Commercial Invoice" znamená totéž, ale detekce platformy se řídí výhradně přesným výše uvedeným literálem. Bez tohoto tagu se PDF počítá jako běžná příloha místo zobrazení faktury. Viz Stavy — příchozí faktura pouze XML, nebo i PDF?.
UBL faktura zná minimálně dvě strany a volitelně třetí a čtvrtou.
Odesílatel faktury. Povinné údaje jsou název, adresa a minimálně jedno daňové identifikační číslo (DIČ nebo číslo KvK). V Nizozemsku je číslo KvK primárním Peppol identifikátorem:
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0106">12345678</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Voorbeeldbedrijf B.V.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Kerkstraat 1</cbc:StreetName>
<cbc:CityName>Woerden</cbc:CityName>
<cbc:PostalZone>3441 AB</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>NL</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>NL123456789B01</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Voorbeeldbedrijf B.V.</cbc:RegistrationName>
<cbc:CompanyID schemeID="0106">12345678</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
Příjemce faktury. Struktura je identická se strukturou dodavatele. EndpointID je Peppol adresa, na kterou se faktura směruje.
V některých případech se vyskytují další strany:
Tento blok popisuje, jak se má faktura zaplatit. Obsahuje způsob platby (převod, inkaso), číslo bankovního účtu a volitelně platební identifikátor:
<cac:PaymentMeans>
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
<cbc:PaymentID>RF71 2348 2367</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>NL91ABNA0417164300</cbc:ID>
<cbc:Name>Voorbeeldbedrijf B.V.</cbc:Name>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
Kód 30 znamená bankovní převod, 49 automatické inkaso, 58 SEPA inkaso. Kompletní číselník je definován v UNCL4461.
Volné textové pole, ve kterém jsou popsány platební podmínky. Některé systémy ho používají i pro slevu za včasnou platbu (skonto).
Volitelné. Obsahuje datum dodání a dodací adresu, relevantní při dodávce zboží.
Před souhrny DPH se uvádějí případné fakturové slevy nebo příplatky. Každá položka má indikátor (true = příplatek, false = sleva), částku a kategorii DPH:
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Korting</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">50.00</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
AllowanceCharge se může vyskytovat i v rámci prvku Price řádku faktury, kde zobrazuje rozdíl mezi hrubou cenou a netto jednotkovou cenou. Na úrovni ceny platí omezení: povoleny jsou výhradně slevy (ChargeIndicator=false), nikoli příplatky. Kromě toho validační pravidlo BR-28 předepisuje, že hrubá cena nesmí být záporná. Více detailů najdete v článku o příplatcích a slevách.
DPH se sumarizuje podle sazby. Každá sazba dostane vlastní TaxSubtotal se základem daně a vypočtenou částkou DPH:
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">42.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">42.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
Kategorie DPH S označuje standardní sazbu. Další často používané kódy jsou Z (nulová sazba), E (osvobozeno), AE (přenesení daňové povinnosti v tuzemsku), K (intrakomunitární) a G (export).
Závěrečná část faktury. Zde jsou uvedeny všechny částky, které dohromady tvoří splatnou částku:
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">250.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">242.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">50.00</cbc:AllowanceTotalAmount>
<cbc:PayableAmount currencyID="EUR">242.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
Výpočet: LineExtensionAmount (součet všech částek řádků) minus AllowanceTotalAmount (slevy) plus ChargeTotalAmount (příplatky) = TaxExclusiveAmount. K tomu DPH = TaxInclusiveAmount. Minus případně předem zaplacené (PrepaidAmount) = PayableAmount. Tento výpočet musí přesně sedět, jinak validace selže.
Každá faktura má minimálně jeden řádek. Řádek obsahuje pořadové číslo, fakturované množství, částku řádku, popis položky a informace o DPH:
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">250.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Consultancy-uren maart 2026</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">25.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
Řádek faktury může také obsahovat slevu nebo příplatek (přes vnořený prvek AllowanceCharge), odkazovat na řádek objednávky a obsahovat doplňující údaje o položce, jako jsou čísla artiklů nebo účetní informace.
Technické: Pole
AccountingCostna řádku faktury se často používá k zadání nákladového střediska nebo dimenze. Přijímající systémy jako AFAS, Unit4 a SAP dokáží toto pole přečíst pro automatické zaúčtování. Speciálním využitím je referenční účtová osnova (RGS): zadáním referenčního čísla RGS doAccountingCostmůže přijímající účetní software částku automaticky zaúčtovat na správný účet hlavní knihy. PSB transportuje prvekAccountingCostbeze změny v UBL.
Síla UBL faktury spočívá v interní konzistenci. Souhrny DPH musí přesně odpovídat DPH na jednotlivých řádcích. Celkové sumy faktury musí být přesně součtem částek řádků minus slevy plus příplatky. Pokud se odchýlí byť jen cent, faktura bude při validaci zamítnuta.
eConnect validuje každou fakturu automaticky při odeslání a při odchylkách poskytuje srozumitelné chybové hlášení. Kde je to možné, malé odchylky (jako chybějící pole, které lze odvodit z kontextu) se automaticky opraví.
eConnect poskytne jasnou chybovou zprávu s uvedením, který element je nesprávný. Běžné příčiny jsou chyby ve výpočtech sum DPH, chybějící povinná pole nebo neplatné kódy. Malé odchylky (jako odvoditelné chybějící pole) se kde je to možné automaticky opraví.
Závisí to na způsobu fakturace. Pokud vytváříte faktury na platformě eConnect, všechny povinné prvky se vyplní automaticky. Při odesílání přes API musíte požadovaná pole poskytnout sami, ale eConnect vše ověří a poskytne jasnou zpětnou vazbu o chybějících nebo nesprávných datech.
Ano. Každý řádek faktury má vlastní kategorii DPH a procentní sazbu. V bloku TaxTotal se sazby automaticky seskupí do samostatných TaxSubtotals. Takto můžete na jedné faktuře kombinovat řádky s 21%, 9%, 0% nebo osvobozenou DPH.
Chcete lépe pochopit konkrétní část faktury? Články uvedené níže se podrobněji zabývají běžnými scénáři.
Tip: Použijte bezplatný eConnect Validátor ke kontrole faktury před odesláním. Validátor kontroluje nejen schéma struktury, ale i všechna výpočetní pravidla a číselníky.
Validujte svou fakturu