Як правильно читати коди помилок KSeF у Польщі?

Кожне повідомлення шлюзу KSeF містить три шари: статус HTTP, exceptionCode та статус фактури. Правильне розшифрування цих параметрів дозволяє швидко визначити, чи проблема є технічною помилкою валідації XML, чи потребує залучення бухгалтера.

8 хв читання 226 переглядів
Як правильно читати коди помилок KSeF у Польщі?

Шлюз KSeF (Krajowy System e-Faktur — польська національна система е-фактур) відповідає номером і одним реченням. А ви в ту саму хвилину маєте обрати одне з трьох: виправити XML, повторити запит або передати справу бухгалтеру. Три різні рішення, три різні витрати, три різні терміни.

За чинним законом штрафи за ст. 106ni закону про VAT діють з 1 січня 2027 року. 16 вересня 2026 року Міністерство фінансів оголосило про їх перенесення на 1 січня 2028 року — це законопроєкт, ще не ухвалений, і він переносить лише штрафи, а не сам обовʼязок працювати в KSeF. Фактура, яка не потрапила до системи, перестає бути технічною проблемою і стає фінансовим ризиком. Для українського бізнесу в Польщі є ще один шар складності: більшість повідомлень шлюзу існує лише польською, і саме через це їх часто читають неправильно.

Ця стаття — мапа. Вона показує, з чого складається відповідь KSeF, що означає кожна група кодів, які коди можна просто повторити, і де закінчується робота програміста та починається робота бухгалтера. Повний перелік кодів публікує Міністерство фінансів у документації API; тут ми розбираємо ті, що трапляються найчастіше.

Повідомлення KSeF має три шари, а не один

Номер помилки без контексту марний. Той самий 21405 сьогодні означає помилку в параметрі запиту, а завтра — неправильно змаплене поле в обліковій системі. Тому кожну відповідь читають на трьох рівнях:

  1. Статус HTTP — чи шлюз узагалі прийняв запит.

  2. exceptionCode і exceptionDescription — конкретна причина з боку KSeF.

  3. Статус фактури або сесії — чи документ уже отримав номер KSeF, чи його в системі ще немає.

Лише разом вони відповідають на питання, чия це проблема. Перші два шари — це інтеграція. Третій — бухгалтерія, бо саме там вирішують, чи потрібна коригувальна фактура.

Ще два ідентифікатори варто логувати завжди: referenceNumber операції та traceId відповіді. Без них звернення до Ministerstwo Finansów або до постачальника ПЗ — це розповідь, а не звернення.

Мапа груп кодів: що каже початок номера

Нумерація KSeF 2.0 не випадкова. Перші цифри вказують на підсистему, яка відхилила запит, — цього достатньо, щоб за кілька секунд віддати справу правильній людині.

ГрупаСфераХто виправляє
9xxxпідпис і авторизаційний документінтегратор
211xxавтентифікація, сесії, отримання фактур, експортінтегратор
212xxпакетна відправка та її частиниінтегратор
213xxавторизація та токени доступуадміністратор у фірмі
214xxвалідація документа та вхідних данихінтегратор або той, хто виставляє фактуру
250xxсертифікати KSeFадміністратор у фірмі
260xxтокени KSeFадміністратор у фірмі

Практичне правило: усе, що нижче за 214xx, — це зазвичай конфігурація, а не фактура. Правити документ у відповідь на помилку автентифікації — найпоширеніший спосіб змарнувати годину.

Статуси HTTP: перше розгалуження

СтатусЗначенняДія
400некоректний запит або помилка валідації вхідних данихчитайте exceptionCode і список errors у відповіді
401немає коректної автентифікаціїтокен, сертифікат, чинність сесії
403бракує повноважень або недозволений контекстконтекст NIP (польський податковий номер) і обсяг повноважень
410операція втратила чинність і вже недоступнапочніть процес спочатку
415тип операції недопустимий у цьому режимі відправленнязмініть режим (приклад нижче)
429перевищено ліміт запитів до APIRetry-After, черга, backoff — фактуру не чіпайте
5xxзбій на боці інфраструктури KSeFзбережіть traceId, повторіть за процедурою retry

Зверніть увагу: числа 410 і 415 зустрічаються також як статуси обробки фактури в сесії, а не як код HTTP відповіді — приклад нижче стосується саме такого статусу. Найдорожча помилка інтерпретації в цій таблиці — 429. Його легко сприйняти як відмову в прийнятті документа й почати «виправляти» коректну фактуру. Ліміти описані в документації CIRF/MF.

Найчастіші коди та що з ними робити

Підпис і авторизаційний документ (9xxx)

КодПовідомленняДія
9101Некоректний документперевірте документ, використаний у процесі підпису
9102Немає підписуобовʼязковий підпис не додано
9103Перевищено кількість дозволених підписівперевірте кількість підписів для цього типу документа

Сесії, фактури та експорт (211xx)

КодПовідомленняДія
21111Некоректний авторизаційний challengechallenge, шифрування та час в автентифікації
21115Некоректний сертифікатчинність і відповідність вимогам KSeF
21117Некоректний ідентифікатор субʼєкта для типу контекстуNIP не відповідає обраному типу контексту
21155Перевищено кількість фактур у сесіїзакрийте сесію та відкрийте нову
21157Некоректний розмір частини пакетаоголошений розмір ≠ фактичний файл
21161Перевищено кількість частин пакетаперезберіть пакет
21164Фактури із зазначеним ідентифікатором не існуєномер KSeF, контекст субʼєкта, права на завантаження
21165Фактура ще недоступнаце не помилка — зачекайте й повторіть запит
21166Технічна корекція недоступнанайімовірніше, її вже оброблено
21167Статус фактури не дозволяє технічної корекціїсправа для бухгалтерії, не для інтегратора
21173Немає сесії із зазначеним referenceNumberномер або середовище (тест чи прод)
21175Результату запиту не існуєреференс експорту або вичерпано час доступності результату
21178UPO за вказаними критеріями не знайденоUPO (офіційне підтвердження отримання) зʼявляється після закриття сесії
21180Статус сесії не дозволяє операціїсесію закрито або скасовано
21181Некоректний запит на експорт фактуркритерії та контекст експорту
21182Досягнуто ліміту одночасних експортівзменште кількість паралельних експортів
21183Діапазон фільтрації поза доступним обсягом данихдіапазон і тип дати

Пакетна відправка (212xx)

КодПовідомленняДія
21205Пакет не може бути порожнімнадіслано не всі оголошені частини
21208Перевищено час очікування upload або finishсесію могло бути скасовано — повторіть процес
21217Некоректне кодування символівUTF-8 без BOM

Автентифікація та авторизація (213xx)

КодПовідомленняДія
21301Немає авторизаціїтокен анульовано або автентифікацію не завершено
21304Немає автентифікаціїоперації з таким referenceNumber у цьому середовищі не існує
21308Спроба скористатися авторизаційними методами померлої особипотрібно змінити спосіб автентифікації субʼєкта

Валідація документа та даних (214xx)

КодПовідомленняДія
21401Документ не відповідає схемі XSDкласична «помилка фактури»: структура FA(3), обовʼязкові поля, кодування
21402Некоректний розмір файлуоголошений розмір ≠ фактична довжина вмісту
21403Некоректний хеш файлуспосіб обчислення хешу
21405Помилка валідації вхідних данихчитайте деталі, а не номер — сам код нічого не каже
21406Конфлікт підпису й типу автентифікаціїметод автентифікації проти типу сертифіката
21418Некоректний формат токена продовженняне редагуйте токен пагінації вручну
21470Невідомий або відкликаний ідентифікатор ключазавантажте актуальний публічний ключ для свого середовища

Сертифікати та токени (250xx, 260xx)

КодПовідомленняДія
25001Неможливо отримати дані для CSR цим способом автентифікаціїзмініть спосіб автентифікації
25002Неможливо подати сертифікаційну заявку цим способомте саме
25003Дані в CSR не збігаються з автентифікаційним векторомдані субʼєкта в CSR
25004Некоректний формат або підпис CSRформат заявки та алгоритм підпису
25005Сертифікаційної заявки з таким номером не існуєномер референції та середовище
25006Досягнуто ліміту поданих заявокупорядкуйте заявки
25007Досягнуто ліміту наявних сертифікатіванулюйте невикористовувані
25010Некоректний тип або довжина ключавимоги з документації сертифікатів
25011Некоректний алгоритм підпису CSRалгоритм і хеш-функція
26001Не можна надати токену повноважень, яких не має субʼєктспершу повноваження субʼєкта
26002Не можна згенерувати токен для поточного типу контекстутокен лише в дозволеному контексті

Каталог KSeF 2.0 ширший за цей перелік. Джерелом правди залишаються документація API на api.ksef.mf.gov.pl і посібник для інтеграторів CIRF/MF.

Той самий документ, дві різні відповіді: приклад із нашого впровадження

10 вересня 2026 року на тестовому середовищі Міністерства ми перевіряли фактури із вкладенням. Та сама фактура, надіслана інтерактивною сесією, поверталася зі статусом обробки 415 і повідомленням про неможливість надіслати фактуру з вкладенням. Та сама фактура в пакетній сесії — прийнята. І та сама інтерактивна сесія приймала цей документ без вузла вкладення.

