Kompletná štruktúra UBL faktúry vysvetlená krok za krokom: od hlavičky a strán cez faktúrové riadky po súhrny DPH.
UBL faktúra je zostavená z pevnej sady stavebných blokov. Či už posielate faktúry cez platformu eConnect, cez PSB API, alebo si budujete vlastné prepojenie: veľmi pomáha vedieť, aké časti UBL faktúra obsahuje a v akom poradí sú usporiadané. Tento článok prechádza štruktúru od začiatku do konca.
UBL Invoice (verzia 2.1) sa skladá zo štyroch hlavných oblastí, vždy v tomto poradí:
V rámci každej hlavnej oblasti sú prvky v pevnom XML poradí. Toto poradie je predpísané štandardom UBL. Ak poradie zmeníte, faktúra bude pri validácii zamietnutá.
Každá faktúra začína niekoľkými povinnými prvkami, ktoré identifikujú faktúru ako celok:
<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 príjemcu, akým profilom sa faktúra riadi (napríklad NLCIUS alebo BIS Billing V3). ProfileID identifikuje obchodný proces. InvoiceTypeCode udáva, či ide o bežnú faktúru (380), variant dobropisu (381) alebo self-billing faktúru (389).
Tip: eConnect rozpozná profil automaticky na základe CustomizationID. Nemusíte nič nastavovať.
Po identifikácii nasledujú voliteľné odkazy. Najčastejšie ide o číslo objednávky (OrderReference), ale môžete tiež odkazovať na zmluvu, projekt alebo predchádzajúcu faktúru:
<cac:OrderReference>
<cbc:ID>PO-2026-1234</cbc:ID>
</cac:OrderReference>
<cac:ContractDocumentReference>
<cbc:ID>CT-2025-5678</cbc:ID>
</cac:ContractDocumentReference>
Pre prijímajúce organizácie, ktoré faktúry spracovávajú automaticky (napríklad veľké korporácie a orgány verejného sektora), je číslo objednávky často povinné. Bez čísla objednávky faktúra nebude akceptovaná.
Mnohé faktúry obsahujú PDF ako vizuálnu prílohu. Tá sa vkladá ako base64-kódovaný súbor v prvku AdditionalDocumentReference (EmbeddedDocumentBinaryObject). eConnect môže túto prílohu automaticky pridať pri odosielaní.
Či je vložené PDF na platforme eConnect zobrazené ako PDF faktúry (zobrazenie faktúry na dashboarde), závisí od presnej detekčnej hodnoty v tomto bloku:
cbc:DocumentDescription = CommercialInvoice (camelCase, bez medzery), aleboDocumentType = PrimaryImageText "Commercial Invoice" znamená to isté, ale detekcia platformy sa riadi výhradne presným vyššie uvedeným literálom. Bez tohto tagu sa PDF počíta ako bežná príloha namiesto zobrazenia faktúry. Pozri Stavy — prijatá faktúra len XML, alebo aj PDF?.
UBL faktúra pozná minimálne dve strany a voliteľne tretiu a štvrtú.
Odosielateľ faktúry. Povinné údaje sú názov, adresa a minimálne jedno daňové identifikačné číslo (DIČ alebo číslo KvK). V Holandsku je číslo KvK primárnym Peppol identifikátorom:
<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>
Príjemca faktúry. Štruktúra je identická so štruktúrou dodávateľa. EndpointID je Peppol adresa, na ktorú sa faktúra smeruje.
V niektorých prípadoch sa vyskytujú ďalšie strany:
Tento blok popisuje, ako sa má faktúra zaplatiť. Obsahuje spôsob platby (prevod, inkaso), číslo bankového účtu a voliteľne platobný 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á bankový prevod, 49 automatické inkaso, 58 SEPA inkaso. Kompletný zoznam kódov je definovaný v UNCL4461.
Voľné textové pole, v ktorom sú popísané platobné podmienky. Niektoré systémy ho používajú aj na zľavu za skorú platbu (skonto).
Voliteľné. Obsahuje dátum dodania a dodaciu adresu, relevantné pri dodávke tovaru.
Pred súhrnmi DPH sa uvádzajú prípadné faktúrové zľavy alebo prirážky. Každá položka má indikátor (true = prirážka, false = zľava), sumu a kategóriu 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 sa môže vyskytovať aj v rámci prvku Price faktúrového riadku, kde zobrazuje rozdiel medzi hrubou cenou a netto jednotkovou cenou. Na úrovni ceny platí obmedzenie: povolené sú výlučne zľavy (ChargeIndicator=false), nie prirážky. Okrem toho validačné pravidlo BR-28 predpisuje, že hrubá cena nesmie byť záporná. Viac detailov nájdete v článku o prirážkach a zľavách.
DPH sa sumarizuje podľa sadzby. Každá sadzba dostane vlastný TaxSubtotal so základom dane a vypočítanou sumou 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>
Kategória DPH S označuje štandardnú sadzbu. Ďalšie často používané kódy sú Z (nulová sadzba), E (oslobodené), AE (prenesenie daňovej povinnosti v tuzemsku), K (intrakomunitárne) a G (export).
Záverečná časť faktúry. Tu sú uvedené všetky sumy, ktoré spolu tvoria splatný výsledok:
<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 (súčet všetkých súm riadkov) mínus AllowanceTotalAmount (zľavy) plus ChargeTotalAmount (prirážky) = TaxExclusiveAmount. K tomu DPH = TaxInclusiveAmount. Mínus prípadne vopred zaplatené (PrepaidAmount) = PayableAmount. Tento výpočet musí presne sedieť, inak validácia zlyhá.
Každá faktúra má minimálne jeden riadok. Riadok obsahuje poradové číslo, fakturované množstvo, sumu riadku, popis článku a informácie 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>
Faktúrový riadok môže tiež obsahovať zľavu alebo prirážku (cez vnorený prvok AllowanceCharge), odkazovať na riadok objednávky a obsahovať doplňujúce údaje o článku, ako sú čísla artiklov alebo účtovné informácie.
Technické: Pole
AccountingCostna faktúrovom riadku sa často používa na zadanie nákladového strediska alebo dimenzie. Prijímajúce systémy ako AFAS, Unit4 a SAP dokážu toto pole prečítať pre automatické zaúčtovanie. Špeciálnym využitím je referenčná účtová osnova (RGS): zadaním referenčného čísla RGS doAccountingCostmôže prijímajúci účtovný softvér sumu automaticky zaúčtovať na správny účet hlavnej knihy. PSB transportuje prvokAccountingCostbez zmeny v UBL.
Sila UBL faktúry spočíva v internej konzistencii. Súhrny DPH musia presne zodpovedať DPH na jednotlivých riadkoch. Celkové sumy faktúry musia byť presne súčtom súm riadkov mínus zľavy plus prirážky. Ak sa odchýli čo i len cent, faktúra bude pri validácii zamietnutá.
eConnect validuje každú faktúru automaticky pri odoslaní a pri odchýlkach poskytuje zrozumiteľné chybové hlásenie. Kde je to možné, malé odchýlky (ako chýbajúce pole, ktoré možno odvodiť z kontextu) sa automaticky opravia.
eConnect poskytne jasné chybové hlásenie s uvedením, ktorý element je nesprávny. Bežné príčiny sú chyby vo výpočtoch súm DPH, chýbajúce povinné polia alebo neplatné kódy. Malé odchýlky (ako odvoditeľné chýbajúce pole) sa kde je to možné automaticky opravia.
Závisí to od spôsobu fakturácie. Ak vytvárate faktúry na platforme eConnect, všetky povinné prvky sa vyplnia automaticky. Pri odosielaní cez API musíte požadované polia poskytnúť sami, ale eConnect všetko overí a poskytne jasnú spätnú väzbu o chýbajúcich alebo nesprávnych údajoch.
Áno. Každý riadok faktúry má vlastnú kategóriu DPH a percentuálnu sadzbu. V bloku TaxTotal sa sadzby automaticky zoskupia do samostatných TaxSubtotals. Takto môžete na jednej faktúre kombinovať riadky s 21%, 9%, 0% alebo oslobodenou DPH.
Chcete lepšie pochopiť konkrétnu časť faktúry? Články uvedené nižšie sa podrobnejšie zaoberajú bežnými scenármi.
Tip: Použite bezplatný eConnect Validátor na kontrolu faktúry pred odoslaním. Validátor kontroluje nielen schému štruktúry, ale aj všetky výpočtové pravidlá a zoznamy kódov.
Validujte svoju faktúru