Limite de pedidos: 429
Ao ultrapassar o limite, o KSeF responde com HTTP 429 «Too Many Requests», com o cabeçalho Retry-After, e bloqueia o acesso à API durante o tempo indicado. O exemplo da documentação: «Przekroczono limit 20 żądań na minutę. Spróbuj ponownie po 30 sekundach.» (ultrapassado o limite de 20 pedidos por minuto; tente novamente dentro de 30 segundos). Os limites contam-se por segundo, minuto e hora. Os limites mais altos entre as 20:00 e as 06:00 aplicam-se só à descarga e ainda não têm valores publicados; o envio de faturas não tem limites mais altos à noite.
O que mais importa ao enviar a partir do Odoo:
- envio de uma fatura: 10 por segundo, 30 por minuto, 180 por hora;
- abertura de sessão interativa: 10, 30 e 120;
- estado de uma fatura na sessão: 30, 120 e 1200;
- os restantes pedidos: 10, 30 e 120.

Acesso negado: o 403 e o seu reasonCode
| reasonCode | Texto do KSeF |
|---|---|
| missing-permissions | «Brak wymaganych uprawnień do wykonania operacji w bieżącym kontekście.» (faltam permissões no contexto atual) |
| ip-not-allowed | «Żądanie pochodzi z adresu IP innego niż wskazany podczas uwierzytelnienia.» (o pedido provém de um IP diferente do indicado ao iniciar sessão) |
| insufficient-resource-access | «Brak dostępu do wskazanego zasobu.» (sem acesso a esse recurso) |
| auth-method-not-allowed | «Ta operacja nie jest dostępna dla użytej metody uwierzytelnienia.» (não disponível com esse método de autenticação) |
| security-service-blocked | «Żądanie zostało zablokowane przez mechanizmy bezpieczeństwa.» (bloqueado pelos mecanismos de segurança) |
| context-type-not-allowed | «Operacja nie jest dostępna dla uwierzytelnionego typu kontekstu.» (não disponível para esse tipo de contexto) |
As respostas 401 e 403 chegam no formato Problem Details, e as 400 e 429 também podem chegar, se o programa enviar o cabeçalho X-Error-Format: problem-details. O Odoo não o envia.
O que fazem Odoo 18, 19 e 20
Perante um 401, o Odoo renova o token de acesso e repete o pedido uma vez. Perante um 403 mostra «KSeF API Error: » com o corpo da resposta, pelo que verá o reasonCode na mensagem. Perante um 429 lança o erro «Too Many Requests»:
- ao enviar, a fatura recebe esse erro e fica sem estado KSeF, e o Retry-After não é tido em conta: envie-a novamente um pouco mais tarde;
- a descarga de faturas de fornecedor, que o Odoo faz cada 3 horas, lê o Retry-After e reagenda-se sozinha.
Depois de enviar, o Odoo pergunta pelo estado até 5 vezes, com 2 segundos de intervalo. Com muitas faturas enviadas de uma vez, esses pedidos também contam para o limite de estado.

Como evitar o 429
Uma fatura com o erro «Too Many Requests» não tem estado KSeF, porque o KSeF não aceitou o pedido, pelo que volta às faturas por enviar e não há risco de chegar duas vezes ao KSeF. Envie as faturas em lotes mais pequenos e não clique repetidamente em reenviar. Se atingir com frequência os limites de envio da sessão interativa, o Ministério das Finanças aconselha a pensar primeiro no modo por lotes e, se a sessão interativa for imprescindível, a escrever ao suporte do KSeF. O Odoo só envia faturas em sessão interativa. O nosso módulo, Poland KSeF 2.0 Validator, não faz pedidos ao KSeF, pelo que não gasta estes limites; com a subscrição, a sua validação do FA(3) passa para o FlexigoTech Cloud.
Um 403 security-service-blocked resolve-se sozinho?
A documentação apenas diz que o pedido foi bloqueado pelos mecanismos de segurança. Se se repetir com dados corretos, avise o suporte do KSeF.
Continue a ler
Verificado nas fontes indicadas
Fontes
- 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
