Zaokrúhľovacie rozdiely v UBL faktúrach

Zaokrúhľovacie rozdiely v UBL faktúrach predchádzať a správne riešiť: PayableRoundingAmount, zaokrúhlenie DPH a ceny vrátane DPH.

Jednou z najfrustrujúcejších chybových hlásení pri odosielaní e-faktúr je zaokrúhľovací rozdiel. Sumy DPH nesúhlasia so sumami riadkov alebo celkový súčet faktúry sa odchyľuje o cent od vypočítanej sumy. Výsledok: faktúra je pri validácii zamietnutá. Tento článok vysvetľuje, odkiaľ zaokrúhľovacie rozdiely pochádzajú a ako im predchádzať alebo ich riešiť.

Prečo vznikajú zaokrúhľovacie rozdiely?

Zaokrúhľovacie rozdiely vznikajú kombináciou troch faktorov: násobenie, delenie a zaokrúhlenie na dva desatinné miesta. Niekoľko príkladov:

Jednotková cena s mnohými desatinnými miestami. Cena 3,333... eura za kus x 3 kusy = 9,999 eura. Zaokrúhlene je to 10,00 eur. Ak ale najprv zaokrúhlite jednotkovú cenu na 3,33 a potom vynásobíte: 3,33 x 3 = 9,99. Rozdiel jedného centu.

DPH na riadok versus DPH na celkový súčet. Ak vypočítate DPH na každý riadok faktúry a zaokrúhlite, a potom sčítate, súčet sa môže odchýliť od DPH vypočítanej z celkového súčtu. Pri 21 % DPH z 33,33 eura je to 7,00 eura (zaokrúhlene). Ale 21 % z 3 x 33,33 = 21 % z 99,99 = 21,00 eura. Kým 3 x 7,00 = 21,00 eura tiež. V tomto prípade to súhlasí, ale pri iných sumách nie.

Ceny vrátane DPH. Niektoré sektory (maloobchod, pohostinstvo) pracujú s cenami vrátane DPH. Čistá suma musí byť potom prepočítaná naspäť, čo prináša ďalší moment zaokrúhľovania.

Ako UBL rieši zaokrúhľovacie rozdiely
Počet desatinných miest: aktuálne a budúce pravidlo

EN 16931-1:2017 (aktuálna produkčná verzia) stanovuje, že všetky sumy sa zaokrúhľujú na 2 desatinné miesta, bez ohľadu na menu.

Revízia EN 16931-1:2026 (schválenie CEN 13. marca 2026, urn:cen.eu:en16931:2026) toto nahrádza počtom desatinných miest závislým od meny: počet desatinných miest = stĺpec „minor unit" z ISO 4217 pre použitú menu. Implementácia v Peppole prostredníctvom OpenPeppol sa očakáva ako BIS Billing 4.0 (orientačne 2027). Do tej doby platí súčasné pravidlo 2 desatinných miest.

Výnimky v roku 2026 (pevné, bez ohľadu na menu):

  • BT-129 Invoiced quantity: 4 desatinné miesta.
  • BT-146 Item net price, BT-147 Item price discount, BT-148 Item gross price: ISO 4217 minor unit + 2 extra desatinné miesta.
  • BT-149 Item price base quantity: 2 desatinné miesta.
  • Percentuálne polia (okrem iného BT-138 percentuálna zľava, BT-152 sadzba DPH): 2 desatinné miesta.

Dopad na eConnect: odchádzajúce faktúry sú vždy v eurách (minor unit 2) — bez zmeny. Prichádzajúce faktúry môžu obsahovať meny s minor unit až do 4 — spracovanie musí zvládnuť až 4 desatinné miesta. Pozri tiež EN 16931-1:2026 najväčšie zmeny pre úplný prehľad.

PayableRoundingAmount

UBL štandard pozná špeciálny element pre zaokrúhľovacie rozdiely: PayableRoundingAmount v bloku LegalMonetaryTotal. Tento element zachytáva malé zaokrúhľovacie rozdiely, takže PayableAmount môže byť okrúhla suma:

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">99.99</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">99.99</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">120.99</cbc:TaxInclusiveAmount>
  <cbc:PayableRoundingAmount currencyID="EUR">0.01</cbc:PayableRoundingAmount>
  <cbc:PayableAmount currencyID="EUR">121.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Rozdiel 0,01 eura je explicitne pomenovaný. Validačné pravidlá povoľujú PayableRoundingAmount, pokiaľ je rozdiel dostatočne malý (zvyčajne maximálne 1 euro, v závislosti od profilu).

XPath: Invoice/LegalMonetaryTotal/PayableRoundingAmount.

Príklad 1 (zaokrúhlúnie nahor): TaxInclusiveAmount je 9,99 eura, pożadovaná suma na úhradu je 10,00 eura. Potom PayableRoundingAmount = 0,01 eura a PayableAmount = 10,00 eura.

Príklad 2 (bez zmeny PayableAmount): pri výpočte ceny so 4 desatinnými miestami môže vzniknúť submikrorozdíel, napr. 8,2646 × 1,21 = 10,000166. V takom prípade PayableAmount zostane nezmený a PayableRoundingAmount nie je potrebný.

Zaokrúhlenie DPH podľa sadzby

Výpočet DPH v UBL faktúre funguje podľa sadzby DPH, nie podľa riadku. Všetky sumy riadkov s rovnakou sadzbou DPH sa sčítajú do základu (TaxableAmount) a z neho sa vypočíta DPH. To predchádza zaokrúhľovaniu na riadok a následnému kumulatívnemu zaokrúhľovaciemu rozdielu.

Vzorec je:

TaxableAmount = súčet LineExtensionAmount podľa kategórie DPH
              - AllowanceTotalAmount podľa kategórie DPH
              + ChargeTotalAmount podľa kategórie DPH

TaxAmount = TaxableAmount × Percent / 100 (zaokrúhlene na 2 desatinné miesta)

Dôležité: DPH vždy počítajte z celkového základu podľa sadzby, nie z riadku. Výpočet DPH na riadok je najčastejšou príčinou zaokrúhľovacích rozdielov.

Ceny vrátane DPH

Pri cenách vrátane DPH musí byť čistá suma prepočítaná naspäť. Štandardný postup je:

  1. Vypočítajte čistú sumu na riadok: brutto / (1 + sadzba DPH/100)
  2. Zaokrúhlite na 2 desatinné miesta
  3. LineExtensionAmount je táto čistá suma
  4. Rozdiel medzi súčtom všetkých čistých súm riadkov a hrubým celkom mínus DPH môže viesť k zaokrúhľovaciemu rozdielu
  5. Zachyťte ho pomocou PayableRoundingAmount
<!-- Cena vrátane DPH: 12,10 € za kus, 3 kusy -->
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="EA">3</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">30.00</cbc:LineExtensionAmount>
  <cac:Price>
    <cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
  </cac:Price>
</cac:InvoiceLine>

V tomto príklade je cena vrátane DPH 12,10 eura. Čistá suma je 10,00 eur za kus (12,10 / 1,21). Krát 3 = 30,00 eur. DPH: 21 % z 30,00 = 6,30 eura. Celkom: 36,30 eura. To presne zodpovedá 3 x 12,10 eura. Ale pri cenách, ktoré nie sú pekne deliteľné, vznikne rozdiel.

Ako s tým pracuje eConnect

eConnect validuje každú faktúru na internú konzistentnosť. Ak je malý zaokrúhľovací rozdiel v rámci tolerancie, faktúra je akceptovaná. Pri väčších odchýlkach dostanete jasné chybové hlásenie, ktoré ukazuje, kde sa rozdiel nachádza.

Automatická funkcia opravy XML v eConnect môže v niektorých prípadoch pridať chýbajúci PayableRoundingAmount, ak je rozdiel menší ako hranica tolerancie. Je však vždy lepšie zaokrúhlenie správne riešiť vo vlastnom softvéri.

Praktické pravidlá
  1. Počítajte DPH podľa sadzby, nie podľa riadku. Najprv sčítajte všetky sumy riadkov podľa sadzby DPH, potom vypočítajte DPH z tohto celku.
  2. Zaokrúhľujte až nakoniec. Pracujte interne s viac ako dvoma desatinnými miestami a zaokrúhľujte až pri plnení XML elementov.
  3. Použite PayableRoundingAmount pre posledný cent. Ak napriek správnemu zaokrúhleniu zostane malý rozdiel, zachyťte ho týmto elementom.
  4. Skontrolujte súčet. TaxExclusiveAmount + TaxAmount sa musí rovnať TaxInclusiveAmount. A TaxInclusiveAmount mínus PrepaidAmount plus PayableRoundingAmount sa musí rovnať PayableAmount.
  5. Otestujte s eConnect Validátorom. Pošlite faktúru cez validátor pred odoslaním. Ten skontroluje všetky výpočtové pravidlá.
Najčastejšie otázky
Ako predísť zaokrúhľovacím rozdielom vo faktúre?

Počítajte DPH podľa sadzby (nie podľa riadku), pracujte interne s viac ako dvoma desatinnými miestami a zaokrúhľujte až pri plnení XML elementov. Ak napriek správnemu zaokrúhleniu zostane malý rozdiel, zachyťte ho elementom PayableRoundingAmount.

Čo je PayableRoundingAmount?

Je to špeciálny UBL element, ktorý zachytáva malé zaokrúhľovacie rozdiely v celkových súčtoch faktúry. Rozdiel je explicitne pomenovaný, takže faktúra napriek tomu prejde validáciou. Väčšina profilov povoľuje maximum 1 euro.

Môže eConnect automaticky opraviť zaokrúhľovacie rozdiely?

V niektorých prípadoch môže automatická funkcia opravy XML pridať chýbajúci PayableRoundingAmount, ak je rozdiel v rámci hranice tolerancie. Je však vždy lepšie zaokrúhlenie správne riešiť vo vlastnom softvéri.

Skontrolovať faktúru