Skip to content

Translation. Original: limity/limity.md

Ліміти

21.10.2025

Вступ

У системі KSeF 2.0 застосовано механізми, що обмежують кількість і розмір операцій API, а також параметри, пов'язані з переданими даними. Метою цих лімітів є:

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

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

Ліміти запитів API

Система KSeF обмежує кількість запитів, які можна надсилати за короткий час, щоб забезпечити стабільне функціонування системи та рівний доступ для всіх користувачів. Докладніша інформація знаходиться в Ліміти запитів API.

Ліміти на контекст

ПараметрЗначення за замовчуванням
Максимальний розмір рахунку-фактури без додатка1 MB
Максимальний розмір рахунку-фактури з додатком3 MB
Максимальна кількість рахунків-фактур в інтерактивній/пакетній сесії10 000

Ліміти на аутентифікований суб'єкт

Заявки та активні сертифікати

Ідентифікатор з сертифікатаЗаявки на сертифікат KSeFАктивні сертифікати KSeF
NIP300100
PESEL126
Відбиток сертифіката (fingerprint)126

Налаштування лімітів

Система KSeF дозволяє індивідуальне налаштування вибраних технічних лімітів для:

  • лімітів API - наприклад, збільшення кількості запитів для вибраного endpoint'у,
  • контексту - наприклад, збільшення максимального розміру рахунку-фактури,
  • аутентифікованого суб'єкта - наприклад, збільшення лімітів активних сертифікатів KSeF для фізичної особи (PESEL).

У виробничому середовищі збільшення лімітів можливе виключно на підставі обґрунтованої заявки, підкріпленої реальною операційною потребою. Заявка подається через контактну форму з детальним описом використання.

Перевірка індивідуальних лімітів

Система KSeF надає endpoint'и, що дозволяють перевірити поточні значення лімітів для поточного контексту або суб'єкта:

Отримання лімітів для поточного контексту

GET /limits/context

Повертає значення діючих лімітів інтерактивних та пакетних сесій для поточного контексту.

Приклад мовою C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
Client.Core.Models.TestData.SessionLimitsInCurrentContextResponse limitsForContext =
    await LimitsClient.GetLimitsForCurrentContextAsync(
        accessToken,
        CancellationToken);

Приклад мовою Java:

ContextLimitIntegrationTest.java

java
GetContextLimitResponse response = ksefClient.getContextSessionLimit(accessToken);

Отримання лімітів для поточного суб'єкта

GET /limits/subject

Повертає діючі ліміти сертифікатів та сертифікаційних заявок для поточного аутентифікованого суб'єкта.

Приклад мовою C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
Client.Core.Models.TestData.CertificatesLimitInCurrentSubjectResponse limitsForSubject =
        await LimitsClient.GetLimitsForCurrentSubjectAsync(
            accessToken,
            CancellationToken);

Приклад мовою Java:

SubjectLimitIntegrationTest.java

java
GetSubjectLimitResponse response = ksefClient.getSubjectCertificateLimit(accessToken);

Модифікація лімітів у тестовому середовищі

У тестовому середовищі надано набір методів, що дозволяють змінювати та відновлювати ліміти до значень за замовчуванням. Ці операції доступні виключно для аутентифікованих суб'єктів і не впливають на виробниче середовище.

Зміна лімітів сесії для поточного контексту

POST /testdata/limits/context/session

Приклад мовою C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
Client.Core.Models.TestData.ChangeSessionLimitsInCurrentContextRequest newLimits =
    new()
    {
        OnlineSession = new Client.Core.Models.TestData.SessionLimits
        {
            MaxInvoices = newMaxInvoices,
            MaxInvoiceSizeInMB = newMaxInvoiceSizeInMB
            MaxInvoiceWithAttachmentSizeInMB = newMaxInvoiceWithAttachmentSizeInMB
        },

        BatchSession = new Client.Core.Models.TestData.SessionLimits
        {
            MaxInvoices = newBatchSessionMaxInvoices
            MaxInvoiceSizeInMB = newBatchSessionMaxInvoiceSizeInMB,
            MaxInvoiceWithAttachmentSizeInMB = newBatchSessionMaxInvoiceWithAttachmentSizeInMB,
        }
    };

await TestDataClient.ChangeSessionLimitsInCurrentContextAsync(
    newLimits,
    accessToken);

Приклад мовою Java:

ContextLimitIntegrationTest.java

java
ChangeContextLimitRequest request = new ChangeContextLimitRequest();
OnlineSessionLimit onlineSessionLimit = new OnlineSessionLimit();
onlineSessionLimit.setMaxInvoiceSizeInMB(4);
onlineSessionLimit.setMaxInvoiceWithAttachmentSizeInMB(5);
onlineSessionLimit.setMaxInvoices(6);

BatchSessionLimit batchSessionLimit = new BatchSessionLimit();
batchSessionLimit.setMaxInvoiceSizeInMB(4);
batchSessionLimit.setMaxInvoiceWithAttachmentSizeInMB(5);
batchSessionLimit.setMaxInvoices(6);

request.setOnlineSession(onlineSessionLimit);
request.setBatchSession(batchSessionLimit);

ksefClient.changeContextLimitTest(request, accessToken);

Відновлення лімітів сесії для контексту до значень за замовчуванням

DELETE /testdata/limits/context/session

Приклад мовою C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
await TestDataClient.RestoreDefaultSessionLimitsInCurrentContextAsync(accessToken);

Приклад мовою Java: ContextLimitIntegrationTest.java

java
ksefClient.resetContextLimitTest(accessToken);

Зміна лімітів сертифікатів для поточного суб'єкта

POST /testdata/limits/subject/certificate

Приклад мовою C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
Client.Core.Models.TestData.ChangeCertificatesLimitInCurrentSubjectRequest newCertificateLimitsForSubject = new()
{
    SubjectIdentifierType = Client.Core.Models.TestData.TestDataSubjectIdentifierType.Nip,
    Certificate = new Client.Core.Models.TestData.TestDataCertificate
    {
        MaxCertificates = newMaxCertificatesValue
    },
    Enrollment = new Client.Core.Models.TestData.TestDataEnrollment
    {
        MaxEnrollments = newMaxEnrollmentsValue
    }
};

await TestDataClient.ChangeCertificatesLimitInCurrentSubjectAsync(
    newCertificateLimitsForSubject,
    accessToken);

Приклад мовою Java: SubjectLimitIntegrationTest.java

java
ChangeSubjectCertificateLimitRequest request = new ChangeSubjectCertificateLimitRequest();
request.setCertificate(new CertificateLimit(15));
request.setEnrollment(new EnrollmentLimit(15));
request.setSubjectIdentifierType(ChangeSubjectCertificateLimitRequest.SubjectType.NIP);

ksefClient.changeSubjectLimitTest(request, accessToken);

Відновлення лімітів сертифікатів для суб'єкта до значень за замовчуванням

DELETE /testdata/limits/subject/certificate

Приклад мовою C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
await TestDataClient.RestoreDefaultCertificatesLimitInCurrentSubjectAsync(accessToken);

Приклад мовою Java: SubjectLimitIntegrationTest.java

java
ksefClient.resetSubjectCertificateLimit(accessToken);

Пов'язані документи: