| 401 | SAPI-AUTH-001 | Neplatné client_id alebo client_secret, prípadne demo kľúče na produkčnom hoste. |
| 401 | SAPI-AUTH-002 | Access token expiroval. Získajte nový cez /auth/renew alebo /auth/token. |
| 400 | SAPI-AUTH-002 | grant_type musí byť client_credentials. |
| 401 | SAPI-AUTH-003 | Neplatný access token v hlavičke Authorization. |
| 400 | SAPI-AUTH-003 | Chýba client_id. |
| 400 | SAPI-AUTH-004 | Chýba client_secret alebo neplatný api_interface (token endpoint SAPI vydáva iba sapi). |
| 403 | SAPI-AUTH-005 | Kľúč alebo produkčná zmluva nepovoľuje rozhranie SAPI. |
| 423 | SAPI-AUTH-005retryable | Klient je dočasne zablokovaný po opakovaných neúspešných prihláseniach. |
| 403 | SAPI-AUTH-006 | Klient je deaktivovaný alebo token nemá požadovaný scope. |
| 403 | SAPI-AUTH-007 | Požiadavka z IP adresy mimo povoleného zoznamu. |
| 401 | SAPI-AUTH-008 | Chýba alebo je chybná hlavička Authorization (token status). |
| 400 | SAPI-AUTH-008 | Reťazec scope je dlhší ako 512 znakov. |
| 403 | SAPI-AUTH-008 | Požadovaný scope nie je povolený alebo ho kľúč už nemá. |
| 401 | SAPI-AUTH-009 | Klient bol zrušený alebo už nie je aktívny. |
| 400 | SAPI-AUTH-010 | Neplatné JSON telo alebo api_interface pri renew. |
| 413 | SAPI-AUTH-010 | Telo požiadavky je príliš veľké. |
| 400 | SAPI-AUTH-011 | Chýba refresh_token. |
| 401 | SAPI-AUTH-012 | Neplatný alebo expirovaný refresh token. Prihláste sa znova cez /auth/token. |
| 401 | SAPI-AUTH-013 | Refresh token bol zrušený. |
| 400 | SAPI-AUTH-014 | Chýba token pri /auth/revoke. |
| 401 | SAPI-AUTH-014 | Klient už nie je aktívny (renew). |
| 403 | SAPI-AUTH-014 | Kľúč nemá oprávnenie pre firmu z X-Peppol-Participant-Id. Príčinu udáva details[0].issue: firm_not_available (firma nie je schválená alebo chýba aktívny API prístup), legacy_client_not_allowed, sapi_not_authorized (zmluva nepovoľuje SAPI), sapi_not_permitted (kľúč nemá zapnuté SAPI v Nastavenia → API), firm_outside_key_scope (participant nepatrí firme kľúča), integrator_not_authorized (participant nie je pridelený integrátorovi alebo chýba súhlas). |
| 400 | SAPI-AUTH-015 | token_type_hint musí byť access_token alebo refresh_token. |
| 401 | SAPI-AUTH-015 | Väzba klienta na firmu sa zmenila. Prihláste sa znova cez /auth/token. |
| 401 | SAPI-AUTH-017 | Neplatný alebo expirovaný token. |
| 401 | SAPI-AUTH-018 | Token bol zrušený. |
| 503 | SAPI-AUTH-019retryable | Overenie je dočasne nedostupné. |
| 500 | SAPI-AUTH-099retryable | Interná chyba pri vydaní alebo zrušení tokenu. |
| 503 | SAPI-AUTH-099retryable | Závislosť overenia je dočasne nedostupná. |
| 400 | SAPI-VAL-001 | Telo požiadavky je neplatné. Opravte ho podľa špecifikácie endpointu a polí z details[]. |
| 400 | SAPI-VAL-002 | Chýba povinné pole, napríklad hlavička X-Peppol-Participant-Id. |
| 404 | SAPI-VAL-003 | Požadovaný doklad sa nenašiel. Skontrolujte identifikátor dokladu a že patrí firme, pre ktorú ste autentifikovaní. |
| 400 | SAPI-VAL-004 | X-Peppol-Participant-Id nie je platné Peppol ID (schéma:identifikátor), alebo ho nevieme priradiť firme. details[0].issue: participant_not_found (žiadna firma s týmto ID), participant_ambiguous (ID zodpovedá viacerým firmám), participant_mismatch (ID nepatrí firme tokenu). |
| 400 | SAPI-DOC-001 | Chýba Idempotency-Key alebo nie je platné UUID. |
| 400 | SAPI-DOC-002 | Neplatné JSON telo. |
| 400 | SAPI-DOC-003 | Chýba objekt metadata. |
| 400 | SAPI-DOC-004 | Chýbajú povinné polia v metadata. |
| 400 | SAPI-DOC-005 | Chýba payload alebo je prázdny. |
| 400 | SAPI-DOC-006 | payloadFormat musí byť "XML". |
| 403 | SAPI-DOC-007 | senderParticipantId nesedí s firmou z tokenu a X-Peppol-Participant-Id. |
| 400 | SAPI-DOC-008 | checksum musí byť neprázdny reťazec. |
| 400 | SAPI-DOC-009 | Checksum nesedí s payloadom. |
| 503 | SAPI-DOC-010retryable | Payload sa nepodarilo uložiť, úložisko je dočasne nedostupné (details[0].issue storage_unavailable). Zopakujte rovnaký request s rovnakým Idempotency-Key po Retry-After. |
| 503 | SAPI-DOC-011retryable | Záznam dokladu sa nepodarilo vytvoriť alebo pripraviť odoslanie. details[0].issue: persistence_failed alebo tdd_in_flight (TDD predchádzajúceho pokusu sa ešte odosiela). Zopakujte rovnaký request s rovnakým Idempotency-Key po Retry-After. |
| 502 | SAPI-DOC-012 | Prenos cez Peppol zlyhal alebo jeho výsledok treba dohľadať. providerDocumentId nájdete v details[]. Pri details[].issue = delivery_failed doklad doručený nebol (opakované pokusy počas približne 24 hodín zlyhali): pošlite nezmenené UBL XML a metadata s novým Idempotency-Key a pokus prevezme ten istý providerDocumentId. V ostatných prípadoch stav overte cez providerDocumentId a nový doklad neposielajte. |
| 503 | SAPI-DOC-012retryable | Validácia alebo vyhľadanie príjemcu v SMP je dočasne nedostupné. Po čase z hlavičky Retry-After zopakujte rovnaký request s rovnakým Idempotency-Key. |
| 400 | SAPI-DOC-013 | receiverParticipantId nie je vo formáte schéma:identifikátor alebo je dlhšie ako 100 znakov (details[].issue too_long). |
| 202 | SAPI-DOC-014 | Upozornenie v poli messages, nie chyba: príjemca nie je v sieti Peppol. Doklad je uložený, ale nedoručí sa. Po dodatočnej registrácii príjemcu pošlite to isté UBL XML znova s novým Idempotency-Key. |
| 422 | SAPI-DOC-015 | UBL neprešiel validáciou (XSD, EN 16931, Peppol BIS) alebo príjemca daný typ dokladu neprijíma. Každá chyba v details[] má pravidlo (rule, napr. BR-CO-15 alebo PEPPOL-EN16931-R003), miesto v XML (location), text (issue) a slovenské vysvetlenie (message_sk). |
| 413 | SAPI-DOC-016 | Pole payload je väčšie ako 22 MB alebo celé telo požiadavky väčšie ako 25 MB. details[].value uvádza veľkosť v bajtoch; väčšie prílohy priložte odkazom cac:ExternalReference. |
| 400 | SAPI-DOC-017 | payloadEncoding: podporované je iba UTF-8. |
| 409 | SAPI-DOC-018 | metadata.documentId už existuje pre odoslaný doklad tohto odosielateľa. Ak ho poznáme, details[] uvádza providerDocumentId pôvodného dokladu. |
| 400 | SAPI-DOC-019 | Payload nie je platné XML. |
| 400 | SAPI-DOC-020 | limit mimo povoleného rozsahu. |
| 400 | SAPI-DOC-021 | status musí byť RECEIVED alebo ACKNOWLEDGED. |
| 400 | SAPI-DOC-022 | Neplatný pageToken. |
| 422 | SAPI-DOC-023 | metadata.documentTypeId nesedí s koreňovým elementom UBL. |
| 409 | SAPI-DOC-024 | Rovnaké UBL XML už bolo odoslané. Nový Idempotency-Key ani documentId nový doklad nevytvorí. Výnimka: ak všetky predchádzajúce odoslania tohto UBL XML skončili v stave recipient_not_found (SAPI-DOC-014), opätovné odoslanie s novým Idempotency-Key prijmeme ako nový pokus a ePošťák nahlási opravu (TDD Resubmit). Je určené pre príjemcu, ktorý sa dodatočne zaregistroval v zákonnej 15-dňovej lehote; dodržanie lehoty API nekontroluje. details[] uvádza providerDocumentId pôvodného dokladu. |
| 422 | SAPI-DOC-025 | EndpointID odosielateľa alebo príjemcu v UBL nesedí s metadata. |
| 400 | SAPI-DOC-026 | metadata.documentId je dlhšie ako 255 znakov. |
| 422 | SAPI-DOC-027 | Od 1. 1. 2027: IssueDate v UBL sa líši od dátumu odovzdania (Europe/Bratislava). |
| 202 | SAPI-DOC-028 | Upozornenie v messages, nie chyba: dátum vystavenia je po zákonnej lehote (15 dní od dodania, pri súhrnnej faktúre od konca mesiaca). Faktúru odošleme, doručíme a nahlásime Finančnej správe. Do 31. 12. 2026 sa posudzuje cbc:IssueDate, od 1. 1. 2027 deň odovzdania. |
| 422 | SAPI-DOC-029 | Ťarchopis (383) vyžaduje odkaz na predchádzajúcu faktúru (BT-25). |
| 404 | SAPI-DOC-030 | Prijatý doklad neexistuje alebo nepatrí firme. |
| 404 | SAPI-DOC-031 | Payload dokladu nie je dostupný. |
| 503 | SAPI-DOC-031retryable | Payload prijatého dokladu je dočasne nedostupný. Zopakujte neskôr. |
| 500 | SAPI-DOC-032retryable | Payload sa nepodarilo načítať. |
| 409 | SAPI-DOC-033 | DPH obdobie pre dátum zdaniteľného plnenia už bolo podané. Dátum je v správe a v details[] (field payload, issue taxable_date). |
| 422 | SAPI-DOC-034 | metadata.documentTypeId nie je typ dokladu, ktorý SAPI prijíma, alebo daný Peppol profil nie je zapnutý na odosielanie (details[].issue profile_disabled). |
| 422 | SAPI-DOC-035 | UBL v poli payload sa nedá prečítať ako deklarovaný typ dokladu, takže nevieme overiť odosielateľa a príjemcu. Dôvod je v details[].message; skontrolujte koreňový element a metadata.documentTypeId. |
| 422 | SAPI-DOC-036 | Hodnota v UBL sa nedá uložiť: suma presahuje 9 999 999 999,99 alebo údaj presahuje dĺžku poľa (details[].field, value). Nič sa neodoslalo; opravte UBL a použite nový Idempotency-Key. |
| 404 | SAPI-DOC-040 | Doklad na potvrdenie (acknowledge) neexistuje. |
| 500 | SAPI-DOC-041retryable | Potvrdenie (acknowledge) zlyhalo. |
| 422 | SAPI-DOC-042 | Odosielateľ a príjemca sú ten istý účastník. Nič sa neodoslalo. |
| 500 | SAPI-DOC-099retryable | Interná chyba. |
| 500 | SAPI-PROC-001retryable | Odoslanie dokladu zlyhalo kvôli internej chybe. Zopakujte s rovnakým Idempotency-Key; ak chyba pretrváva, kontaktujte podporu s request_id. |
| 409 | SAPI-PROC-002 | Idempotency-Key už bol použitý s iným telom požiadavky. |
| 409 | SAPI-PROC-003retryable | Požiadavka s týmto Idempotency-Key sa ešte spracováva. Zopakujte o chvíľu. |
| 429 | SAPI-PROC-004 | Prekročená kvóta odoslaných dokladov pre tarifu. Telo obsahuje plan, limit, current, fix_hint a upgrade_url; Retry-After udáva čas do obnovenia kvóty. |
| 503 | SAPI-PROC-005retryable | Výsledok predchádzajúceho odoslania sa ešte dohľadáva. Zopakujte neskôr. |
| 500 | PEPPOL-PROC-001retryable | Overenie firmy z hlavičky X-Peppol-Participant-Id zlyhalo kvôli internej chybe. Zopakujte neskôr. |
| 500 | SAPI-PROC-001 | Rezervovaný kód SAPI-SK 1.0; ePošťák namiesto neho vracia konkrétnejší kód z tejto tabuľky. |
| 503 | SAPI-TEMP-001 | Rezervovaný kód SAPI-SK 1.0; ePošťák namiesto neho vracia konkrétnejší kód z tejto tabuľky. |
| 400 | SAPI-VAL-001 | Rezervovaný kód SAPI-SK 1.0; ePošťák namiesto neho vracia konkrétnejší kód z tejto tabuľky. |
| 404 | SAPI-VAL-003 | Rezervovaný kód SAPI-SK 1.0; ePošťák namiesto neho vracia konkrétnejší kód z tejto tabuľky. |
| 429 | RATE_LIMITEDretryable | Prekročený rate limit (150 zápisov / 200 čítaní za minútu na kľúč). |