Aanvraaglimiet: 429
Bij overschrijding van de limiet antwoordt KSeF met HTTP 429 «Too Many Requests» en een Retry-After-header, en blokkeert het de toegang tot de API gedurende de aangegeven tijd. Het voorbeeld uit de documentatie: «Przekroczono limit 20 żądań na minutę. Spróbuj ponownie po 30 sekundach.» (limiet van 20 aanvragen per minuut overschreden; probeer het over 30 seconden opnieuw). Limieten worden geteld per seconde, minuut en uur. De hogere limieten tussen 20:00 en 06:00 gelden alleen voor downloaden, en de waarden zijn nog niet gepubliceerd; facturen verzenden krijgt 's nachts geen hogere limieten.
Wat het meest telt bij verzenden vanuit Odoo:
- een factuur verzenden: 10 per seconde, 30 per minuut, 180 per uur;
- een interactieve sessie openen: 10, 30 en 120;
- de status van een factuur in de sessie: 30, 120 en 1200;
- overige aanvragen: 10, 30 en 120.

Geweigerde toegang: de 403 en zijn reasonCode
| reasonCode | Tekst van KSeF |
|---|---|
| missing-permissions | «Brak wymaganych uprawnień do wykonania operacji w bieżącym kontekście.» (ontbrekende rechten in de huidige context) |
| ip-not-allowed | «Żądanie pochodzi z adresu IP innego niż wskazany podczas uwierzytelnienia.» (aanvraag van een ander IP-adres dan bij het aanmelden opgegeven) |
| insufficient-resource-access | «Brak dostępu do wskazanego zasobu.» (geen toegang tot die bron) |
| auth-method-not-allowed | «Ta operacja nie jest dostępna dla użytej metody uwierzytelnienia.» (niet beschikbaar voor die aanmeldmethode) |
| security-service-blocked | «Żądanie zostało zablokowane przez mechanizmy bezpieczeństwa.» (geblokkeerd door de beveiligingsmechanismen) |
| context-type-not-allowed | «Operacja nie jest dostępna dla uwierzytelnionego typu kontekstu.» (niet beschikbaar voor dat contexttype) |
De antwoorden 401 en 403 komen in het Problem Details-formaat, en de 400 en 429 kunnen dat ook, als het programma de header X-Error-Format: problem-details meestuurt. Odoo stuurt die niet mee.
Wat Odoo 18, 19 en 20 doen
Bij een 401 vernieuwt Odoo het toegangstoken en herhaalt het de aanvraag één keer. Bij een 403 toont het «KSeF API Error: » met de inhoud van het antwoord, dus je ziet de reasonCode in het bericht. Bij een 429 gooit het de fout «Too Many Requests»:
- bij verzenden krijgt de factuur die fout en blijft zonder KSeF-status, en Retry-After wordt genegeerd: verstuur haar iets later opnieuw;
- het downloaden van leveranciersfacturen, dat Odoo elke 3 uur doet, leest Retry-After en plant zichzelf opnieuw in.
Na het verzenden vraagt Odoo tot 5 keer om de status, telkens 2 seconden na elkaar. Bij veel tegelijk verzonden facturen tellen die aanvragen ook mee voor de statuslimiet.

Zo voorkom je de 429
Een factuur met de fout «Too Many Requests» heeft geen KSeF-status, omdat KSeF de aanvraag niet heeft aangenomen. Ze gaat dus terug naar de facturen die nog verzonden moeten worden, en er is geen risico dat ze twee keer bij KSeF aankomt. Verstuur facturen in kleinere groepen en klik niet herhaaldelijk op opnieuw verzenden. Als je regelmatig de verzendlimieten van de interactieve sessie raakt, adviseert het Ministerie van Financiën eerst de batchmodus te overwegen en, als de interactieve sessie onmisbaar is, contact op te nemen met de KSeF-support. Odoo verstuurt facturen alleen in een interactieve sessie. Onze module, Poland KSeF 2.0 Validator, doet geen aanvragen aan KSeF en verbruikt dus deze limieten niet; met het abonnement gaat de FA(3)-validatie ervan naar FlexigoTech Cloud.
Verdwijnt een 403 security-service-blocked vanzelf?
De documentatie zegt alleen dat de aanvraag door de beveiligingsmechanismen is geblokkeerd. Als het blijft gebeuren met correcte gegevens, meld het dan bij de KSeF-support.
Lees verder
Gecontroleerd in de gelinkte bronnen
Bronnen
- 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
