Limite de requêtes : 429
Au-delà de la limite, KSeF répond HTTP 429 « Too Many Requests » avec un en-tête Retry-After et bloque l'accès à l'API pendant le délai indiqué. Exemple de la documentation : « Przekroczono limit 20 żądań na minutę. Spróbuj ponownie po 30 sekundach. » (limite de 20 requêtes par minute dépassée ; réessayez dans 30 secondes). Les limites se comptent par seconde, par minute et par heure. Les limites plus élevées entre 20:00 et 06:00 ne concernent que le téléchargement et leurs valeurs n'ont pas encore été publiées ; l'envoi de factures ne bénéficie d'aucune hausse de nuit.
Ce qui compte le plus lors d'un envoi depuis Odoo :
- envoi d'une facture : 10 par seconde, 30 par minute, 180 par heure ;
- ouverture d'une session interactive : 10, 30 et 120 ;
- statut d'une facture dans la session : 30, 120 et 1 200 ;
- les autres requêtes : 10, 30 et 120.

Accès refusé : le 403 et son reasonCode
| reasonCode | Texte de KSeF |
|---|---|
| missing-permissions | « Brak wymaganych uprawnień do wykonania operacji w bieżącym kontekście. » (droits manquants dans le contexte actuel) |
| ip-not-allowed | « Żądanie pochodzi z adresu IP innego niż wskazany podczas uwierzytelnienia. » (requête provenant d'une autre IP que celle indiquée lors de la connexion) |
| insufficient-resource-access | « Brak dostępu do wskazanego zasobu. » (pas d'accès à cette ressource) |
| auth-method-not-allowed | « Ta operacja nie jest dostępna dla użytej metody uwierzytelnienia. » (non disponible avec cette méthode d'authentification) |
| security-service-blocked | « Żądanie zostało zablokowane przez mechanizmy bezpieczeństwa. » (bloquée par les mécanismes de sécurité) |
| context-type-not-allowed | « Operacja nie jest dostępna dla uwierzytelnionego typu kontekstu. » (non disponible pour ce type de contexte) |
Les réponses 401 et 403 arrivent au format Problem Details, et les 400 et 429 peuvent aussi l'utiliser si le programme envoie l'en-tête X-Error-Format: problem-details. Odoo ne l'envoie pas.
Ce que font Odoo 18, 19 et 20
Face à un 401, Odoo rafraîchit le jeton d'accès et répète la requête une fois. Face à un 403, il affiche « KSeF API Error: » suivi du corps de la réponse, de sorte que le reasonCode apparaît dans le message. Face à un 429, il lève l'erreur « Too Many Requests » :
- à l'envoi, la facture reçoit cette erreur et reste sans statut KSeF, et Retry-After n'est pas pris en compte : renvoyez-la un peu plus tard ;
- le téléchargement des factures fournisseurs, effectué par Odoo toutes les 3 heures, lit Retry-After et se reprogramme automatiquement.
Après l'envoi, Odoo demande le statut jusqu'à 5 fois, à 2 secondes d'intervalle. Lorsque beaucoup de factures partent en même temps, ces requêtes comptent aussi pour la limite de statut.

Comment éviter le 429
Une facture ayant reçu l'erreur « Too Many Requests » n'a pas de statut KSeF, car KSeF n'a pas accepté la requête : elle revient donc parmi les factures à envoyer, et il n'y a aucun risque qu'elle parvienne deux fois à KSeF. Envoyez les factures par lots plus petits et ne cliquez pas en rafale sur renvoyer. Si vous atteignez souvent les limites d'envoi de la session interactive, le ministère des Finances conseille d'envisager d'abord le mode par lots et, si la session interactive est indispensable, de contacter le support de KSeF. Odoo n'envoie des factures qu'en session interactive. Notre module, Poland KSeF 2.0 Validator, n'effectue aucune requête vers KSeF et ne consomme donc pas ces limites ; avec l'abonnement, sa validation du FA(3) est assurée par FlexigoTech Cloud.
Un 403 security-service-blocked se résout-il tout seul ?
La documentation indique seulement que la requête a été bloquée par les mécanismes de sécurité. Si cela se reproduit avec des données correctes, signalez-le au support de KSeF.
À lire aussi
Vérifié dans les sources citées
Sources
- 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