Висновок незручний, але важливий: частина повідомлень не каже «документ поганий», вона каже «не цим каналом». Той, хто почав би з правок у XML, правив би коректний файл. Різницю між режимами описано в документації пакетної сесії.

Помилка не завжди означає, що фактури немає в системі

Найдорожчі помилки стаються по той бік межі — коли фактура вже має номер KSeF.

Прийняття документа шлюзом означає відповідність логічній структурі, і не більше. KSeF не перевіряє правильності розрахунку VAT, обґрунтованості операції чи арифметики. Фактура з неправильною ставкою пройде технічну валідацію без жодного повідомлення.

Практичний наслідок: документ, який отримав номер KSeF, не можна «відкликати» з вашої системи продажу. Залишається коригувальна фактура. Технічна корекція стосується лише фактури, виставленої в режимі offline, яку KSeF відхилив, — документ з номером KSeF нею не виправити. Це вже бухгалтерське рішення, а не інтеграційне, і саме тому третій шар повідомлення не можна пропускати.

Окрема пастка — дублікати. KSeF розпізнає їх за комбінацією даних продавця, типу фактури та номера документа й утримує унікальність роками. Повторне надсилання «про всяк випадок» не є нейтральною дією.

Чек-лист: що зафіксувати за кожної помилки

  1. Статус HTTP відповіді.

  2. exceptionCode і повний текст exceptionDescription.

  3. referenceNumber операції (сесії, заявки, експорту).

  4. traceId з відповіді.

  5. Середовище: тестове чи продакшн.

  6. Статус фактури: чи надано номер KSeF.

  7. Позначку часу в UTC — при лімітах і сесіях вирішує секунда.

Ці сім полів перетворюють «у нас не працює» на звернення, яке можна розглянути. Порядок звернень описано на сторінці підтримки для інтеграторів.

Підсумок

Коди помилок KSeF виглядають як суто технічна тема, але вирішують бухгалтерські питання: чи фактура існує, чи дотримано термін, чи потрібна корекція. Трьох шарів відповіді, мапи груп кодів і семи полів чек-листа достатньо, щоб перестати вгадувати.

Biurko перекладає 28 найпоширеніших кодів шлюзу одним зрозумілим реченням і однією підказаною дією, решту показує текстом Міністерства фінансів, а надсилання після тимчасових збоїв повторює автоматично (до трьох спроб, а після 429 чекає час, який назвав шлюз). Спробуйте Biurko — кожна нова фірма отримує 14 днів тарифу TEAM без картки — і подивіться, як виглядає відправлення до KSeF, у якому не треба читати номери.

FAQ

Що означає помилка 21401 у KSeF? Документ не відповідає схемі XSD. На практиці це найчастіше структура FA(3), незаповнене обовʼязкове поле або кодування, відмінне від UTF-8 без BOM. Сам номер не вказує поле — його вказує повідомлення валідатора, повернуте разом із кодом.

Чи означає помилка 429, що фактуру відхилено? Ні. Це перевищення ліміту запитів до API, і стосується воно лише інтеграції. З фактурою все гаразд. Рішення — заголовок Retry-After, черга запитів і експоненційний backoff, а не зміни в документі.

Якщо KSeF прийняв фактуру, чи означає це, що вона правильна? Ні. Система перевіряє відповідність логічній структурі та технічну коректність файлу. Вона не перевіряє розрахунку VAT чи арифметики. Фактура зі змістовною помилкою може отримати номер KSeF і потребувати корекції пізніше.

Де офіційний перелік кодів помилок KSeF? Джерело правди — контракт OpenAPI і документація API 2.0 на api.ksef.mf.gov.pl, а також репозиторій CIRF/MF із посібником для інтеграторів і changelog, у якому Міністерство публікує нові коди.

Що робити, якщо фактура вже має номер KSeF, але містить помилку? Видалити або перезаписати її не можна. Шлях — коригувальна фактура; технічна корекція стосується лише фактури, виставленої в режимі offline, яку KSeF відхилив.

Теги

#KSeF
Поділитися

Попередня стаття

Скільки коштує бухгалтер для JDG у Польщі та що обрати?

Наступна стаття

Як мінімальна зарплата 2027 року змінить ваш ZUS у Польщі?

Будь у курсі

Отримуй сповіщення про нові статті — без розсилки новин, відписатися можна будь-коли.

Ми поважаємо твою приватність. Відписатися можна будь-коли.

Файли cookies

Ми використовуємо лише необхідні файли cookies. Статистику відвідувань ведемо на сервері, нічого не зберігаючи у вашому пристрої. Політика сайту