Каталог на грешки
Сите шифри што API-то ги враќа се на оваа страница — нема втор список на друго место. Најбрзо се стигнува со Ctrl+F по шифрата или по текстот што го гледаш во својот лог.
EARH-1xxx — кај интеграторот — клучот или адресата
| Шифра | HTTP | Што значи | Што да направиш | Текст од API-то |
|---|---|---|---|---|
| 401 | Барањето стигна без API клуч, или со клуч што не постои кај нас. Најчесто заглавието Authorization недостасува, или клучот е препишан со празно место или скратен при копирање. | Провери го клучот што го праќаш знак по знак и прати го одново. Ако клучот е точно тој што ти е издаден, обрати ни се — можеби е издаден за друга околина (демо наспрема продукција). | API key is missing or unknown. |
| 401 | Клучот постои, но рокот му е поминат. Клучевите се издаваат со рок и по него престануваат да важат сами по себе. | Побарај нов клуч и замени го во својата поставка. Барањата не се губат — штом клучот е нов, истите барања поминуваат непроменети. | API key has expired. |
| 401 | Клучот е повлечен пред истекот на рокот — вообичаено затоа што е заменет со нов, или затоа што е пријавен како компромитиран. | Не го обидувај истиот клуч одново, тој нема да оживее. Обрати ни се за нов клуч и провери дали некој од твојот тим веќе го добил заменскиот. | API key has been revoked. |
| 403 | Клучот е исправен, но барањето доаѓа од адреса што не е на дозволената листа за тој клуч. | Прати ни ја адресата од која навистина излегуваат твоите барања за да ја додадеме. Внимавај ако сообраќајот излегува преку посредник или облак — адресата што ја гледаме ние е неговата, не твојата. | Request origin is not on the allowed list. |
| 403 | Клучот важи, но не е издаден за интеграцискиот API. Опфатот е дел од самиот клуч и не се менува од твоја страна. | Обрати ни се да ти издадеме клуч со опфат IntegrationApi. Не го обидувај истиот клуч на друга адреса — исходот ќе биде ист. | API key does not have the IntegrationApi scope. |
| 429 | Достигната е границата на сообраќај за твојот клуч во тековниот прозорец. Ова не е грешка во барањето — самото барање е исправно. | Почекај колку што кажува заглавието Retry-After во одговорот и прати го истото барање одново. Ако редовно ја допираш границата, разреди ги повиците или обрати ни се да ја погледнеме. | Rate limit exceeded. |
| 400 | Во телото на барањето стои поле што именува tenant. Кој tenant е во прашање се одредува од клучот, па такво поле не смее да доаѓа однадвор. | Отстрани го тоа поле од телото и прати одново. Ако твојата библиотека го додава сама, исклучи го тоа однесување — клучот веќе го носи податокот. | Request body must not contain a tenant-identifying field. |
| 400 | Заглавието X-Software-Id недостасува. По него распознаваме кој софтвер праќа, што ни треба кога бараме грешка заедно со тебе. | Додај го заглавието со ознаката на твојот софтвер во секое барање и прати одново. | X-Software-Id header is missing. |
| 404 | Адресата не постои во верзијата кон која праќаш. Најчесто патеката е погрешно напишана, или е од постара односно понова верзија од онаа во адресата. | Спореди ја патеката со списокот на адреси во ова упатство, вклучувајќи го и делот со верзијата. Ако адресата ја има само во понова верзија, премини на неа свесно — не менувај само еден повик. | This endpoint does not exist in this version. |
| 403 | Клучот е исправен, но планот на организацијата не носи интеграциски пристап. Тоа не е привремена состојба и не зависи од сообраќајот — секој повик со овој клуч ќе добие ист одговор додека планот не се смени. | Оваа состојба не се решава од твоја страна. Кажи ѝ на организацијата чиј е клучот дека нејзиниот план не вклучува интеграција; таа ја менува претплатата. ⛔ Не повторувај го барањето во јамка — одговорот намерно нема Retry-After, зашто чекањето не менува ништо. | The subscription plan for this organization does not include integration access. |
| 403 | Планот на организацијата го носи интеграцискиот пристап, но овој клуч е изгаснат од сопственикот — неговата граница на сообраќај е поставена на нула. Другите клучеви на истата организација можат да работат нормално. | Обрати се на сопственикот на клучот во организацијата да ја врати границата на сообраќај или да ти издаде друг клуч. ⛔ Ова не е иста состојба со EARH-1010: таму планот е проблемот, тука клучот. Одговорот нема Retry-After — чекањето не менува ништо. | This API key is currently disabled for integration traffic. |
EARH-2xxx — кај интеграторот — содржината на пратениот документ
| Шифра | HTTP | Што значи | Што да направиш | Текст од API-то |
|---|---|---|---|---|
| 400 | Телото воопшто не може да се прочита како XML — незатворена ознака, вишок знак, или пресечена содржина при праќање. | Провери го документот со XML читач пред праќање и прати го одново. Провери и дека телото не се крати при пренос (должина, кодирање, компресија). | Request body is not well-formed XML. |
| 400 | Телото е валиден XML, но не е UBL 2.1 документ — коренот или именските простори не се тие што ги очекуваме. | Изнеси го документот во UBL 2.1 од твојот софтвер и прати го одново. Друг облик на е-фактура не се прифаќа на оваа адреса. | Document is not UBL 2.1. |
| 400 | Во документот нема податок за примач. Без него не знаеме кому оди фактурата. | Пополни го делот за примач во документот и прати го одново. Ознаката за идемпотентност може да остане иста — содржината се менува, па новото барање нема да се смета за дупликат. | Document has no recipient. |
| 400 | ЕДБ-то на примачот во документот не е во облик што го препознаваме — најчесто има празни места, цртички, или помалку цифри отколку што ЕДБ носи. | Поправи го ЕДБ-то во документот и прати го одново. Ознаката за идемпотентност може да остане иста — содржината се менува, па новото барање нема да се смета за дупликат. | Recipient tax number (EDB) is malformed. |
| 400 | Документот не кажува каков е — фактура, одобрение или задолжение. Тој податок ја одредува понатамошната обработка. | Внеси го типот на документот според UBL 2.1 и прати го одново. | Document has no type. |
| 400 | Во документот недостасува износот за плаќање. Документ без износ не може да се поднесе понатаму. | Провери ги износите во документот — вкупниот износ мора да постои — и прати го одново. | Document has no amount. |
| 400 | Во документот е впишан ЕДБ на издавач (cac:AccountingSupplierParty) што не е организацијата на која припаѓа клучот. Еден клуч праќа документи само за своја организација. | Провери го ЕДБ-то на продавачот во документот, или употреби клучот на таа организација. Ако полето воопшто го изоставиш, документот се прима — испраќачот се разрешува од клучот. Обликот со и без префикс MK се смета за ист обврзник. | The issuer is not the organization this key belongs to. |
| 409 | Истата ознака за идемпотентност веќе е употребена, но со друга содржина. Тоа значи дека или е испратен нов документ со стара ознака, или документот е изменет по првото праќање. | Ако праќаш нов документ, дај му нова ознака за идемпотентност. Ако праќаш повторно ист документ, прати ја непроменета неговата содржина — тогаш одговорот е истиот како првиот пат. | This idempotency key was already used with different content. |
| 400 | Во едно барање има повеќе од еден документ. Оваа адреса прима точно еден документ по повик. | Раздели ги документите и прати го секој со свој повик и своја ознака за идемпотентност. | Request contains more than one document. |
| 413 | Документот е поголем од дозволената големина. Дозволената граница е напишана во самиот одговор. | Намали го документот под таа граница — најчесто вишокот доаѓа од вградени прилози или слики — и прати го одново. | Document exceeds the configured size limit. |
| 400 | Заглавието X-Idempotency-Key недостасува. Без него не можеме да разликуваме повторено барање од нов документ. | Додај ознака за идемпотентност — иста за повторен обид со ист документ, нова за секој нов документ — и прати одново. | X-Idempotency-Key header is missing. |
| 400 | Параметар во барањето не може да се прочита: недостасува задолжителен, датумот не е датум, или вредноста е надвор од дозволените. Полето detail го именува параметарот, а кај статусите ги набројува и дозволените вредности. | Поправи го параметарот што detail го именува и повикај одново. Повторување без измена ќе го врати истиот одговор. | A parameter cannot be read as submitted. |
| 400 | Бараниот вид кодна листа не постои. Одговорот ги набројува видовите што ги поддржуваме. | Земи еден од видовите наведени во одговорот и повикај одново. | Unknown codelist type. |
| 400 | Телото на одлуката не е употребливо. Одбивањето бара и код на причина и коментар; прифаќањето не носи ниту едно од двете. Причината мора да е активна во кодната листа reject-reasons во моментот на повикот. | Прочитај во detail што фали и прати ја одлуката одново. Активните причини се на GET codelists/reject-reasons — кодната листа се менува, па не ја зафиксирај во својот код. | Decision cannot be read as submitted. |
| 400 | Телото на повикот кон sandbox/inbound не е употребливо — недостасува задолжително поле, или pdfBase64 не е исправен base64. Единственото задолжително поле е documentNumber; сето друго има стандардна вредност. | Прочитај во detail што фали и прати го барањето одново. Оваа шифра постои само на sandbox серверот — таму каде постои и самата адреса. | The request body is not usable. |
EARH-3xxx — кај интеграторот — идентификаторот или состојбата
| Шифра | HTTP | Што значи | Што да направиш | Текст од API-то |
|---|---|---|---|---|
| 404 | Со тој идентификатор нема документ кај твојот tenant. Или идентификаторот е погрешен, или документот припаѓа на друг tenant. | Провери го идентификаторот од одговорот при праќањето. Не барај го документот по друг податок — тука се работи само по идентификаторот што сме го вратиле. | Document not found. |
| 404 | Документот постои, но не и во бараниот формат. Некои формати настануваат дури по одреден чекор од обработката. | Провери во кој статус е документот и побарај формат што постои за него. Ако форматот се очекува подоцна, почекај го статусот по кој настанува и повикај одново. | This format does not exist for the document. |
| 409 | Документот е во состојба од која сторнирањето не е дозволено — обработката отишла подалеку од точката до која може да се повлече. | Провери го статусот на документот. Ако сторнирањето е сепак потребно, тоа се решава по деловен пат со примачот, не преку овој повик. | Current status does not allow cancellation. |
| 409 | Документот е веќе сторниран — најчесто затоа што истиот повик е испратен двапати. | Ништо не треба да се прави. Состојбата е таа што си ја сакал; третирај го овој одговор како потврда, не како неуспех. | Document is already cancelled. |
| 400 | Бараната големина на страница е поголема од дозволената. Дозволената највисока вредност е напишана во одговорот. | Намали ја големината на страница под таа вредност и повикај одново, па земи ги останатите записи со следните страници. | Requested page size exceeds the allowed maximum. |
| 409 | Состојбата на документот не дозволува одлука: рокот истекол и УЈП го прифатил документот сам, одлуката е веќе потврдена, или во моментот се пријавува. Полето detail кажува кој од трите случаи е. | Повторувањето нема да помогне — состојбата се сменила. Прочитај го документот и види што стои таму. Ако рокот истекол, прифаќањето е веќе направено без тебе; читај го decisionDeadline пред да одлучуваш, не по одбиениот повик. | Current state does not allow a decision. |
EARH-4xxx — ни кај едниот ни кај другиот — исходот на обработката
| Шифра | HTTP | Што значи | Што да направиш | Текст од API-то |
|---|---|---|---|---|
| — | Документот не помина проверка пред поднесување. Оваа шифра не доаѓа како одбиено барање — праќањето поминало уредно, а шифрата се појавува подоцна кај самиот документ, во полето failureCode. | Прочитај го придружниот опис кај документот, поправи го тоа што е пријавено и прати нов документ со нова ознака за идемпотентност. | The document failed pre-submission validation. |
| — | УЈП го одби документот. Оваа шифра не доаѓа како одбиено барање — се појавува подоцна кај самиот документ, во полето failureCode, а шифрата на УЈП стои во блокот ujp. | Прочитај ја шифрата и описот од блокот ujp — таму е вистинската причина. Поправи го документот според неа и прати нов документ со нова ознака за идемпотентност. | The document was rejected by UJP. See the ujp block for their code. |
| — | Примачот го одби документот. Оваа шифра не доаѓа како одбиено барање — се појавува подоцна кај самиот документ, во полето failureCode. | Причината е кај примачот, не кај техниката. Разјасни ја со него и, ако е потребно, прати исправен документ со нова ознака за идемпотентност. | The recipient rejected the document. |
| — | Обработката застанала на технички неуспех — не на проверка на содржината. Оваа шифра не доаѓа како одбиено барање; се појавува подоцна кај самиот документ, во полето failureCode. ⛔ Не значи секогаш дека причината е на наша страна: ако чекорот што паднал е ConvertFormat, документот не можел да се конвертира и причината е во твоето тело — најчесто недостасува дел од структурата (на пример нема ниту една cac:InvoiceLine). ⚠️ Податоците за издавачот НЕ се такви: ЕДБ, ДДВ број и адреса на продавачот се пополнуваат од твојата организација, па нивното отсуство не е причина за оваа шифра. | Не праќај го документот одново веднаш. Прво погледни кој чекор паднал — во полето failedStep, во екранот на документот или преку историјата: ако е ConvertFormat, поправи го телото (провери дали носи ставки, износи и трите задолжителни патеки од страницата Формати). Ако падот е во друг чекор, обрати ни се со идентификаторот на документот. | A technical error occurred during processing or delivery. |
| — | Примачот не може да се разреши ниту да се заведе. ⛔ Од 13.09.2026 ова е редок исход: примач што не е заведен партнер се ЗАВЕДУВА од самиот документ — од името, ЕДБ-то и адресата што ги носи — па обработката продолжува. Шифрата останува за случај кога ни тоа не е можно: ЕДБ во неисправен облик што приемот го пропуштил, или партнер што е избришан во организацијата (избришан запис не се враќа во живот автоматски). Се појавува кај самиот документ, во полето failureCode, не како одбиено барање. | Погледни го validationErrors — тој го носи EARH-5020 со конкретната причина. Провери го ЕДБ-то на примачот во телото; ако партнерот бил избришан во организацијата, врати го или заведи го одново (Партнери во веб делот), па прати нов документ со нова ознака за идемпотентност. | The recipient could not be resolved. |
| — | Одлуката е запишана кај нас, но УЈП не ја прифати. Оваа шифра не доаѓа како одбиено барање — стои во успешниот одговор на POST decision, во полето failureCode. | Најчестата причина е причина за одбивање што УЈП повеќе не ја признава. Повлечи ги активните од GET codelists/reject-reasons и прати исправена одлука — таа ја заменува претходната, додека рокот сè уште трае. | The tax authority did not accept the decision. |
EARH-5xxx — кај интеграторот — поединечно поле во УЈП пораката
| Шифра | HTTP | Што значи | Што да направиш | Текст од API-то |
|---|---|---|---|---|
| — | Задолжително поле недостасува или е празно во составената УЈП порака. | Погледни го path на записот за да го најдеш полето, пополни го во својот документ и прати нов со нова ознака за идемпотентност. | A required field is missing or empty. |
| — | Вредноста на полето е подолга од должината што УЈП ја дозволува. | Скрати ја вредноста на полето што го именува path и прати нов документ со нова ознака за идемпотентност. | The value is longer than allowed. |
| — | Вредноста на полето е пократка од најмалата дозволена должина. | Дополни ја вредноста на полето што го именува path и прати нов документ со нова ознака за идемпотентност. | The value is shorter than required. |
| — | Вредноста не одговара на бараниот формат — најчесто датум, ЕДБ или шифра со пропишан облик. | Провери го обликот на полето што го именува path и прати нов документ со нова ознака за идемпотентност. | The value does not match the required format. |
| — | Низата што ја именува path е празна, а мора да носи барем една ставка — типично ставките на фактурата. | Додај барем една ставка и прати нов документ со нова ознака за идемпотентност. | The list must carry at least one item. |
| — | Пораката што ја составуваме за УЈП не е исправен JSON. Тоа е грешка кај нас, не во документот што си го пратил. | Повторувањето нема да помогне. Извести нѐ, со docUid на документот и со времето — по нив го наоѓаме точниот случај. | The composed UJP message is not valid JSON. This is a fault on our side, not in your request. |
| — | Полето е задолжително кога другата страна е странско лице, а во овој документ недостасува. | Пополни го полето што го именува path и прати нов документ со нова ознака за идемпотентност. | The field is required when the party is foreign. |
| — | Полето е задолжително кога другата страна е домашно лице, а во овој документ недостасува. | Пополни го полето што го именува path и прати нов документ со нова ознака за идемпотентност. | The field is required when the party is a resident. |
| — | Од група полиња барем едно мора да е пополнето, а во овој документ ниту едно не е. | Пополни едно од полињата на групата што ја именува path и прати нов документ со нова ознака за идемпотентност. | At least one field of the group must be filled in. |
| — | Полето е задолжително кога продавачот е ДДВ обврзник, а во овој документ недостасува. | Пополни го полето што го именува path и прати нов документ со нова ознака за идемпотентност. | The field is required when the seller is registered for VAT. |
| — | Референцата кон поврзан документ е нецелосна — таа мора да ги носи сите четири свои полиња. | Дополни ја референцата што ја именува path и прати нов документ со нова ознака за идемпотентност. | A reference to a related document must carry all four of its fields. |
| — | Збировите на документот не се совпаѓаат во дозволеното отстапување при заокружување. | Пресметај ги збировите одново и прати нов документ со нова ознака за идемпотентност. | The totals do not add up within the allowed rounding tolerance. |
| — | Примачот не е заведен партнер, и не можел да се заведе од документот. ⛔ Оваа шифра се појавува во validationErrors кај исход EARH-4005, не кај EARH-4001: не е правило од проверката пред поднесување, туку причината што ја запишува чекорот за разрешување на примачот. ⚠️ Од 13.09.2026 непознат примач се заведува автоматски, па шифрата останува само за ЕДБ што не поминува проверка на облик и за партнер што е избришан во организацијата. | Провери го ЕДБ-то на примачот во телото. Ако партнерот бил избришан, врати го или заведи го одново во организацијата, и прати нов документ со нова ознака за идемпотентност. | The recipient is not registered as a partner in this organization. |
EARH-9xxx — кај нас
| Шифра | HTTP | Што значи | Што да направиш | Текст од API-то |
|---|---|---|---|---|
| 500 | Непредвидена грешка на наша страна. Барањето што си го пратил не е причината. Одговорот носи идентификатор на настанот (eventId). | Обиди се одново по кратко време со истата ознака за идемпотентност. Ако се повтори, обрати ни се и наведи го eventId — по него го наоѓаме точниот настан. | Unexpected error. |
| 409 | Праќањето на документи преку API не е овозможено за овој tenant. Клучот и документот се исправни — недостасува одобрувањето на самата насока. | Обрати ни се да ја овозможиме излезната насока за твојот tenant. Повторување на повикот нема да го промени исходот додека тоа не се направи. | Outbound delivery via API is not enabled for this tenant. |
| 409 | Одлуката не може да се предаде на УЈП поради состојба на НАШАТА страна — документот нема идентификатор кај УЈП, потписникот не е поставен, или адресата на УЈП не е разрешена. Тоа не е грешка во твоето барање. | Повторувањето нема да помогне и нема што да смениш во повикот. Извести нѐ, со идентификаторот на документот и со времето на повикот. | The decision cannot be reported to the tax authority. |
| 409 | Документот постои и записот тврди дека содржината е зачувана, но неа ја нема — ниту локално ниту во облак. ⛔ Тоа НЕ е истото што EARH-3002: таа шифра значи дека документот не пристигнал во тој облик, што е уредна состојба. Оваа значи дека обликот постоел и содржината е загубена. | Повторувањето нема да помогне и нема што да смениш во повикот. Извести нѐ, со идентификаторот на документот, бараниот формат и времето на повикот. Сите останати податоци за документот — статус, износи, историја — и понатаму се читаат нормално. | The stored content of this document is not retrievable. |