Límite de peticiones: 429
Al pasar el límite, KSeF responde HTTP 429 «Too Many Requests» con la cabecera Retry-After y bloquea el acceso a la API el tiempo indicado. El ejemplo de la documentación: «Przekroczono limit 20 żądań na minutę. Spróbuj ponownie po 30 sekundach.» (superado el límite de 20 peticiones por minuto; vuelve a intentarlo dentro de 30 segundos). Los límites se cuentan por segundo, minuto y hora. Los límites más altos de 20:00 a 06:00 son solo para descargar y aún no tienen cifras publicadas; enviar facturas no tiene límites más altos de noche.
Lo que más importa al enviar desde Odoo:
- envío de una factura: 10 por segundo, 30 por minuto, 180 por hora;
- apertura de sesión interactiva: 10, 30 y 120;
- estado de una factura en la sesión: 30, 120 y 1200;
- el resto de peticiones: 10, 30 y 120.

Acceso denegado: el 403 y su reasonCode
| reasonCode | Texto de KSeF |
|---|---|
| missing-permissions | «Brak wymaganych uprawnień do wykonania operacji w bieżącym kontekście.» (faltan permisos en el contexto actual) |
| ip-not-allowed | «Żądanie pochodzi z adresu IP innego niż wskazany podczas uwierzytelnienia.» (la petición sale de otra IP que la indicada al iniciar sesión) |
| insufficient-resource-access | «Brak dostępu do wskazanego zasobu.» (sin acceso a ese recurso) |
| auth-method-not-allowed | «Ta operacja nie jest dostępna dla użytej metody uwierzytelnienia.» (no disponible con ese método de inicio de sesión) |
| security-service-blocked | «Żądanie zostało zablokowane przez mechanizmy bezpieczeństwa.» (bloqueada por los mecanismos de seguridad) |
| context-type-not-allowed | «Operacja nie jest dostępna dla uwierzytelnionego typu kontekstu.» (no disponible para ese tipo de contexto) |
Las respuestas 401 y 403 llegan en formato Problem Details, y las 400 y 429 también pueden si el programa manda la cabecera X-Error-Format: problem-details. Odoo no la manda.
Qué hacen Odoo 18, 19 y 20
Ante un 401, Odoo refresca el token de acceso y repite la petición una vez. Ante un 403 enseña «KSeF API Error: » con el cuerpo de la respuesta, así que verás el reasonCode en el mensaje. Ante un 429 lanza el error «Too Many Requests»:
- al enviar, la factura recibe ese error y se queda sin estado KSeF, y Retry-After no se tiene en cuenta: vuelve a enviarla un poco después;
- la descarga de facturas de proveedor, que Odoo hace cada 3 horas, lee Retry-After y se reprograma sola.
Después de enviar, Odoo pregunta por el estado hasta 5 veces, cada 2 segundos. Con muchas facturas enviadas de golpe, esas peticiones también cuentan para el límite de estado.

Cómo evitar el 429
Una factura con el error «Too Many Requests» no tiene estado KSeF, porque KSeF no aceptó la petición, así que vuelve a las facturas por enviar y no hay riesgo de que llegue dos veces a KSeF. Envía las facturas en tandas más pequeñas y no pulses reenviar en ráfaga. Si llegas a menudo a los límites de envío de la sesión interactiva, el Ministerio de Finanzas aconseja pensar primero en el modo por lotes y, si la sesión interactiva es imprescindible, escribir al soporte de KSeF. Odoo solo envía facturas en sesión interactiva. Nuestro módulo, Poland KSeF 2.0 Validator, no hace peticiones a KSeF, así que no gasta estos límites; con la suscripción, su validación del FA(3) va a FlexigoTech Cloud.
¿Un 403 security-service-blocked se pasa solo?
La documentación solo dice que la petición la bloquearon los mecanismos de seguridad. Si se repite con datos correctos, avisa al soporte de KSeF.
Sigue leyendo
Comprobado en las fuentes enlazadas
Fuentes
- 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
