Päť vrstiev. Prvá fatálna chyba zastaví ďalšie a dokument sa neodošle.
| Vrstva | Čo kontroluje | Pri chybe |
|---|---|---|
L1 | Správne utvorené XML | FATAL |
L2 | Schéma UBL 2.1 (XSD) | FATAL |
L3 | EN 16931 (CEN Schematron) | FATAL alebo WARNING |
L4 | Peppol BIS Billing 3.0 (Schematron) | FATAL |
L5 | Slovenské pravidlá podľa transpozície BIS | FATAL alebo WARNING |
Každá vrstva hlási vlastný výsledok
Vrstvy L2, L3 a L4 bežia ako jeden reťazec, takže sa pravidlá nespúšťajú dvakrát.
Napriek tomu má každá vlastný výsledok — nález sa priradí podľa toho, ktorá sada pravidiel
ho vyrobila.
Hodnota vrstvy je OK, WARNING, FATAL alebo SKIPPED.
SKIPPED neznamená „prešlo”. Znamená, že vrstva vôbec nebežala, lebo reťazec sa zastavil
skôr: chyba XSD zastaví L3 aj L4, fatálna chyba na L1 zastaví všetko ostatné. „Neoverené”
a „v poriadku” sa nikdy nezlejú do jednej hodnoty.
Vrstva L5 môže navyše vrátiť ERROR — slovenskú sadu pravidiel sa nepodarilo spustiť.
Dokument to nezastaví, ale do upozornení pribudne nález s rule_id SK_ENGINE, aby bolo
z odpovede zrejmé, že slovenské pravidlá overené neboli.
Čo kontroluje slovenská vrstva
Vrstva L5 sa spúšťa, keď je dodávateľ slovenský subjekt. Rozlišuje dve
závažnosti — fatálna chyba dokument zastaví, upozornenie ho len označí a pošle
ďalej.
- Fatálne: chýbajúca schéma
0245pri identifikátoroch, neúplná adresa dodávateľa alebo odberateľa. - Upozornenie: podozrivý formát DIČ alebo IČO, chýbajúca právna forma, nezrovnalosti pri daňovom zástupcovi.
Výsledok validácie cez API
GET /api/v1/invoices/{id}/validation
X-Api-Key: …
Accept-Language: sk
Vracia posledný verdikt uložený k faktúre. Výsledky sú append-only — opakovaná validácia po oprave pridá nový záznam a starý zostáva v histórii.
| Stav | Kedy |
|---|---|
200 | verdikt existuje |
202 | faktúra je ešte PENDING alebo VALIDATING; retry_after aj hlavička Retry-After hovoria, o koľko sekúnd skúsiť znova |
404 | faktúra neexistuje — alebo je z čias pred zavedením zápisu výsledkov a verdikt už nedostane |
Nálezy majú rovnaký tvar ako v predbežnej validácii:
title, explanation a fix sú lokalizované podľa hlavičky Accept-Language (sk alebo
en, bez hlavičky en; použitý jazyk vraciame v Content-Language), raw_message a
raw_location sú originálny text Schematronu a XPath. Jeden model nálezu vám preto stačí pre
oba endpointy.
{
"id": "5a0c…",
"invoice_id": "7104dd91-…",
"created_at": "2026-09-01T09:41:10Z",
"valid": false,
"overall_severity": "FATAL",
"validation_levels": {
"L1_xml": "OK", "L2_xsd": "OK", "L3_en16931": "OK",
"L4_peppol": "FATAL", "L5_sk": "SKIPPED"
},
"errors": [{
"rule_id": "PEPPOL-EN16931-R001",
"rule_set": "PEPPOL",
"level": 4,
"severity": "FATAL",
"raw_message": "Business process MUST be provided.",
"raw_location": "/Invoice[1]/cbc:ProfileID",
"title": "Chýba identifikátor obchodného procesu",
"explanation": "Peppol vyžaduje, aby faktúra deklarovala…",
"fix": "Doplňte element cbc:ProfileID s hodnotou…",
"location": "/Invoice[1]/cbc:ProfileID",
"localized": true
}],
"warnings": [],
"truncated": false,
"total_findings": 1,
"duration_ms": 1840
}
Príklad je skrátený — odpoveď nesie aj zastarané polia opísané nižšie. id rozlišuje beh
validácie, ktorý verdikt vyrobil.
Ak pravidlo v katalógu ešte nemáme, localized je false a title obsahuje originálnu
anglickú správu. Pri viac než 500 nálezoch je zoznam skrátený (truncated), skutočný počet
je v total_findings; chyby majú prednosť pred upozorneniami.
Zastarané polia — odstránia sa v 2.0.0
Do verzie 2.0.0 odpoveď obsahuje aj pôvodné polia s rovnakou hodnotou, aby existujúce
integrácie fungovali bez zmeny. V OpenAPI sú označené deprecated: true.
| Zastarané | Použite namiesto toho |
|---|---|
overallSeverity | overall_severity |
validationLevels | validation_levels |
durationMs | duration_ms |
invoiceId | invoice_id |
createdAt | created_at |
organizationId | bez náhrady — je to organizácia volajúceho |
nález: ruleId | rule_id |
nález: ruleSet | rule_set |
nález: message | raw_message (originál) alebo title (lokalizované) |
nález: location | raw_location — do 2.0.0 nesie location XPath, potom bude čitateľnou pozíciou ako v predbežnej validácii |