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ť.
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.
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):
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.
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ý.
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.
Pri cenách vrátane DPH musí byť čistá suma prepočítaná naspäť. Štandardný postup je:
brutto / (1 + sadzba DPH/100)LineExtensionAmount je táto čistá sumaPayableRoundingAmount<!-- 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.
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.
TaxExclusiveAmount + TaxAmount sa musí rovnať TaxInclusiveAmount. A TaxInclusiveAmount mínus PrepaidAmount plus PayableRoundingAmount sa musí rovnať PayableAmount.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.
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.
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