Limit zapytań: 429
Po przekroczeniu limitu KSeF odpowiada HTTP 429 „Too Many Requests” z nagłówkiem Retry-After i blokuje dostęp do API na wskazany czas. Przykład z dokumentacji: „Przekroczono limit 20 żądań na minutę. Spróbuj ponownie po 30 sekundach.”. Limity liczy się na sekundę, minutę i godzinę. Wyższe limity w godzinach 20:00-06:00 dotyczą tylko pobierania, a ich wartości nie zostały jeszcze podane. Wysyłka faktur nie ma w nocy wyższych limitów.
Najważniejsze dla wysyłki z Odoo:
- wysłanie faktury: 10 na sekundę, 30 na minutę, 180 na godzinę;
- otwarcie sesji interaktywnej: 10, 30 i 120;
- status faktury z sesji: 30, 120 i 1200;
- pozostałe zapytania: 10, 30 i 120.

Odmowa dostępu: 403 i jego reasonCode
| reasonCode | Tekst KSeF |
|---|---|
| missing-permissions | „Brak wymaganych uprawnień do wykonania operacji w bieżącym kontekście.” |
| ip-not-allowed | „Żądanie pochodzi z adresu IP innego niż wskazany podczas uwierzytelnienia.” |
| insufficient-resource-access | „Brak dostępu do wskazanego zasobu.” |
| auth-method-not-allowed | „Ta operacja nie jest dostępna dla użytej metody uwierzytelnienia.” |
| security-service-blocked | „Żądanie zostało zablokowane przez mechanizmy bezpieczeństwa.” |
| context-type-not-allowed | „Operacja nie jest dostępna dla uwierzytelnionego typu kontekstu.” |
Odpowiedzi 401 i 403 przychodzą w formacie Problem Details, a 400 i 429 też mogą, jeśli program wyśle nagłówek X-Error-Format: problem-details. Odoo go nie wysyła.
Co robi Odoo 18, 19 i 20
Przy 401 Odoo odświeża token dostępu i powtarza zapytanie jeden raz. Przy 403 pokazuje „KSeF API Error: ” z treścią odpowiedzi, więc reasonCode zobaczysz w komunikacie. Przy 429 zgłasza błąd „Too Many Requests”:
- przy wysyłce faktura dostaje ten błąd i zostaje bez stanu KSeF, a Retry-After nie jest brany pod uwagę: wyślij ją ponownie po chwili;
- pobieranie faktur zakupowych, które Odoo robi co 3 godziny, czyta Retry-After i samo planuje się na później.
Po wysyłce Odoo pyta o status do 5 razy co 2 sekundy. Przy wielu fakturach wysłanych naraz to też są zapytania, które wliczają się do limitu statusu.

Jak uniknąć 429
Faktura z błędem „Too Many Requests” nie ma stanu KSeF, bo KSeF nie przyjął zapytania, więc wróci na listę do wysłania i nie ma ryzyka, że trafi do KSeF dwa razy. Wysyłaj faktury mniejszymi partiami i nie klikaj ponownej wysyłki seriami. Jeśli regularnie dochodzisz do limitów wysyłki w sesji interaktywnej, Ministerstwo Finansów radzi najpierw rozważyć tryb wsadowy, a gdy sesja interaktywna jest niezbędna, zgłosić się do wsparcia KSeF. Odoo wysyła faktury tylko w sesji interaktywnej. Nasz moduł, Poland KSeF 2.0 Validator, nie wysyła zapytań do KSeF, więc nie zużywa tych limitów; z subskrypcją jego walidacja FA(3) idzie do FlexigoTech Cloud.
Czy 403 security-service-blocked minie sam?
Dokumentacja mówi tylko, że zapytanie zablokowały mechanizmy bezpieczeństwa. Jeśli powtarza się przy poprawnych danych, zgłoś to do wsparcia KSeF.
Czytaj dalej
Sprawdzone w podlinkowanych źródłach
Źródła
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/limity/limity-api
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/limity/limity-api
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/limity/limity-api
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/limity/limity-api
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/limity/limity-api
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/api-changelog.md#
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/limity/limity-api
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
