Translation. Original: api-changelog.md
Зміни в API 2.0
Версія 2.3.0
Відправка заявки на сертифікацію (POST /certificates/enrollments)
Збільшено ліміти для ідентифікаторів PESEL та fingerprint:- кількість заявок на сертифікат KSeF: з 6 до 12,
- кількість активних сертифікатів KSeF: з 2 до 6.
Відправка рахунків
- Посилено валідацію вхідного XML: пролог є опціональним, однак якщо він з'являється і вказує кодування, відмінне від UTF-8, документ буде відхилено (рахунок повинен бути збережений в кодуванні UTF-8).
- Уточнено значення поля
Valueдля схемиFA_RR (1) 1-1E: замістьRRнеобхідно передаватиFA_RR(відповідно до значенняTKodFormularzaв XSD).
Отримання рахунків
- Розширено підтримку
formTypeдля рахунківRRна значенняFA_RR(узгоджено з механізмом відправки рахунків). На середовищі TEST приймаютьсяRR(до 30.03) таFA_RR, натомість на PRD прийматиметься виключноFA_RR. - Дозволено пошук рахунків за від'ємними сумами у фільтрі
amount- дозволено від'ємні значення вamount.fromіamount.to.
- Розширено підтримку
Експорт пакету рахунків (POST
/invoices/exports)- Розширено модель запиту на властивість boolean
onlyMetadata(за замовчуванням:false):onlyMetadata=false - без змін: експорт містить рахунки та файл_metadata.json,onlyMetadata=true - експорт містить виключно файл_metadata.json, що дозволяє швидші та легші експорти в сценаріях, що вимагають лише метаданих.
- Розширено модель запиту на властивість boolean
OpenAPI
- Розширено
ForbiddenProblemDetails.reasonCodeна значенняcontext-type-not-allowed("Операція недоступна для автентифікованого типу контексту"). - Виправлено визначення
securitySchemes.Bearer- встановленоscheme:bearer(з малої літери), відповідно до специфікації. - Незначні оновлення описів та прикладів.
- Розширено
Версія 2.2.1
- Надсилання рахунків-фактур
Додано нову версію (1-1E) схемиFA_RR (1).
СхемаFA_RR (1) 1-0Eбуде підтримуватися на середовищі TEST до 23.04. СхемаFA_RR (1) 1-1Eбуде обов'язковою на середовищі PRD з 01.04.
Версія 2.2.0
Дозволи
Додано новий endpoint (POST/permissions/query/entities/grants), що дозволяє отримати список дозволів для обробки рахунків-фактур у поточному контексті (дозволи, що повертаються:InvoiceWrite,InvoiceRead- надані іншим суб'єктом).Аутентифікація
Розширено відповідь POST/auth/challengeвластивістюclientIp, що повертає IP-адресу клієнта, зареєстровану KSeF. Значення може бути безпосередньо використане для побудовиAuthorizationPolicyв наступних кроках аутентифікації.OpenAPI
- Розширено відповіді
401 Unauthorizedі403 Forbiddenстандартизованим форматом помилки "Problem Details" (application/problem+json). Додано схемиUnauthorizedProblemDetailsтаForbiddenProblemDetails.ForbiddenProblemDetailsнадає, зокрема, властивістьreasonCodeта опціональний об'єктsecurityдля додаткової інформації. - Відновлено (стосується лише специфікації OpenAPI)
additionalPropertiesдля словникових полів:InvoiceStatusInfo.extensionsтаPartUploadRequest.headers. - Незначні оновлення описів.
- Розширено відповіді
Експорт пакету рахунків-фактур (POST
/invoices/exports).
Виправлено генерування файлу_metadata.jsonу пакеті експорту - при великій кількості рахунків-фактур файл міг бути раніше обрізаний (некоректний JSON).
Версія 2.1.2
Надсилання рахунків-фактур
Додано підтримку рахунків-фактур RR (схема_RR(1)_v1-0E).Генерування нового токена (POST
/tokens)
У моделі запиту (GenerateTokenRequest) розширено властивістьpermissions(enumTokenPermissionType) значеннямIntrospection, що дозволяє надати цей дозвіл при генеруванні токена.Експорт пакету рахунків-фактур (POST
/invoices/exports). Отримання списку метаданих рахунків-фактур (POST/invoices/query/metadata)
Виправлено інтерпретацію параметрівdateRange.from/dateRange.to, що передаються без зсуву. Значення без часової зони тепер однозначно інтерпретуються згідно з документацією (місцевий час Europe/Warsaw).OpenAPI
ВидаленоadditionalProperties:falseу вибраних моделях. Зміна, що впорядковує специфікацію та робить контракт більш гнучким - допускає можливість появи додаткових властивостей у запитах або відповідях (наприклад, у рамках розширень). Додавання нової властивості не розглядається як порушення контракту; клієнти API повинні ігнорувати невідомі властивості.
Версія 2.1.1
- Аутентифікація
- Отримання статусу аутентифікації (GET
/auth/{referenceNumber}) та Отримання списку активних сесій (GET/auth/sessions)
Доповнено визначенняauthenticationMethodInfo- позначено властивостіcategory,codeтаdisplayNameякrequiredу моделі відповіді. - Аутентифікація з використанням підпису XAdES (POST
/auth/xades-signature)
Додано можливість раннього увімкнення нових вимог валідації XAdES на середовищах DEMO і PRD через заголовок:X-KSeF-Feature:enforce-xades-compliance.
- Отримання статусу аутентифікації (GET
Версія 2.1.0
Аутентифікація
Додано інтеграцію з Національним Вузлом (login.gov.pl). Endpoint, що використовується для цієї інтеграції, не є публічно доступним (метод аутентифікації призначений виключно для державних додатків).
Отримання статусу аутентифікації (GET
/auth/{referenceNumber}) та Отримання списку активних сесій (GET/auth/sessions)- Позначено у моделі відповіді властивість
authenticationMethodякdeprecated. Планується вилучення:2026-11-16. Для збереження сумісності контракту в перехідний період значенняTrustedProfileохоплює як "Довірений профіль", так і аутентифікації, що реалізуються через Національний Вузол. - Додано нову властивість
authenticationMethodInfoяк гнучкий опис методу аутентифікації:category- категорія методу аутентифікації (enum:XadesSignature,NationalNode,Token,Other),code- код методу аутентифікації (string),displayName- назва методу аутентифікації для відображення користувачу (string).
- Розширено можливі значення поля details для статусу
460("Аутентифікація завершена невдачею через помилку сертифіката"): "Сертифікат призупинений".
- Позначено у моделі відповіді властивість
Аутентифікація з використанням підпису XAdES (POST
/auth/xades-signature)
Уніфіковано та посилено валідацію підпису XAdES в процесі аутентифікації, щоб приймалися виключно підписи, що відповідають вимогам профілів XAdES.
Нові вимоги вже діють на середовищі TEST. На середовищах DEMO і PRD почнуть діяти 16 березня 2026 (рекомендуємо перевірити інтеграцію на TEST до цієї дати).
Тестові дані
Додано нові endpoints:- POST
/testdata/context/block- "Блокує можливість аутентифікації для зазначеного контексту. Аутентифікація завершиться помилкою 480.", - POST
/testdata/context/unblock- розблоковує можливість аутентифікації для поточного контексту.
- POST
OpenAPI
Незначні оновлення описів.
Версія 2.0.1
Дозволи
- Отримання списку власних дозволів (POST
/permissions/query/personal/grants).- Виправлено логіку повернення списку "Мої дозволи" для власника контексту - в результатах повертаються також суб'єктні дозволи на виставлення та перегляд рахунків-фактур (
InvoiceWrite,InvoiceRead) надані без права подальшої передачіcanDelegate = false. Раніше список повертав лише ті з правом на подальшу передачу. - Додано опис для значення
InternalIdуPersonalPermissionsContextIdentifierType; - Оновлено обмеження довжини
PersonalPermissionsContextIdentifier.value(maxLengthз 10 на 16).
- Виправлено логіку повернення списку "Мої дозволи" для власника контексту - в результатах повертаються також суб'єктні дозволи на виставлення та перегляд рахунків-фактур (
- Виправлено приклади в документації OpenAPI для endpoints дозволів.
- Отримання списку власних дозволів (POST
Отримання рахунків-фактур
Уточнено валідаціюdateRangeвInvoiceQueryFilters: діапазон 3 місяці вважається правильним, якщо він міститься в трьох місяцях в UTC або в польському часі.Надсилання рахунків-фактур
- Валідація номера NIP
Додано перевірку контрольної суми NIP для:Podmiot1,Podmiot2,Podmiot3таPodmiotUpowazniony(якщо присутній) - стосується лише виробничого середовища. - Валідація NIP у внутрішньому ідентифікаторі
Додано перевірку контрольної суми NIP вInternalIdдляPodmiot3(якщо ідентифікатор присутній) - стосується лише виробничого середовища. - Оновлення документації.
- Валідація номера NIP
OpenAPI
Незначні оновлення описів.
Версія 2.0.0
UPO
Згідно з оголошенням з RC6.0, з2025-12-22за замовчуванням повертається версія UPO v4-3.Статус сесії (GET
/sessions/{referenceNumber})- Розширено модель відповіді властивостями
dateCreated("Дата створення сесії") таdateUpdated("Дата останньої активності в рамках сесії").
- Розширено модель відповіді властивостями
Закриття пакетної сесії (POST
/sessions/batch/{referenceNumber}/close)- Додано код помилки
21208("Час очікування на запити upload або finish був перевищений").
- Додано код помилки
Отримання рахунку-фактури/UPO
- Додано заголовок
x-ms-meta-hash(хешSHA-256,Base64) у відповідях200для endpoints:- GET
/invoices/ksef/{ksefNumber}, - GET
/sessions/{referenceNumber}/invoices/ksef/{ksefNumber}/upo, - GET
/sessions/{referenceNumber}/invoices/{invoiceReferenceNumber}/upo, - GET
/sessions/{referenceNumber}/upo/{upoReferenceNumber}.
- GET
- Додано заголовок
Отримання статусу аутентифікації (GET
/auth/{referenceNumber})- Доповнено документацію HTTP 400 (Bad Request) кодом помилки
21304("Відсутність аутентифікації") - операція аутентифікації з референсним номером {referenceNumber} не була знайдена. - Розширено статус
450("Аутентифікація завершена невдачею через неправильний токен") додатковою причиною: "Неправильний авторизаційний виклик".
- Доповнено документацію HTTP 400 (Bad Request) кодом помилки
Отримання токенів доступу (POST
/auth/token/redeem)
Доповнено документацію HTTP 400 (Bad Request) кодами помилок:21301- "Відсутність авторизації":- Токени для операції {
referenceNumber} вже були отримані, - Статус аутентифікації ({
operation.Status}) не дозволяє отримання токенів, - Токен KSeF був скасований.
- Токени для операції {
21304- "Відсутність аутентифікації" - Операція аутентифікації {referenceNumber} не була знайдена,21308- "Спроба використання авторизаційних методів померлої особи".
Оновлення токена доступу (POST
/auth/token/refresh)
Доповнено документацію HTTP 400 (Bad Request) кодами помилок:21301- "Відсутність авторизації":- Статус аутентифікації ({
operation.Status}) не дозволяє отримання токенів, - Токен KSeF був скасований.
- Статус аутентифікації ({
21304- "Відсутність аутентифікації" - Операція аутентифікації {referenceNumber} не була знайдена,21308- "Спроба використання авторизаційних методів померлої особи".
Інтерактивне надсилання (POST
/sessions/online/{referenceNumber}/invoices)
Доповнено документацію кодів помилок:21402"Неправильний розмір файлу" - довжина контенту не збігається з розміром файлу,21403„Неправильний хеш файлу" - хеш контенту не збігається з хешем файлу.
Експорт пакету рахунків-фактур (POST
/invoices/exports). Отримання списку метаданих рахунків-фактур (POST/invoices/query/metadata)
Зменшено максимально дозволений діапазонdateRangeз 2 років до 3 місяців.Дозволи
- Додано атрибут
requiredдля властивостіsubjectDetails("Дані суб'єкта, якому надаються дозволи") у всіх endpoints надання дозволів (/permissions/.../grants). - Додано атрибут
requiredдля властивостіeuEntityDetails("Дані унійного суб'єкта, в контексті якого надаються дозволи") в endpoint POST/permissions/eu-entities/administration/grants("Надання дозволів адміністратора унійного суб'єкта"). - Додано значення
PersonByFingerprintWithIdentifier("Фізична особа, що користується сертифікатом, що не містить ідентифікатор NIP або PESEL, але має NIP або PESEL") до enumEuEntityPermissionSubjectDetailsTypeв endpoint POST/permissions/eu-entities/administration/grants("Надання дозволів адміністратора унійного суб'єкта"). - Змінено тип властивості
subjectEntityDetailsнаPermissionsSubjectEntityByIdentifierDetails("Дані уповноваженого суб'єкта") в моделі відповіді в POST/permissions/query/authorizations/grants("Отримання списку суб'єктних дозволів для обробки рахунків-фактур"). - Змінено тип властивості
subjectEntityDetailsнаPermissionsSubjectEntityByFingerprintDetails("Дані уповноваженого суб'єкта") в моделі відповіді в POST/permissions/query/eu-entities/grants("Отримання списку дозволів адміністраторів або представників унійних суб'єктів, уповноважених на самофактурування"). - Змінено тип властивості
subjectPersonDetailsнаPermissionsSubjectPersonByFingerprintDetails("Дані уповноваженої особи") в моделі відповіді в POST/permissions/query/eu-entities/grants("Отримання списку дозволів адміністраторів або представників унійних суб'єктів, уповноважених на самофактурування"). - Введено валідацію контрольної суми для ідентифікатора
InternalIdв POST/permissions/subunits/grants("Надання дозволів адміністратора підпорядкованого суб'єкта"). - Уточнено описи властивостей.
- Додано атрибут
OpenAPI
- Доповнено документацію відповіді
429заголовком, що повертається,Retry-Afterта тілом відповідіTooManyRequestsResponse. - Уточнено описи властивостей типу
byte- значення передаються як бінарні дані, закодовані у форматіBase64. - Виправлено опечатки в специфікації.
- Доповнено документацію відповіді
Версія 2.0.0 RC6.1
Нова адресація середовищ
Надання нових адрес. Зміни в розділі середовища KSeF API 2.0.Аутентифікація - отримання статусу (GET
/auth/{referenceNumber})
Додано код480- Аутентифікація заблокована: "Підозра інциденту безпеки. Зв'яжіться з Міністерством фінансів через форму звернення."Дозволи
- Розширено правила доступу для операцій сесій (GET/POST
/sessions/...): до списку прийнятих дозволів доданоEnforcementOperations(орган стягнення). - Додано обмеження довжини для властивостей типу string:
minLengthтаmaxLength. - Додано
id(Asc) як другий ключ сортування в метаданихx-sortдля запитів пошуку дозволів. Порядок за замовчуванням:dateCreated(Desc), потімid(Asc) - порядкова зміна, що збільшує детермінованість пагінації. - Додано валідацію властивості
IdDocument.countryв endpoint POST/permissions/persons/grants("Надання фізичним особам дозволів для роботи в KSeF") - вимагається відповідність ISO 3166-1 alpha-2 (наприклад,PL,DE,US). - "Отримання списку дозволів адміністраторів або представників унійних суб'єктів, уповноважених на самофактурування" (POST
/permissions/query/eu-entities/grants):- видалено валідацію pattern (regex) та уточнено опис властивості
EuEntityPermissionsQueryRequest.authorizedFingerprintIdentifier. - уточнено опис властивості
EuEntityPermissionsQueryRequest.vatUeIdentifier.
- видалено валідацію pattern (regex) та уточнено опис властивості
- Розширено правила доступу для операцій сесій (GET/POST
Інтерактивна сесія
Додано нові коди помилок для POST/sessions/online/{referenceNumber}/invoices("Надсилання рахунку-фактури"):21166- Технічне виправлення недоступне.21167- Статус рахунку-фактури не дозволяє технічне виправлення.
Ліміти API
- Збільшено погодинний ліміт для групи
invoiceStatus(отримання статусу рахунку-фактури з сесії) з 720 на 1200 req/h:- GET /sessions/{referenceNumber}/invoices/{invoiceReferenceNumber}.
- Збільшено погодинний ліміт для групи
sessionMisc(ресурси GET/sessions/*) з 720 до 1200 req/h:- GET
/sessions/{referenceNumber}, - GET
/sessions/{referenceNumber}/invoices/ksef/{ksefNumber}/upo, - GET
/sessions/{referenceNumber}/invoices/{invoiceReferenceNumber}/upo, - GET
/sessions/{referenceNumber}/upo/{upoReferenceNumber}.
- GET
- Зменшено погодинний ліміт для групи
batchSession(відкриття/закриття пакетної сесії) з 120 на 60 req/h:- POST
/sessions/batch, - POST
/sessions/batch/{referenceNumber}/close.
- POST
- Збільшено ліміти для endpoint
/invoices/exports/{referenceNumber}("Отримання статусу експорту пакету рахунків-фактур") через додавання нової групиinvoiceExportStatusз параметрами: 10 req/s, 60 req/min, 600 req/h.
- Збільшено погодинний ліміт для групи
Відкриття пакетної сесії (POST
/sessions/batch)
Видалено з моделіBatchFilePartInfoвластивістьfileName(раніше позначену як deprecated; x-removal-date: 2025-12-07).Ініціалізація аутентифікації (POST
/auth/challenge)
Додано властивістьtimestampMs(int64) в моделі відповіді - час генерування challenge в мілісекундах від 1.01.1970 (Unix).Тестові дані
- Уточнено тип властивості
expectedEndDate: format:dateв (POST/testdata/attachment/revoke). - Видалено значення
Tokenз enumSubjectIdentifierTypeв endpoint POST/testdata/limits/subject/certificate. Значення не використовувалося: в KSeF суб'єкт не може бути "токеном" - ідентичність завжди випливає зNIP/PESELабо відбитка пальця сертифіката, який несе ідентичність суб'єкта, що його створив.
- Уточнено тип властивості
OpenAPI
Збільшено максимальне значенняpageSizeз 500 до 1000 для endpoints:- GET
/sessions - GET
/sessions/{referenceNumber}/invoices - GET
/sessions/{referenceNumber}/invoices/failed
- GET
Версія 2.0.0 RC6.0
Ліміти API
- На середовищі TE (тестове) увімкнено і визначено політику лімітів api зі значеннями в 10 разів вищими ніж на PRD; деталі: "Ліміти на середовищах".
- На середовищі TR (DEMO) увімкнено ліміти api зі значеннями ідентичними як на PRD. Значення реплікуються з виробництва; деталі: "Ліміти на середовищах".
- Додано endpoint POST
/testdata/rate-limits/production- встановлює в поточному контексті значення лімітів api відповідно до виробничого профілю. Доступний лише на середовищі TE.
Експорт пакету рахунків-фактур (POST
/invoices/exports). Отримання списку метаданих рахунків-фактур (POST/invoices/query/metadata)- Додано документ High Water Mark (HWM), що описує механізм управління повнотою даних у часі.
- Оновлено Прирістне отримання рахунків-фактур рекомендаціями використання механізму
HWM. - Розширено модель відповіді властивістю
permanentStorageHwmDate(string, date-time, nullable). Стосується виключно запитів зdateType = PermanentStorageі означає точку, нижче якої дані є повними; дляdateType = Issue/Invoicing- null. - Додано властивість
restrictToPermanentStorageHwmDate(boolean, nullable) в об'єктіdateRange, який вмикає механізм High Water Mark (HWM) і обмежує діапазон дат до поточного значенняHWM. Стосується виключно запитів зdateType = PermanentStorage. Застосування параметра значно зменшує дублікати між послідовними експортами і забезпечує узгодженість під час тривалої прирістної синхронізації.
UPO - оновлення XSD до v4-3
Змінено шаблон (
pattern) елементаNumerKSeFDokumentu, щоб допускати також номери KSeF, згенеровані для рахунків-фактур з KSeF 1.0 (36 символів).Додано елемент
TrybWysylki- режим передачі документа до KSeF:OnlineабоOffline.Змінено значення
NazwaStrukturyLogicznejна формат: Schemat_{systemCode}_v{schemaVersion}.xsd (наприклад, Schemat_FA(3)_v1-0E.xsd).Змінено значення
NazwaPodmiotuPrzyjmujacegoна тестових середовищах через додавання суфіксу з назвою середовища:TE: Ministerstwo Finansów - środowisko testowe (TE),TR: Ministerstwo Finansów - środowisko przedprodukcyjne (TR).
PRD: без змін - Ministerstwo Finansów.Зараз за замовчуванням повертається UPO v4-2. Щоб отримати UPO v4-3, потрібно додати заголовок:
X-KSeF-Feature: upo-v4-3при відкритті сесії (online/пакетної).З
2025-12-22версією за замовчуванням буде UPO v4-3.XSD UPO v4-3: schema.
Статус сесії (GET
/sessions/{referenceNumber})
Уточнено опис коду440- Сесія скасована: можливі причини - "Перевищено час надсилання" або "Не надіслано рахунків-фактур".Статус рахунку-фактури (GET
/sessions/{referenceNumber}/invoices/{invoiceReferenceNumber})
Додано типInvoiceStatusInfo(розширюєStatusInfo) полемextensions- об'єкт зі структурованими деталями статусу. Полеdetailsзалишається без змін. Приклад (дублікат рахунку-фактури):json"status": { "code": 440, "description": "Дублікат рахунку-фактури", "details": [ "Дублікат рахунку-фактури. Рахунок-фактура з номером KSeF: 5265877635-20250626-010080DD2B5E-26 вже була правильно надіслана до системи в сесії: 20250626-SO-2F14610000-242991F8C9-B4" ], "extensions": { "originalSessionReferenceNumber": "20250626-SO-2F14610000-242991F8C9-B4", "originalKsefNumber": "5265877635-20250626-010080DD2B5E-26" } }Дозволи
Додано властивістьsubjectDetails- "Дані суб'єкта, якому надаються дозволи" до всіх endpoints надання дозволів (/permissions/.../grants). У RC6.0 поле опціональне; з 2025-12-19 буде обов'язковим.Пошук наданих дозволів (POST
/permissions/query/authorizations/grants)
Розширено правила доступуPefInvoiceWrite.Тестові дані - додатки (POST /testdata/attachment/revoke)
Розширено модель запитуAttachmentPermissionRevokeRequestполемexpectedEndDate(опціональне) - дата відкликання згоди на надсилання рахунків-фактур з додатком.OpenAPI
- Додано відповідь HTTP
429- "Too Many Requests" до всіх endpoints. У властивостіdescriptionцієї відповіді публікується табличне представлення лімітів (req/s,req/min,req/h) та назв групи лімітів, присвоєної endpoint. Механізм і семантика429залишаються відповідними опису в документації лімітів. - До кожного endpoint додано метадані
x-rate-limitsзі значеннями лімітів (req/s,req/min,req/h). - Видалено явні властивості
exclusiveMaximum:falseіexclusiveMinimum:falseз числових визначень (залишено лише minimum/maximum). Порядкова зміна – без впливу на валідацію (в OpenAPI значення за замовчуванням цих властивостей -false). - Додано обмеження довжини для властивостей типу string:
minLength. - Видалено явні налаштування
style:formдля параметрів в in: query. - Змінено порядок значень enum
BuyerIdentifierType(зараз:None,Other,Nip,VatUe). Порядкова зміна - без впливу на роботу. - Виправлено опечатку в описі властивості
KsefNumber. - Уточнено формат властивості
PublicKeyCertificate, що представляє бінарні дані, закодованіBase64, встановлено format:byte. - Внесено незначні мовні та пунктуаційні корективи в поля
description.
- Додано відповідь HTTP
Версія 2.0.0 RC5.7
Відкриття пакетної сесії (POST
/sessions/batch)
Позначено в моделі запитуBatchFilePartInfo.fileNameякdeprecated(планується видалення: 2025-12-05).Статуси асинхронних операцій
Додано статус550- "Операція була скасована системою". Опис: "Обробка була перервана з внутрішніх причин системи. Спробуйте знову."OpenAPI
- Додано обмеження кількості елементів в масиві:
minItems,maxItems. - Додано обмеження довжини для властивостей типу string:
minLengthтаmaxLength. - Оновлено описи властивостей (
invoiceMetadataAuthorizedSubject.role,invoiceMetadataBuyer,invoiceMetadataThirdSubject.role,buyerIdentifier). - Оновлено regex шаблони для
vatUeIdentifier,authorizedFingerprintIdentifier,internalId,nipVatUe,peppolId.
- Додано обмеження кількості елементів в масиві:
Версія 2.0.0 RC5.6
Отримання статусу сесії (GET
/sessions/{referenceNumber})
Додано у відповіді полеUpoPageResponse.downloadUrlExpirationDate- дата та час закінчення строку дії адреси отримання UPO; після цього моментуdownloadUrlвже не активний.Отримання списку метаданих сертифікатів (POST
/certificates/query)
Розширено відповідь (CertificateListItem) властивістюrequestDate- дата подачі сертифікаційної заяви.Отримання списку постачальників послуг Peppol (GET
/peppol/query)- Розширено модель відповіді полем
dateCreated- дата реєстрації постачальника послуг Peppol у системі. - Позначено властивості
dateCreated,id,nameв моделі відповіді як такі, що завжди повертаються. - Визначено схему
PeppolId(string, 9 символів) і застосовано вPeppolProvider.
- Розширено модель відповіді полем
OpenAPI
- Додано метадані
x-sortдо всіх endpoints, що повертають списки. В описах endpoints додано розділ Сортування з порядком за замовчуванням (наприклад, "requestDate (Desc)"). - Додано обмеження довжини для властивостей типу string:
minLengthтаmaxLength. - Уточнено формат властивостей, що представляють бінарні дані, закодовані
Base64: встановлено format:byte(encryptedInvoiceContent,encryptedSymmetricKey,initializationVector,encryptedToken). - Визначено загальну схему
Sha256HashBase64і застосовано її до всіх властивостей, що представляють хешSHA-256вBase64(зокремаinvoiceHash). - Визначено загальну схему
ReferenceNumber(string, довжина 36) і застосовано її до всіх параметрів і властивостей, що представляють референсний номер асинхронної операції (в шляхах, запитах і відповідях). - Визначено загальну схему
Nip(string, 10 символів, regex pattern) і застосовано її до всіх властивостей, що представляють NIP. - Визначено схему
Pesel(string, 11 символів, regex pattern) і застосовано її у властивості, що представляє PESEL. - Визначено загальну схему
KsefNumber(string, 35-36 символів, regex pattern) і застосовано її до всіх властивостей, що представляють номер KSeF. - Визначено схему
Challenge(string, 36 символів) і застосовано вAuthenticationChallengeResponse.challenge. - Визначено загальну схему
PermissionId(string, 36 символів) і застосовано її у всіх місцях: в параметрах та у властивостях відповідей. - Додано регулярні вирази для вибраних текстових полів.
- Додано метадані
Версія 2.0.0 RC5.5
Отримання поточних лімітів API (GET
/api/v2/rate-limits)
Додано endpoint, що повертає ефективні ліміти викликів API в розкладіperSecond/perMinute/perHourдля окремих областей (зокремаonlineSession,batchSession,invoiceSend,invoiceStatus,invoiceExport,invoiceDownload,other).Статус рахунку-фактури в сесії
Розширено відповідь для GET/sessions/{referenceNumber}/invoices("Отримання рахунків-фактур сесії") та GET/sessions/{referenceNumber}/invoices/{invoiceReferenceNumber}("Отримання статусу рахунку-фактури з сесії") властивостями:upoDownloadUrlExpirationDate- "дата та час закінчення строку дії адреси. Після цієї дати посиланняUpoDownloadUrlбільше не буде активним". Розширено описupoDownloadUrl.Видалення полів *InMib (зміна згідно з оголошенням з 5.3)
Видалено властивостіmaxInvoiceSizeInMibтаmaxInvoiceWithAttachmentSizeInMib. Зміна стосується:- GET
/limits/context– відповідей (onlineSession,batchSession), - POST
/testdata/limits/context/session– моделі запиту (onlineSession,batchSession), - Моделей:
BatchSessionContextLimitsOverride,BatchSessionEffectiveContextLimits,OnlineSessionContextLimitsOverride,OnlineSessionEffectiveContextLimits. Для вказання розмірів використовуються виключно поля *InMB (1 MB = 1 000 000 B).
- GET
Видалення
operationReferenceNumber(зміна згідно з оголошенням з 5.3)
Видалено властивістьoperationReferenceNumberз моделі відповіді; єдиною обов'язковою назвою єreferenceNumber. Зміна включає:- GET
/invoices/exports/{referenceNumber}- "Статус експорту пакету рахунків-фактур", - POST
/permissions/operations/{referenceNumber}- "Отримання статусу операції дозволів".
- GET
Експорт пакету рахунків-фактур (POST
/invoices/exports)- Додано новий код помилки:
21182- "Досягнуто ліміт триває експортів. Для аутентифікованого суб'єкта в поточному контексті досягнуто максимальний ліміт {count} одночасних експортів рахунків-фактур. Спробуйте пізніше". - Розширено модель відповіді властивістю
packageExpirationDate, що вказує дату закінчення строку дії підготовленого пакету. Після закінчення цієї дати пакет не буде доступний для завантаження. - Додано код помилки
210- "Експорт рахунків-фактур закінчився і більше не доступний для завантаження".
- Додано новий код помилки:
Статус експорту пакету рахунків-фактур (GET
/invoices/exports/{referenceNumber})
Уточнено описи полів посилань для завантаження частин пакету:url- "URL-адреса, за якою потрібно надіслати запит на завантаження частини пакету. Посилання генерується динамічно в момент запиту статусу операції експорту. Не підлягає лімітам API і не потребує передавання токена доступу при завантаженні".expirationDate- "Дата та час закінчення строку дії посилання, що дозволяє завантаження частини пакету. Після закінчення цього моменту посилання перестає бути активним".
Авторизація
- Розширено правила доступу
SubunitManageдля POST/permissions/query/persons/grants: операцію можна виконати, якщо суб'єкт маєCredentialsManage,CredentialsRead,SubunitManage. - Надання дозволів непрямим способом (POST
/permissions/indirect/grants) Оновлено опис властивостіtargetIdentifier.description: уточнено, що відсутність ідентифікатора контексту означає надання непрямого дозволу загального типу.
- Розширено правила доступу
OpenAPI
Збільшено максимальне значенняpageSizeзі 100 до 500 для endpoints:- GET
/sessions - GET
/sessions/{referenceNumber}/invoices - GET
/sessions/{referenceNumber}/invoices/failed
- GET
Версія 2.0.0 RC5.4
Отримання списку метаданых рахунків-фактур (POST /invoices/query/metadata)
- Додано параметр
sortOrder, що дозволяє визначити напрямок сортування результатів.
- Додано параметр
Статус сесії
Видалено помилку, що перешкоджала заповненню цієї властивості у відповідях API щодо рахунків-фактур (поле раніше не поверталося). Значення заповнюється асинхронно в момент постійного запису і може бути тимчасово null.Тестові дані (лише на тестових середовищах)
- Зміна лімітів API для поточного контексту (POST
testdata/rate-limits)
Додано endpoint, що дозволяє тимчасово перевизначити ефективні ліміти API для поточного контексту. Зміна готує запуск симулятора лімітів на середовищі TE. - Відновлення лімітів за замовчуванням (DELETE
/testdata/rate-limits) Додано endpoint, що відновлює значення лімітів за замовчуванням для поточного контексту.
- Зміна лімітів API для поточного контексту (POST
OpenAPI
- Уточнено визначення табличних параметрів в query; застосовано
style: form. Декілька значень потрібно передавати через повторення параметра, наприклад?statuses=InProgress&statuses=Succeeded. Документаційна зміна, без впливу на роботу API. - Оновлено описи властивостей (
partUploadRequests,encryptedSymmetricKey,initializationVector).
- Уточнено визначення табличних параметрів в query; застосовано
Версія 2.0.0 RC5.3
Експорт пакету рахунків-фактур (POST
/invoices/exports)
Додано можливість долучення файлу_metadata.jsonдо пакету експорту. Файл має вигляд об'єкта JSON з масивомinvoices, що містить об'єктиInvoiceMetadata(модель, що повертається POST/invoices/query/metadata). Увімкнення (preview): до заголовка запиту потрібно додатиX-KSeF-Feature:include-metadata. З 2025-10-27 змінюється поведінка за замовчуванням endpoint - пакет експорту завжди міститиме файл_metadata.json(заголовок не буде потрібен).Статус рахунку-фактури
- У випадку обробки з помилкою, коли можливо було прочитати номер рахунку-фактури (наприклад, код помилки
440- дублікат рахунку-фактури), відповідь містить властивістьinvoiceNumberз прочитаним номером. - Позначено властивості
invoiceHash,referenceNumberв моделі відповіді як такі, що завжди повертаються.
- У випадку обробки з помилкою, коли можливо було прочитати номер рахунку-фактури (наприклад, код помилки
Стандартизація одиниць розміру (MB, SI)
Уніфіковано запис лімітів у документації та API: значення подані в MB (SI), де 1 MB = 1 000 000 B.Отримання лімітів для поточного контексту (GET
/limits/context)
Додано в моделі відповідіmaxInvoiceSizeInMB,maxInvoiceWithAttachmentSizeInMBдля властивостейonlineSessionіbatchSession. ВластивостіmaxInvoiceSizeInMib,maxInvoiceWithAttachmentSizeInMibпозначено як deprecated (планується видалення: 2025-10-27).Зміна лімітів сесії для поточного контексту (POST
/testdata/limits/context/session)
Додано в моделі запитуmaxInvoiceSizeInMB,maxInvoiceWithAttachmentSizeInMBдля властивостейonlineSessionіbatchSession. ВластивостіmaxInvoiceSizeInMib,maxInvoiceWithAttachmentSizeInMibпозначено як deprecated (планується видалення: 2025-10-27).Статус експорту пакету рахунків-фактур (GET
/invoices/exports/{referenceNumber})
Зміна назви параметра шляху зoperationReferenceNumberнаreferenceNumber.
Зміна не впливає на контракт HTTP (шлях і значення без змін) та на поведінку endpoint.Дозволи
- Оновлено описи endpoints приклади endpoints з області permissions/*. Зміна стосується виключно документації (уточнення описів, форматів і прикладів); без змін у поведінці API та контракті.
- Зміна назви параметра шляху з
operationReferenceNumberнаreferenceNumberу "Отримання статусу операції" (POST/permissions/operations/{referenceNumber}).
Зміна не впливає на контракт HTTP (шлях і значення без змін) та на поведінку endpoint. - "Надання дозволів непрямим способом" (POST
permissions/indirect/grants)
Додано підтримку внутрішнього ідентифікатора - розширено властивістьtargetIdentifierзначеннямInternalId. - "Отримання списку власних дозволів" (POST
/permissions/query/personal/grants)- Розширено в моделі запиту властивість
targetIdentifierзначеннямInternalId(можливість вказання внутрішнього ідентифікатора). - Видалено в моделі відповіді значення
PersonalPermissionScope.Owner. Власницькі дозволи (надані через ZAW-FA або прив'язка NIP/PESEL) не повертаються.
- Розширено в моделі запиту властивість
Статус аутентифікації (GET
/auth/{referenceNumber})
Розширено таблицю кодів помилок470- "Аутентифікація завершена невдачею" з уточненням: "Спроба використання авторизаційних методів померлої особи".Обробка рахунків-фактур PEF
Змінено значення enum (FormCode):FA_PEF (3)наPEF (3),FA_KOR_PEF (3)наPEF_KOR (3).
Генерування нового токена (POST
/tokens)- В моделі запиту (
GenerateTokenRequest) позначено поляdescriptionіpermissionsяк обов'язкові. - В моделі відповіді (
GenerateTokenResponse) позначено поляreferenceNumberіtokenяк такі, що завжди повертаються.
- В моделі запиту (
Статус токена KSeF (GET /tokens/{referenceNumber})
- Позначено властивості
authorIdentifier,contextIdentifier,dateCreated,description,referenceNumber,requestedPermissions,statusв моделі відповіді як такі, що завжди повертаються.
- Позначено властивості
Отримання списку згенерованих токенів (GET /tokens)
- Позначено властивості
authorIdentifier,contextIdentifier,dateCreated,description,referenceNumber,requestedPermissions,statusв моделі відповіді як такі, що завжди повертаються.
- Позначено властивості
Тестові дані - створення фізичної особи (POST
/testdata/person)
Розширено запит властивістюisDeceased(boolean), що дозволяє створити тестову померлу особу (наприклад, для сценаріїв перевірки коду статусу470).OpenAPI
- Уточнено обмеження для властивостей типу integer в requests через додавання атрибутів
minimum/exclusiveMinimum,maximum/exclusiveMaximum. - Розширено відповідь полем
referenceNumber(містить те саме значення, що й попереднєoperationReferenceNumber). ПозначеноoperationReferenceNumberякdeprecatedі буде видалено з відповіді 2025-10-27; потрібно перейти наreferenceNumber. Характер зміни: перехідний rename із збереженням сумісності (обидві властивості повертаються паралельно до дати видалення).
Стосується endpoints:- POST
/permissions/persons/grants, - POST
/permissions/entities/grants, - POST
/permissions/authorizations/grants, - POST
/permissions/indirect/grants, - POST
/permissions/subunits/grants, - POST
/permissions/eu-entities/administration/grants, - POST
/permissions/eu-entities/grants, - DELETE
/permissions/common/grants/{permissionId}, - DELETE
/permissions/authorizations/grants/{permissionId}, - POST
/invoices/exports.
- POST
- Видалено атрибут
requiredз властивостіpageSizeв запиті GET/sessions("Отримання списку сесій"). - Оновлено приклади (example) у визначеннях endpoints.
- Уточнено обмеження для властивостей типу integer в requests через додавання атрибутів
Версія 2.0.0 RC5.2
Дозволи
- "Надання дозволів адміністратора підпорядкованого суб'єкта" (POST
/permissions/subunits/grants)
Додано властивістьsubunitName("Назва підпорядкованої одиниці") у запиті. Поле обов'язкове, коли підпорядкована одиниця ідентифікується внутрішнім ідентифікатором. - "Отримання списку дозволів адміністраторів одиниць і підпорядкованих суб'єктів" (POST
/permissions/query/subunits/grants)
Додано у відповіді властивістьsubunitName("Назва підпорядкованої одиниці"). - "Отримання списку дозволів для роботи в KSeF, наданих фізичним особам або суб'єктам" (POST
permissions/query/persons/grants)
Видалено з результатів дозвіл типуOwner. ДозвілOwnerприсвоюється системно фізичній особі і не підлягає наданню, тому не повинен з'являтися в списку наданих дозволів. - "Отримання списку власних дозволів" (POST
/permissions/query/personal/grants)
Розширено enum фільтраPersonalPermissionTypeзначеннямVatUeManage.
- "Надання дозволів адміністратора підпорядкованого суб'єкта" (POST
Ліміти
- Додано endpoints для перевірки встановлених лімітів (контекст, аутентифікований суб'єкт):
- GET
/limits/context - GET
/limits/subject
- GET
- Додано endpoints для управління лімітами (контекст, аутентифікований суб'єкт) у тестовому середовищі:
- POST/DELETE
/testdata/limits/context/session - POST/DELETE
/testdata/limits/subject/certificate
- POST/DELETE
- Оновлено Ліміти.
- Додано endpoints для перевірки встановлених лімітів (контекст, аутентифікований суб'єкт):
Статус рахунку-фактури
Додано властивістьinvoicingModeв моделі відповіді. Оновлено документацію: Автоматичне визначення режиму надсилання offline.OpenAPI
- Уточнено обмеження для властивостей типу integer в requests через додавання атрибутів
minimum/exclusiveMinimum,maximum/exclusiveMaximumта значень за замовчуваннямdefault. - Оновлено приклади (example) у визначеннях endpoints.
- Уточнено описи endpoints.
- Додано атрибут
requiredдля обов'язкових властивостей у запитах і відповідях.
- Уточнено обмеження для властивостей типу integer в requests через додавання атрибутів
Версія 2.0.0 RC5.1
Отримання списку метаданих сертифікатів (POST /certificates/query)
Змінено представлення ідентифікатора суб'єкта з пари властивостейsubjectIdentifier+subjectIdentifierTypeна складний об'єктsubjectIdentifier{type,value}.Отримання списку метаданих рахунків-фактур (POST /invoices/query/metadata)
- Змінено представлення вибраних ідентифікаторів з пар властивостей тип + value на складні об'єкти { type, value }:
invoiceMetadataBuyer.identifier+invoiceMetadataBuyer.identifierTypeна складний об'єктinvoiceMetadataBuyerIdentifier{type,value},invoiceMetadataThirdSubject.identifier+invoiceMetadataThirdSubject.identifierTypeна складний об'єктInvoiceMetadataThirdSubjectIdentifier{type,value}.
- Видалено
obsoletedвластивостіIdentitiferз об'єктівInvoiceMetadataSellerтаInvoiceMetadataAuthorizedSubject. - Змінено властивість
invoiceQuerySellerнаsellerNipу фільтрі запиту. - Змінено властивість
invoiceQueryBuyerнаinvoiceQueryBuyerIdentifierз властивостями {type,value} у фільтрі запиту.
- Змінено представлення вибраних ідентифікаторів з пар властивостей тип + value на складні об'єкти { type, value }:
Дозволи
Змінено представлення вибраних ідентифікаторів з пар властивостей тип + value на складні об'єкти { type, value }:- "Отримання списку власних дозволів" (POST
/permissions/query/personal/grants):contextIdentifier+contextIdentifierType->contextIdentifier{type,value},authorizedIdentifier+authorizedIdentifierType->authorizedIdentifier{type,value},targetIdentifier+targetIdentifierType->targetIdentifier{ type, value }.
- "Отримання списку дозволів для роботи в KSeF, наданих фізичним особам або суб'єктам" (POST
/permissions/query/persons/grants),contextIdentifier+contextIdentifierType->contextIdentifier{type,value},authorizedIdentifier+authorizedIdentifierType->authorizedIdentifier{type,value},targetIdentifier+targetIdentifierType->targetIdentifier{type,value},authorIdentifier+authorIdentifierType->authorIdentifier{type,value}.
- "Отримання списку дозволів адміністраторів одиниць і підпорядкованих суб'єктів" (POST
/permissions/query/subunits/grants):authorizedIdentifier+authorizedIdentifierType->authorizedIdentifier{type,value},subunitIdentifier+subunitIdentifierType->subunitIdentifier{type,value},authorIdentifier+authorIdentifierType->authorIdentifier{type,value}.
- "Отримання списку ролей суб'єкта" (POST
/permissions/query/entities/roles):parentEntityIdentifier+parentEntityIdentifierType->parentEntityIdentifier{type,value}.
- "Отримання списку підпорядкованих суб'єктів" (POST
/permissions/query/subordinate-entities/roles):subordinateEntityIdentifier+subordinateEntityIdentifierType->subordinateEntityIdentifier{type,value}.
- "Отримання списку суб'єктних дозволів для обробки рахунків-фактур" (POST
/permissions/query/authorizations/grants):authorizedEntityIdentifier+authorizedEntityIdentifierType->authorizedEntityIdentifier{type,value},authorizingEntityIdentifier+authorizingEntityIdentifierType->authorizingEntityIdentifier{type,value},authorIdentifier+authorIdentifierType->authorIdentifier{type,value}
- "Отримання списку дозволів адміністраторів або представників унійних суб'єктів, уповноважених на самофактурування" (POST
/permissions/query/eu-entities/grants):authorIdentifier+authorIdentifierType->authorIdentifier{type,value}
- "Отримання списку власних дозволів" (POST
Надання дозволів адміністратора унійного суб'єкта (POST permissions/eu-entities/administration/grants)
Змінено назву властивості в запиті зsubjectNameнаeuEntityName.Аутентифікація з використанням токена KSeF
Видалено зайві значення enumNone,AllPartnersу властивостіcontextIdentifier.typeзапиту POST/auth/ksef-token.Токени KSeF
- Уніфіковано модель відповіді GET
/tokens: властивостіauthorIdentifier.type,authorIdentifier.value,contextIdentifier.type,contextIdentifier.valueзавжди повертаються (required, non-nullable), - Видалено зайві значення enum
None,AllPartnersу властивостяхauthorIdentifier.typeтаcontextIdentifier.typeв моделі відповіді GET/tokens("Отримання списку згенерованих токенів").
- Уніфіковано модель відповіді GET
Пакетна сесія
Видалено зайвий код помилки21401- "Документ не відповідає схемі (json)".Отримання статусу сесії (GET /sessions/{referenceNumber})
- Додано код помилки
420- "Перевищений ліміт рахунків-фактур у сесії".
- Додано код помилки
Отримання метаданих рахунків-фактур (GET
/invoices/query/metadata)- Додано у відповіді (завжди повертається) властивість
isTruncated(boolean) – "Визначає, чи результат був обрізаний через перевищення ліміту кількості рахунків-фактур (10 000)", - Позначено властивість
amount.typeу фільтрі запиту як обов'язкову.
- Додано у відповіді (завжди повертається) властивість
Експорт пакету рахунків-фактур: замовлення (POST
/invoices/exports)- Позначено властивість
operationReferenceNumberв моделі відповіді як таку, що завжди повертається, - Позначено властивість
amount.typeу фільтрі запиту як обов'язкову.
- Позначено властивість
Отримання списку дозволів для роботи в KSeF, наданих фізичним особам або суб'єктам (POST /permissions/query/persons/grants)
- Додано
contextIdentifierу фільтрі запиту і в моделі відповіді.
- Додано