Štruktúra UBL faktúry

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.

Hlavné časti

UBL Invoice (verzia 2.1) sa skladá zo štyroch hlavných oblastí, vždy v tomto poradí:

  1. Úroveň faktúry: identifikácia, typ, dátumy a referencie
  2. Strany: kto odosiela, kto prijíma a voliteľne kto dostáva platbu
  3. Informácie o platbe a dodaní: ako a kedy sa platí
  4. Finančný blok: súhrny DPH, celkové sumy faktúry a jednotlivé faktúrové riadky

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á.

1. Úroveň faktúry
Identifikácia a typ

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ť.

Referencie

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á.

Prílohy

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), alebo
  • DocumentType = PrimaryImage

Text "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?.

2. Strany

UBL faktúra pozná minimálne dve strany a voliteľne tretiu a štvrtú.

Dodávateľ (AccountingSupplierParty)

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>
Odberateľ (AccountingCustomerParty)

Príjemca faktúry. Štruktúra je identická so štruktúrou dodávateľa. EndpointID je Peppol adresa, na ktorú sa faktúra smeruje.

Voliteľné strany

V niektorých prípadoch sa vyskytujú ďalšie strany:

  • PayeeParty: ak má byť suma uhradená inej strane ako dodávateľovi (napríklad pri faktoringu)
  • TaxRepresentativeParty: ak daňový zástupca odvádza DPH v mene dodávateľa (vyskytuje sa pri zahraničných dodávateľoch, ktorí sú v Holandsku platiteľmi DPH)
3. Platba a dodanie
Spôsob platby (PaymentMeans)

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.

Platobné podmienky (PaymentTerms)

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).

Informácie o dodaní (Delivery)

Voliteľné. Obsahuje dátum dodania a dodaciu adresu, relevantné pri dodávke tovaru.

4. Finančný blok
Prirážky a zľavy na úrovni faktúry (AllowanceCharge)

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.

Súhrny DPH (TaxTotal)

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).

Celkové sumy faktúry (LegalMonetaryTotal)

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á.

Faktúrové riadky (InvoiceLine)

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 AccountingCost na 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 do AccountingCost môže prijímajúci účtovný softvér sumu automaticky zaúčtovať na správny účet hlavnej knihy. PSB transportuje prvok AccountingCost bez zmeny v UBL.

Všetko musí sedieť

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.

Často kladené otázky
Čo ak je moja faktúra odmietnutá počas validácie?

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.

Musím sám vyplniť všetky prvky UBL faktúry?

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.

Môžem na jednej faktúre použiť viacero sadzieb DPH?

Á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

Súvisiace