Skip to content

Limity ​

21.10.2025

Wstęp ​

W systemie KSeF 2.0 zastosowano mechanizmy limitujące liczbę i wielkość operacji API oraz parametry związane z przesyłanymi danymi. Celem tych limitów jest:

  • ochrona stabilności systemu przy dużej skali działania,
  • przeciwdziałanie nadużyciom i nieefektywnym integracjom,
  • zapobieganie nadużyciom i potencjalnym zagrożeniom cyberbezpieczeństwa,
  • zapewnienie równych warunków dostępu dla wszystkich użytkowników.

Limity zostały zaprojektowane z możliwością elastycznego dostosowania do potrzeb konkretnych podmiotów wymagających większej intensywności operacji.

Limity żądań API ​

System KSeF ogranicza liczbę zapytań, jakie można wysyłać w krótkim czasie, aby zapewnić stabilne działanie systemu i równy dostęp dla wszystkich użytkowników. Więcej informacji znajduje się w Limity żądań API.

Limity na kontekst ​

ParametrWartość domyślna
Maksymalny rozmiar faktury bez załącznika1 MB
Maksymalny rozmiar faktury z załącznikiem3 MB
Maksymalna liczba faktur w sesji interaktywnej/wsadowej10 000

Limity na uwierzytelniony podmiot ​

Wnioski i aktywne certyfikaty ​

Identyfikator z certyfikatuWnioski o certyfikat KSeFAktywne certyfikaty KSeF
NIP300100
PESEL126
Odcisk palca certyfikatu (fingerprint)126

Dostosowanie limitów ​

System KSeF umożliwia indywidualne dostosowanie wybranych limitów technicznych dla:

  • limitów API - np. zwiększenie liczby żądań dla wybranego endpointu,
  • kontekstu - np. zwiększenie maksymalnego rozmiaru faktury,
  • podmiotu uwierzytelniającego - np. zwiększenie limitów aktywnych certyfikatów KSeF dla osoby fizycznej (PESEL).

Na środowisku produkcyjnym zwiększenie limitów możliwe jest wyłącznie na podstawie uzasadnionego wniosku, popartego realną potrzebą operacyjną. Wniosek składa się za pośrednictwem formularza kontaktowego, wraz ze szczegółowym opisem zastosowania.

Sprawdzanie indywidualnych limitów ​

System KSeF udostępnia endpointy pozwalające na sprawdzenie aktualnych wartości limitów dla bieżącego kontekstu lub podmiotu:

Pobranie limitów dla bieżącego kontekstu ​

GET /limits/context

Zwraca wartości obowiązujących limitów sesji interaktywnych i wsadowych dla bieżącego kontekstu.

Przykład w języku C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

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

Przykład w języku Java:

ContextLimitIntegrationTest.java

java
GetContextLimitResponse response = ksefClient.getContextSessionLimit(accessToken);

Pobranie limitów dla bieżącego podmiotu ​

GET /limits/subject

Zwraca obowiązujące limity certyfikatów i wniosków certyfikacyjnych dla bieżącego podmiotu uwierzytelnionego.

Przykład w języku C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

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

Przykład w języku Java:

SubjectLimitIntegrationTest.java

java
GetSubjectLimitResponse response = ksefClient.getSubjectCertificateLimit(accessToken);

Modyfikacja limitów na środowisku testowym ​

Na środowisku testowym udostępniono zestaw metod umożliwiających zmianę oraz przywracanie limitów do wartości domyślnych. Operacje te dostępne są wyłącznie dla uwierzytelnionych podmiotów i nie mają wpływu na środowisko produkcyjne.

Zmiana limitów sesji dla bieżącego kontekstu ​

POST /testdata/limits/context/session

Przykład w języku 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);

Przykład w języku 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);

Przywrócenie limitów sesji dla kontekstu do wartości domyślnych ​

DELETE /testdata/limits/context/session

Przykład w języku C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
await TestDataClient.RestoreDefaultSessionLimitsInCurrentContextAsync(accessToken);

Przykład w języku Java: ContextLimitIntegrationTest.java

java
ksefClient.resetContextLimitTest(accessToken);

Zmiana limitów certyfikatów dla bieżącego podmiotu ​

POST /testdata/limits/subject/certificate

Przykład w języku 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);

Przykład w języku 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);

Przywrócenie limitów certyfikatów dla podmiotu do wartości domyślnych ​

DELETE /testdata/limits/subject/certificate

Przykład w języku C#: KSeF.Client.Tests.Core/E2E/Limits/LimitsE2ETests.cs

csharp
await TestDataClient.RestoreDefaultCertificatesLimitInCurrentSubjectAsync(accessToken);

Przykład w języku Java: SubjectLimitIntegrationTest.java

java
ksefClient.resetSubjectCertificateLimit(accessToken);

Powiązane dokumenty: