API Error codes (Chybové kódy)
Súčasťou chybových odpovedí HTTP WEB API služby Portos eKasa sú aj chybové kódy (vlastnosť code). Táto sekcia popisuje význam jednotlivých chybových kódov.
Príklad chybovej odpovede
{
"traceId": "0HLMCMV49LEUT:00000001",
"code": -8,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-104-receiptnotfound",
"title": "Doklad sa nenašiel",
"status": 403,
"detail": "Dopytu nevyhovuje žiaden záznam.",
"instance": "/api/v1/requests/receipts/print_copy"
}
V závislosti od chybového kódu (vlastnosť code) sa v chybovej odpovedi môžu nachádzať ďalšie parametre, bližšie popisujúce chybový stav.
Napríklad pole key v prípade -403: StorageDuplicateKey
Kategórie chybových kódov
Všeobecné -1XX
- -100: GeneralError
- -101: ClientLocked
- -102: InvalidTime
- -103: InvalidReceiptNumber
- -104: ReceiptNotFound
- -105: InvalidEKasaEnvironment
Chyby identifikačných údajov -2XX
- -200: IdentityError
- -201: IdentityNotFound
Chyby autentifikačných údajov -3XX
- -300: CertificateError
- -301: CertificateNotFound
- -302: CertificateExpired
Chyby úložiska -4XX
- -400: StorageError
- -401: StorageInsufficientSpace
- -402: StorageDICMismatch
- -403: StorageDuplicateKey
- -404: StorageNotFound
- -405: StorageAmbiguity
- -406: StorageForbiddenEKasaEnvironment
- -407: StorageForbiddenDeviceModel
Chyby tlače -5XX
- -500: PrinterError
- -501: PrinterNotFound
- -502: PrintReceiptError
- -503: PrinterNotReady
Chyby licencie -6XX
- -600: LicenseError
- -601: LicenseInvalidError
- -602: LicenseNotActivated
- -603: LicenseVerificationInProgress
Chyby QR platieb -7XX
- -700: QrPaymentError
- -701: QrPaymentInitializationError
- -702: QrPaymentNotFoundError
Validačné chyby
- -900: ValidationError
Popis chybových kódov
-100: GeneralError
Bližšie nešpecifikovaná chyba. Konkrétnú príčinu chyby popisujú vlastnosti chybovej odpovede title a detail.
-101: ClientLocked
Počas registrácie dátovej správy, došlo k chybe, ktorá zabraňuje spracovaniu takejto požiadavky v systéme finančnej správy eKasa. EKasa klient nemôže pokračovať v registrácii ďalších dátových správ.
Riešením je odstránenie príčiny, ktorá zabraňuje úspešnému odoslaniu dátovej správy a následné reštartovanie aplikácie. Takéto správanie eKasa klienta je vyžadované finančnou správou.
Príčina, pre ktorú eKasa server odmietol spracovať požiadavku, je spolu s identifikátorom požiadavky uvedená v odpovedi v poli registration.error.
Vzor poľa registration:
"registration": {
"request": {
"id": "0826db63-a26a-450f-8502-68543b4378be",
"externalId": "id-provided-by-external-application",
"originUUID": "f7f5e7c8-2598-4dfb-a0f1-d07e6207e53e"
},
"error": {
"message": "Zlé vstupné hodnoty.",
"code": -2
}
}
Napríklad, pre chybu s kódom -10, "Chyba v podpise dátovej správy.", je potrebné nastaviť správne prostredie eKasa klienta (integračné vs. produkčné).
-102: InvalidTime
Čas počítača je neplatný. Táto chyba nastane, ak rozdiel medzi lokálnym časom počítača a eKasa serverom prekročí stanovenú hodnotu serverTimeThresholdSeconds, nastavenú v konfigurácií klienta.
Chybu možno odstrániť úpravou lokálneho času na počítači: odporúča sa synchronizácia s internetovým časom.
Úprava parametra serverTimeThresholdSeconds nie je odporúčaná.
-103: InvalidReceiptNumber
Číslo dokladu nie je platné. Chyba nastane v prípade, že systémový číselník dokladu nie je synchronizovaný s úložiskom a dokladu bolo systémom priradené číslo, ktoré sa už na úložisku nachádza. Dôvodom môže byť napr. zmazanie systémového súboru (ten je určený v konfiguračnom poli dataFilePath).
-104: ReceiptNotFound
Doklad nebol nájdený. Upravte potrebné parametre v predmetnom dopyte volania a akciu zopakujte.
-105: InvalidEKasaEnvironment
Vykonanie požiadavky vyžaduje e-Kasa prostredie, ktoré je iné, ako aktuálne prednastavené. Táto chyba môže nastať, ak napr. požiadavka na registráciu dokladu alebo polohy používa ORP kód viazaný na prostredie iné, ako prednastavené alebo ak sa nahrávané identifikačné údaje viažu na rozdielne e-Kasa prostredie.
-200: IdentityError
Rezervované pre budúce použitie.
-201: IdentityNotFound
Identita s kódom on-line registračnej pokladne, uvedenom v poli cashRegisterCode, nebola nájdená. Táto chyba nastane, ak sa v úložisku nenachádza žiaden záznam identity (identifikačný údaj) s daným kódom on-line registračnej pokladne - cashRegisterCode. Nahratie požadovaných identifikačných údajov do úložiska odstráni vzniknutý problém.
-300: CertificateError
Chyba certifikátu indikuje problém týkajúci sa certifikátu, ktorého presná príčina je uvedená v poli detail.
Príčiny:
- nesprávne heslo uvedené v procese nahrávania nového certifikátu do úložiska
- nesprávne alebo poškodené údaje certifikátu
Riešením je opakované nahratie certifikátu so správnym heslom, resp. so správnymi údajmi o certifikáte (pole data).
-301: CertificateNotFound
Nebol nájdený žiaden (platný) certifikát pre identitu, uvedenú v poli cashRegisterCode. Táto chyba nastane v prípade, že do úložiska nebol doposiaľ nahratý žiaden certifikát (autentifikačný údaj) alebo existujúci certifikát už vypršal.
V oboch prípadoch sa vyžaduje nahratie nového certifikátu.
-302: CertificateExpired
Certifikát, pre kód on-line registračnej pokladne s číslom uvedeným v cashRegisterCode chybovej odpovedi, exspiroval. Pred registráciou ďalšieho dokladu alebo polohy je nutné nahrať nový platný certifikát.
-400: StorageError
Bližšie nešpecifikovaná chyba, ktorá nastala v súvislosti s prácou s chráneným dátovým úložiskom (čítanie resp. zápis na dátové úložisko alebo čítanie resp. zápis do pomocnej tabuľky indexov dátového úložiska).
Najbežnejšie príčiny sú, že dátové úložisko nie je pripojené k systému, alebo je v konfigurácii uvedený nesprávny názov sériového portu.
-401: StorageInsufficientSpace
Zázam sa nepodarilo uložiť s dôvodu nedostatočnej voľnej kapacity dátového média chráneného dátového úložiska.
-402: StorageDICMismatch
Do úložiska bol vykonaný pokus o zápis záznamu s DIČ hodnotou inou, ako je DIČ hodnota úložiska.
Úložisko je viazané na jeden podnikateľský subjekt, identifikovaný pomocou DIČ.
Pokus o vloženie identifikačných alebo autentifikačných údajov, prípadne dátovej správy (dokladu alebo polohy), ktorá neprislúcha tomuto podnikateľskému subjektu bude zamietnutý touto chybou.
-403: StorageDuplicateKey
Zápis do úložiska zlyhal, nakoľko pre daný kód on-line registračnej pokladne už v úložisku existuje záznam s rovnakým identifikátorom a tieto záznamy sú po svojej obsahovej stránke rôzne.
Vzor odpovede:
{
"key": {
"name": "RegistrationRequestExternalId",
"value": "0afa4ca5-26d5-41d8-a485-cf2ad0e7d6f0"
},
"cashRegisterCode": "88812345678900001",
"traceId": "0HLMDGC781MUH:00000002",
"code": -10,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-403-storageduplicatekey",
"title": "Duplicitný identifikátor",
"status": 500,
"detail": "Záznam s externým identifikátorom '0afa4ca5-26d5-41d8-a485-cf2ad0e7d6f0' už existuje.",
"instance": "/api/v1/requests/receipts"
}
Úložisko si pred zápisom požiadavky overí unikátnosť:
- identifikátora požiadavky (
id) - externého identifikátora požiadavky: (
externalId) - v prípade registrácie dokladu aj unikátnosť čísla dokladu (
receiptNumber)
Za účelom bližšej identifikácie indexu, ktorého unikátnosť je porušená, sa v tele odpovede nachádza pole key.
Pole key obsahuje názov indexu porušujúceho uniátnosť (name) a jeho hodnotu (value).
Pole name nadobúda v závislosti od typu indexu tieto hodnoty:
| Index | Hodnota key.name |
Riešenie |
|---|---|---|
| Interné id | RegistrationRequestId |
Pravdepodobnosť duplicitnej hodnoty pre interný identifikátor (Id) je extrémne nízka. V prípade výskytu je riešením opakovanie požiadavky. |
| Externé id | RegistrationRequestExternalId |
V prípade duplicitnej hodnoty pre externý identifikátor (ExternalId) je potrebné hľadať príčinu v nadradenej aplikácií. Riešením je zopakovať požiadavku s novou hodnotou externého identifikátora. |
| Číslo dokladu | ReceiptRegistrationRequestReceiptId |
Zhoda ReceiptNumber indikuje nezosynchronizovaný číselník dokladov s úložiskom. V tomto prípade ide o zlyhanie eKasa aplikácie. Odporúča sa aktualizovať eKasa API na najnovšiu dostupnú verziu. |
Konkrétnú príčinu chyby popisujú vlastnosti chybovej odpovede titlea detail.
-404: StorageNotFound
Chyba nastane, ak nastavenie úložiska nemá vyplnenú hodnotu StorageModel alebo ChduSerialPortName a zároveň nebolo k zariadeniu pripojené žiadne z kompatibilných dátových úložísk.
-405: StorageAmbiguity
Chyba nastane, ak nastavenie úložiska nemá vyplnenú hodnotu StorageModel alebo ChduSerialPortName a zároveň bolo k zariadeniu pripojených viacero kompatibilných dátových úložísk.
-406: StorageForbiddenEKasaEnvironment
Chyba nastane, ak úložisko bolo použité na nepodporované e-Kasa prostredie, napr. InMemory úložisko bolo použité na produkčné (Production) prostredie.
-407: StorageForbiddenDeviceModel
Táto chyba vznikne v prípade, že úložisko je použité na nepodporovanom modeli zariadenia.
Najčastejšie sa týka úložiska SwissBit, ktorého použitie je povolené výhradne na zariadeniach, ktoré absolvovali certifikačné konanie v súvislosti s aplikáciou eKasa na Finančnej správe SR.
Použitie úložiska SwissBit na inom než certifikovanom modeli zariadenia nie je povolené a vedie k vzniku tejto chyby. Výnimku tvorí režim tzv. technického dema, kedy je aplikácia viazaná výhradne na integračné prostredie systému eKasa za účelom overenia kompatibility zariadenia.
-500: PrinterError
Všeobecná chyba tlače na tlačiarni s názvom uvedeným v poli printerName. Presné príčiny zlyhania tlače sú uvedené v poli detail chybovej odpovede.
-501: PrinterNotFound
Tlačiareň s názvom, uvedeným v premennej printerName chybovej odpovedi, nebola nájdená a doklad nemôže byť vytlačený. Riešením je použiť, v každej ďalšiej požiadavke o zaevidovanie dokladu alebo polohy, jeden z platných názvov tlačiarní a to buď pos, pdf alebo email.
-502: PrintReceiptError
Tlač dokladu zlyhala. Ak chyba nastala počas požiadavky evidencie dokladu, doklad možno považovať za zaevidovaný eKasa serverom. Zákazníkovi je v takomto prípade nutné vystaviť kópiu dokladu, pričom v požiadavke sa uvedie jeden z jeho identifikátorov, uvedený v chybovej odpovedi a to buď requestExternalId, ak bol uvedený, alebo receiptId.
Príklad chybovej odpovede zlyhanej požiadavky spracovania dokladu:
{
"printerName": "email",
"receiptId": {
"cashRegisterCode": "88812345678900001",
"year": 2019,
"month": 6,
"receiptNumber": 21
},
"requestExternalId": null,
"traceId": "0HLNDFM9VMUHB:00000001",
"code": -502,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-502-printreceiptererror",
"title": "Tlač dokladu zlyhala",
"status": 500,
"detail": "Tlač dokladu č.21 z 6/2019 pokladne 88812345678900001 na tlačiarni 'email' zlyhala.",
"instance": "/api/v1/requests/receipts"
}
Následná požiadavka o vytlačenie kópie dokladu môže vyzerať nasledovne:
{{server_address}}/api/v1/requests/receipts/print_copy?cashRegisterCode=88812345678900001&year=2019&month=6&receiptNumber=21
-503: PrinterNotReady
Tlačiareň s názvom, uvedeným v premennej printerName chybovej odpovedi, nie je pripojená a akcia súvisiaca s tlačiarňou nemôže byť dokončená. Riešením je overiť, či je tlačiareň fyzicky pripojená k úložisku a zapnutá.
Niektoré modely chráneného dátového úložiska (napríklad CHDU-SK) však umožňujú vykonanie akcie súvisiacej s tlačou aj napriek nepripravenej tlačiarni. Z tohto dôvodu majú niektoré akcie (tlač nefiskálneho dokladu, tlač kópie dokladu, tlač neodoslaných dátových správ, otvorenie peňažnej zásuvky, ...) vo svojich návratových modeloch vlastnosť printed.
-600: LicenseError
Pridané od verzie eKasa API 7.0.0.
Chyba licencie indikuje problém týkajúci sa licencie, ktorého presná príčina je uvedená v poli detail.
-601: LicenseInvalidError
Licencia je neplatná. Táto chyba nastane, ak licencia pre úložisko nie je platná alebo ak niektoré z používaných rozšírení nie sú platné.
Príklad chybovej odpovede:
{
"storage": {
"isValid": true,
"customerWarranty": {
"start": "2023-10-01T00:00:00",
"end": "2024-10-31T23:59:59"
},
"error": {
"message": "Úložisko nie je v záruke",
"code": -104
}
},
"features": [
{
"sku": "ekasa",
"isValid": false,
"version": "6.10.4",
"validity": {
"start": "2023-10-01T00:00:00",
"end": "2024-10-31T23:59:59"
},
"error": {
"message": "Licencia pre balík 'ekasa' vo verzii '6.10.4' nie je pre toto úložisko platná",
"code": -203
}
}],
"traceId": "0HLNDIHB0GA61:00000001",
"code": -601,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#601-licenseinvaliderror",
"title": "Validácia je neplatná",
"status": 500
}
-602: LicenseNotActivated
API odmietlo obslúžiť požiadavku, pretože zariadenie nemá aktivovanú licenciu. Aktivácia licencie nastáva pri prvom spustení aplikácie a jej priebeh či inštrukcie možno sledovať na obrazovke zariadenia.
Volajúci by mal používateľa nasmerovať na dokončenie aktivačného procesu v samotnej aplikácii (QR kód alebo ručné zadanie kódu od technika).
Chybový kód je podporovaný od verzie 8.0.3 na platforme Android.
Príklad chybovej odpovede:
{
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-602-licensenotactivated",
"title": "Licencia nie je aktivovaná",
"status": 503,
"detail": "Licencia nie je aktivovaná.",
"code": -602,
"traceId": null,
}
-603: LicenseVerificationInProgress
Lokálne API je dočasne nedostupné, pretože práve prebieha štartovacie overovanie stavu zariadenia voči onboarding backendu. Ide o prechodný stav, ktorý typicky trvá iba prvé sekundy po spustení aplikácie — kým sa dokončí kontrola licencie.
Volajúci by mal požiadavku po krátkej pauze zopakovať (napr. 3–5 sekúnd).
Po úspešnom overení API automaticky prejde do režimu obsluhy požiadaviek;
pri neúspechu sa stav zmení na -602 LicenseNotActivated.
Chybový kód je podporovaný od verzie 8.0.3 na platforme Android.
Príklad chybovej odpovede:
{
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-603-licenseverificationinprogress",
"title": "Prebieha overovanie licencie",
"status": 503,
"detail": "Prebieha overovanie licencie.",
"code": -603,
"traceId": null,
}
-700: QrPaymentError
Nastala chyba súvisiaca so spracovaním QR platby.
Bližšiu príčinu určuje správa v tele odpovede.
-701: QrPaymentInitializationError
Nastala chyba pri vytváraní QR platby.
Medzi možné príčiny patrí:
- Nepodarilo sa nadviazať sieťové spojenie so službou okamžitých platieb
- z dôvodu výpadku sieťového pripojenia na eKasa zariadení
- z dôvodu výpadku služby finančnej správy
- Nadviazanie zabezpečeného sietoťového spojenia bolo zamietnuté službou okamžitých platieb
Príklad chybovej odpovede:
{
"traceId": "0HNGIPOQC63UF:00000002",
"code": -701,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-701-qrpaymentinitializationerror",
"title": "Chyba vytvorenia QR platby",
"status": 500,
"detail": "Nepodarilo sa nadviazať sieťové spojenie so službou okamžitých platieb.",
"instance": "/api/v1/payments/qr",
"extensions": {}
}
-702: QrPaymentNotFoundError
QR platba s daným identifikátorom nebola nájdená.
Medzi možné príčiny patrí:
- eKasa aplikácia bola od momentu vytvorenia QR platby reštartovaná
- QR platba exspirovala a po uplynutí časového limitu bola vyradená z evidencie.
HTTP kód odpovede je 404.
Príklad chybovej odpovede:
{
"traceId": null,
"code": -702,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-702-qrpaymentnotfoundnerror",
"title": "QR platba nebola nájdená",
"status": 404,
"detail": null,
"instance": null,
"extensions": {}
}
-900: ValidationError
Validácia zlyhala. Sever nemôže spracovať požiadavku, nakoľko obsahuje neplatné dáta. Chybné polia a ich príčiny sú uvedené v poli errors.
Príklad chybovej odpovede požiadavky s neplatnými údajmi:
{
"errors": {
"Request.Data.CashRegisterCode": [
"Pole 'Cash Register Code' nemá správný formát."
]
},
"traceId": "0HLNDIHB0GA61:00000001",
"code": -900,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#900-validationerror",
"title": "Validácia zlyhala",
"status": 400
}
-1000: Unauthenticated
Pridané od verzie eKasa API 6.7.1.
Požiadavka nebola autentifikovaná. Táto chyba natane, ak
- je zapnuté zabezpečenie a požiadavka obsahuje neplatné prihlasovacie údaje (hodnota
authSchemev odpovedi má hodnotuBasic) - ak bola vykonaná požiadavka na eKasa API cez službu Expose s neplatným bezpečnostným kódom (hodnota
authSchemev odpovedi má hodnotuAccessToken)
{
"authScheme": "AccessToken",
"traceId": "0HMVHH6PS1J6J:00000002",
"code": -1000,
"type": "https://ekasa.ninedigit.sk/docs/webapi/apierrorcodes.html#-1000-unauthenticated",
"title": "Nie ste prihlásený",
"status": 401,
"detail": null,
"instance": "/api/v1/product/info",
"extensions": {}
}