Validátor e-faktúry
Nahrajte XML a povieme vám, čo je s ním zle — po slovensky, s odkazom na konkrétne pravidlo. Bez registrácie, bez limitu na počet dokladov a bez toho, aby sme si súbor nechali.
Skontrolovať e-faktúru
Nahrajte súbor XML vo formáte UBL 2.1 a skontrolujeme ho podľa normy EN 16931, slovenského profilu PEPPOL BIS Billing 3.0 aj podľa §74 zákona o DPH — teda presne tak, ako by ho skontroloval prijímajúci prístupový bod.
Súbor sa nikde neukladá. Spracuje sa v pamäti, výsledok dostanete späť a dokument zahodíme. Neukladáme ho do databázy ani do logov.
Čo výsledok znamená
Chyby a upozornenia nie sú to isté a nemajú rovnaký dopad.
Chyba znamená, že doklad porušuje pravidlo, na ktorom sieť trvá. Prijímajúci prístupový bod ho odmietne a k odberateľovi sa nedostane. Musíte ju opraviť.
Upozornenie znamená, že doklad prejde, ale niečo v ňom nie je ideálne — chýbajúci variabilný symbol, neuvedená referencia odberateľa a podobne. Doklad sa doručí, ale odberateľovi môže sťažiť spárovanie.
Ak doklad prejde bez chyby aj bez upozornenia, znamená to jediné: formálne je v poriadku. Či je vecne správny — či sedí cena, množstvo a či dodávka naozaj prebehla — validátor posúdiť nevie a ani sa o to nepokúša.
Najčastejšie dôvody, prečo doklad neprejde
Z toho, čo vidíme na reálnej premávke cez náš prístupový bod.
- Chýba referencia kupujúceho alebo číslo objednávky (PEPPOL-EN16931-R003)
- Chýba elektronická adresa odberateľa alebo dodávateľa (BT-49, BT-34)
- Súčty nesedia o cent, lebo sa zaokrúhľuje až celkový súčet
- DIČ je zadané v poli pre IČ DPH — sú to dva rôzne údaje
- Neplatiteľ DPH uvádza IČ DPH pri kategórii „nepodlieha DPH“
- Zľava je vyjadrená zápornou jednotkovou cenou namiesto poľa pre zľavu
Prehľad 44 pravidiel po slovensky
Čo ktoré pravidlo vyžaduje a prečo v praxi býva porušené. Hlášky sú tie isté, aké dostanete z validátora.
Povinné hlavičkové polia
Chýbajúce pole v hlavičke je najčastejší dôvod zamietnutia. Doklad neprejde už na prvej kontrole a k odberateľovi sa vôbec nedostane.
| Pravidlo | Čo vyžaduje | Prečo býva porušené |
|---|---|---|
| BR-01 | Faktúra musí obsahovať identifikátor špecifikácie (BT-24 CustomizationID). | Systém, ktorý XML vygeneroval, nevie o PEPPOL profile. Býva to pri vlastných exportoch postavených na holom UBL. |
| BR-02 | Faktúra musí obsahovať číslo faktúry (BT-1). | Číslo sa nepreniesol z číselného radu, alebo je prázdny reťazec namiesto chýbajúceho elementu. |
| BR-03 | Faktúra musí obsahovať dátum vyhotovenia (BT-2). | Dátum je vo formáte, ktorý nezodpovedá ISO 8601 (musí byť RRRR-MM-DD), takže sa element neprečíta. |
| BR-04 | Faktúra musí obsahovať kód typu faktúry (BT-3). | Chýba InvoiceTypeCode — pre bežnú faktúru 380, pre dobropis 381. |
| BR-05 | Faktúra musí obsahovať kód meny (BT-5). | Mena sa neuvádza pri každej sume zvlášť, ale raz v hlavičke ako DocumentCurrencyCode. |
| BR-06 | Faktúra musí obsahovať názov dodávateľa (BT-27). | Názov je vyplnený len v RegistrationName, chýba v PartyName. |
| BR-07 | Faktúra musí obsahovať názov odberateľa (BT-44). | To isté na strane odberateľa — typické pri odberateľoch zadaných len IČOM. |
| BR-08 | Faktúra musí obsahovať poštovú adresu dodávateľa (BG-5). | Adresa je uložená ako jeden reťazec namiesto štruktúrovaných polí. |
| BR-09 | Adresa dodávateľa musí obsahovať kód krajiny (BT-40). | Krajina chýba, lebo systém predpokladá Slovensko. V PEPPOL sa nič nepredpokladá — musí tam byť SK. |
| BR-10 | Faktúra musí obsahovať poštovú adresu odberateľa (BG-8). | Rovnaká príčina ako pri dodávateľovi. |
| BR-11 | Adresa odberateľa musí obsahovať kód krajiny (BT-55). | Rovnaká príčina ako pri dodávateľovi. |
| BR-16 | Faktúra musí obsahovať aspoň jeden riadok (BG-25). | Doklad má len celkovú sumu bez rozpisu. Elektronická faktúra bez položiek neexistuje. |
Riadky faktúry
Pravidlá pre jednotlivé položky. Chyba sa hlási pri každom chybnom riadku zvlášť, takže jedna zle vygenerovaná položka vie vyrobiť desiatky hlášok.
| Pravidlo | Čo vyžaduje | Prečo býva porušené |
|---|---|---|
| BR-21 | Každý riadok faktúry musí mať identifikátor (BT-126). | Riadky sa nečíslujú. Stačí poradové číslo 1, 2, 3 — nemusí byť nijako významové. |
| BR-22 | Každý riadok faktúry musí mať fakturované množstvo (BT-129). | Pri službách sa množstvo často vynecháva. Aj tam musí byť, typicky 1. |
| BR-23 | Každý riadok faktúry musí mať mernú jednotku množstva (BT-130). | Chýba atribút unitCode. Kód musí byť z číselníka UN/ECE Rec 20 — kus je H87, hodina HUR, kus služby C62. |
| BR-24 | Každý riadok faktúry musí mať čistú sumu riadku (BT-131). | Suma sa počíta až v súčte, v riadku chýba LineExtensionAmount. |
| BR-25 | Každý riadok faktúry musí mať názov položky (BT-153). | Položka má len kód alebo katalógové číslo, chýba čitateľný názov. |
| BR-26 | Každý riadok faktúry musí obsahovať jednotkovú cenu položky (BT-146). | Uvádza sa len celková suma riadku bez jednotkovej ceny. |
| BR-27 | Jednotková cena položky (BT-146) nesmie byť záporná. | Zľava sa rieši zápornou cenou. Správne je kladná cena a AllowanceCharge, prípadne dobropis. |
| BR-28 | Hrubá jednotková cena položky (BT-148) nesmie byť záporná. | Rovnaká príčina ako pri BR-27. |
| BR-30 | Koniec obdobia riadku (BT-135) nesmie byť skôr ako jeho začiatok (BT-134). | Prehodené dátumy pri opakovaných službách, alebo koniec obdobia zadaný ako deň pred začiatkom. |
Výpočtové pravidlá a súčty
Najzákernejšia skupina: doklad vyzerá správne, ale zaokrúhlenie na medzisúčtoch nesedí o cent. Validátor je nekompromisný, odberateľov systém tiež.
| Pravidlo | Čo vyžaduje | Prečo býva porušené |
|---|---|---|
| BR-CO-10 | Súčet čistých súm riadkov (BT-106) sa musí rovnať súčtu súm všetkých riadkov (BT-131). | Zaokrúhľuje sa až celkový súčet namiesto každého riadku zvlášť. Rozdiel býva jeden cent. |
| BR-CO-13 | Suma bez DPH (BT-109) = súčet riadkov (BT-106) − zľavy (BT-107) + prirážky (BT-108). | Zľava je odpočítaná v riadkoch aj v hlavičke, teda dvakrát. |
| BR-CO-14 | Celková suma DPH (BT-110) sa musí rovnať súčtu súm DPH všetkých členení (BT-117). | DPH sa počíta z celkovej sumy namiesto z jednotlivých členení podľa sadzieb. |
| BR-CO-15 | Suma s DPH (BT-112) = suma bez DPH (BT-109) + celková DPH (BT-110). | Do sumy s DPH je už započítaná záloha alebo zaokrúhlenie — tie patria až do BT-113 a BT-114. |
| BR-CO-16 | Suma na úhradu (BT-115) = suma s DPH (BT-112) − zaplatené (BT-113) + zaokrúhlenie (BT-114). | Odpočet zálohovej faktúry sa urobil v riadkoch namiesto do poľa PrepaidAmount. |
| BR-CO-17 | Suma DPH členenia (BT-117) = základ dane (BT-116) × sadzba (BT-119), zaokrúhlené na 2 desatinné miesta. | Použilo sa iné pravidlo zaokrúhľovania než half-up na dve miesta. |
| BR-CO-18 | Faktúra musí obsahovať aspoň jedno členenie DPH (BG-23). | Chýba blok TaxSubtotal — býva pri neplatcoch DPH, ktorí ho považujú za nepotrebný. Potrebný je, len s kategóriou O alebo E. |
| PEPPOL-EN16931-R120 | Čistá suma riadku (BT-131) musí zodpovedať: množstvo × (cena ÷ základné množstvo) + prirážky riadku − zľavy riadku. | Nastavené BaseQuantity iné než 1 (napríklad cena za 100 kusov), ale suma sa počíta, akoby bolo 1. |
| PEPPOL-EN16931-R121 | Základné množstvo ceny (BT-149) musí byť kladné číslo. | BaseQuantity je 0 alebo záporné — typicky nevyplnené pole, ktoré sa serializovalo ako nula. |
DPH a identifikátory
Pravidlá, ktoré na Slovensku trápia najmä neplatiteľov DPH a firmy registrované podľa §7 alebo §7a.
| Pravidlo | Čo vyžaduje | Prečo býva porušené |
|---|---|---|
| BR-CO-9 | IČ DPH (BT-31/BT-48/BT-63) musí začínať kódom krajiny, napr. „SK“. | Do poľa sa dalo DIČ namiesto IČ DPH. Sú to dva rôzne údaje: DIČ patrí do BT-32, IČ DPH do BT-31. |
| BR-CO-26 | Dodávateľ musí mať aspoň jeden identifikátor: BT-29, IČO (BT-30) alebo IČ DPH (BT-31). | Neplatiteľ DPH nevyplnil IČO, lebo IČ DPH nemá. Aspoň jeden identifikátor tam musí byť vždy. |
| BR-O-01 | Faktúra s riadkom „Nepodlieha DPH“ (kat. O) musí obsahovať presne jedno členenie DPH s kódom O. | Kategória O sa mieša s kategóriou E alebo Z v jednom doklade. Kategóriu O nemožno kombinovať. |
| BR-O-02 | Faktúra s riadkom „Nepodlieha DPH“ (kat. O) nesmie obsahovať IČ DPH dodávateľa, daňového zástupcu ani odberateľa. | Firma registrovaná podľa §7 alebo §7a má IČ DPH, ale platiteľom nie je. Ak fakturuje v kategórii O, IČ DPH v doklade byť nesmie. |
| BR-45 | Každé členenie DPH musí obsahovať základ dane (BT-116). | Uvádza sa len suma DPH bez základu, z ktorého vznikla. |
| BR-48 | Každé členenie DPH musí obsahovať sadzbu DPH (BT-119), okrem kategórie „Nepodlieha DPH“. | Pri oslobodených plneniach sa sadzba vynecháva. Musí tam byť nula, nie prázdno. |
Pravidlá siete PEPPOL
Tieto nad rámec normy EN 16931 pridáva samotná sieť. Doklad môže byť podľa normy v poriadku a cez PEPPOL aj tak neprejde.
| Pravidlo | Čo vyžaduje | Prečo býva porušené |
|---|---|---|
| PEPPOL-EN16931-R001 | Faktúra musí obsahovať identifikátor procesu (BT-23 ProfileID). | ProfileID sa zamieňa s CustomizationID. Sú to dve rôzne polia a obe sú povinné. |
| PEPPOL-EN16931-R003 | Musí byť uvedená referencia kupujúceho (BT-10) alebo číslo objednávky (BT-13). | Najčastejšia PEPPOL chyba vôbec. Odberateľ často vyžaduje konkrétnu referenciu, inak faktúru nespáruje s objednávkou. |
| PEPPOL-EN16931-R004 | Identifikátor špecifikácie (BT-24 CustomizationID) musí zodpovedať Peppol BIS profilu. | Použil sa holý EN 16931 identifikátor bez PEPPOL rozšírenia. |
| PEPPOL-EN16931-R010 | Musí byť uvedená elektronická adresa odberateľa (BT-49 EndpointID). | Chýba adresa, na ktorú sa doklad doručí. Na Slovensku má tvar 0245:{DIČ}. |
| PEPPOL-EN16931-R020 | Musí byť uvedená elektronická adresa dodávateľa (BT-34 EndpointID). | Rovnaká príčina na strane odosielateľa — bez nej odberateľ nevie, komu odpovedať. |
| BR-49 | Platobná inštrukcia (BG-16) musí obsahovať kód spôsobu platby (BT-81). | Chýba PaymentMeansCode. Pre prevod je to 30 alebo 58 (SEPA). |
| BR-50 | Pri platbe prevodom musí byť uvedený identifikátor platobného účtu — IBAN (BT-84). | IBAN je len v texte platobných podmienok namiesto štruktúrovaného poľa PayeeFinancialAccount. |
| BR-CO-25 | Ak je suma na úhradu kladná, musí byť uvedený dátum splatnosti (BT-9) alebo platobné podmienky (BT-20). | Splatnosť je vyjadrená len slovne („14 dní“) v poznámke, ktorú validátor nečíta. |
Kontrola priamo z vášho systému
Ak validujete pravidelne, nemusíte nič nahrávať ručne.
Rovnakú kontrolu máme ako verejné REST API bez registrácie — pošlete UBL XML a dostanete späť zoznam chýb a upozornení. Vhodné do CI, do exportu z ERP alebo ako kontrolu pred odoslaním. Podrobnosti nájdete na stránke o API integrácii.
Ak doklady aj odosielate, validácia beží automaticky pred každým odoslaním cez náš prístupový bod — chybu tak nájdete vy a nie odberateľ.
Časté otázky
Ukladáte si nahraté faktúry?
Nie. Dokument sa spracuje v pamäti, vrátime výsledok a zahodíme ho. Neukladáme ho do databázy ani do logov a neposielame nikam ďalej.
Podľa čoho sa doklad kontroluje?
Podľa európskej normy EN 16931, podľa slovenského profilu PEPPOL BIS Billing 3.0 a podľa §74 zákona o DPH. Je to tá istá kontrola, akou prechádzajú doklady odosielané cez náš prístupový bod.
Aký formát mám nahrať?
XML vo formáte UBL 2.1 s koreňovým elementom Invoice alebo CreditNote, najviac 5 MB. PDF ani sken skontrolovať nevieme — elektronická faktúra je štruktúrovaný súbor, nie obrázok dokladu.
Doklad prešiel. Znamená to, že ho odberateľ prijme?
Znamená to, že ho neodmietne z formálnych dôvodov. O vecnej správnosti — či sedí cena, či dodávka prebehla — kontrola nehovorí nič. Odberateľ môže doklad stále zamietnuť obchodne.
Musím byť váš zákazník?
Nie. Nástroj je verejný a bez registrácie. Ak by ste chceli faktúry aj odosielať, sme akreditovaný poskytovateľ doručovacej služby — príjem máme zadarmo vo všetkých plánoch.
Prečo mi validátor hlási chybu, ktorú iný program nehlási?
Účtovné programy často kontrolujú len vlastnú logiku, nie pravidlá siete PEPPOL. Doklad môže byť podľa normy EN 16931 v poriadku a cez PEPPOL aj tak neprejde — sieť pridáva vlastné pravidlá navyše.
Dá sa validácia zavolať z môjho systému?
Áno, máme na to verejné REST API bez registrácie. Dokumentáciu nájdete na stránke o API integrácii.
Pripravte sa na rok 2027 už teraz
Príjem PEPPOL faktúr máte zadarmo v každom pláne. Účet si založíte na IČO za pár minút — bez karty a bez skúšobnej doby.