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 перед этой датой).
Тестовые данные
Добавлены новые endpointy:- 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": "Duplikat faktury", "details": [ "Duplikat faktury. Faktura o numerze KSeF: 5265877635-20250626-010080DD2B5E-26 została już prawidłowo przesłana do systemu w sesji: 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 patterns для
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в модели ответа как всегда возвращаемые. - Определена схема
PeppolI(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. Характер изменения: переходное переименование с сохранением совместимости (оба свойства возвращаются параллельно до даты удаления).
Касается 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в фильтре запроса и в модели ответа.
- Добавлен
OpenAPI
Удален неиспользуемыйoperationIdиз спецификации. Упорядочивающее изменение.
Версия 2.0.0 RC5
Обработка счетов PEF и поставщиков услуг Peppol
- Добавлена поддержка счетов
PEF, отправляемых поставщиком услуг Peppol. Новые возможности не изменяют прежние поведения KSeF для других форматов, являются расширением API. - Введен новый тип контекста аутентификации:
PeppolId, позволяющий работать в контексте поставщика услуг Peppol. - Автоматическая регистрация поставщика: при первой аутентификации поставщика услуг Peppol (с использованием выделенного сертификата) происходит его автоматическая регистрация в системе.
- Добавлен endpoint GET
/peppol/query("Список поставщиков услуг Peppol"), возвращающий зарегистрированных поставщиков. - Обновлены правила доступа для открытия и закрытия сессии, отправка счетов требует разрешения
PefInvoiceWrite. - Добавлены новые схемы счетов:
FA_PEF (3),FA_KOR_PEF (3), - Расширен
ContextIdentifierоPeppolIdв xsdAuthTokenRequest.
- Добавлена поддержка счетов
UPO
- Добавлен элемент
Uwierzytelnienie, который упорядочивает данные из заголовка UPO и расширяет их дополнительной информацией; заменяет прежниеIdentyfikatorPodatkowyPodmiotuиSkrotZlozonejStruktury. Uwierzytelnienieсодержит:IdKontekstu– идентификатор контекста аутентификации,- доказательство аутентификации (в зависимости от метода):
NumerReferencyjnyTokenaKSeF- идентификатор токена аутентификации в системе KSeF,SkrotDokumentuUwierzytelniajacego- значение функции хеша документа аутентификации в полученном системой виде (включая электронную подпись).
- В эл
- Добавлен элемент