Qué significa cada estado
- 415
- «Uwierzytelnianie zakończone niepowodzeniem» (autenticación fallida), details «Brak przypisanych uprawnień» (sin permisos asignados): la persona o entidad del certificado no tiene ningún permiso en el contexto de ese NIP.
- 425
- «Uwierzytelnienie unieważnione» (autenticación revocada), details «Uwierzytelnienie i powiązane refresh tokeny zostały unieważnione przez użytkownika»: alguien cerró esa sesión.
- 450
- «Uwierzytelnianie zakończone niepowodzeniem z powodu błędnego tokenu» (fallida por un token erróneo), con details como «Token unieważniony», «Token nieaktywny», «Nieprawidłowy czas tokena» o «Token nie może być użyty w kontekście {contextIdentifier}»: va del inicio de sesión con token KSeF.
- 470
- «Uwierzytelnianie zakończone niepowodzeniem», details «Próba wykorzystania metod autoryzacyjnych osoby zmarłej» (intento de usar las credenciales de una persona fallecida).
- 480
- «Uwierzytelnienie zablokowane» (autenticación bloqueada), details «Podejrzenie incydentu bezpieczeństwa. Skontaktuj się z Ministerstwem Finansów przez formularz zgłoszeniowy.» (sospecha de incidente de seguridad; contacta con el Ministerio por su formulario).
- 500 y 550
- «Nieznany błąd» (error desconocido) y «Operacja została anulowana przez system» (anulada por el sistema), con details «Przetwarzanie zostało przerwane z przyczyn wewnętrznych systemu. Spróbuj ponownie» (proceso interrumpido por causas internas; inténtalo de nuevo).

Tokens KSeF y Odoo
Odoo 18, 19 y 20 tienen en su código una función para iniciar sesión con un token KSeF, pero nada la llama: solo inician sesión con el certificado. Así que un 450 en el inicio de sesión no sale de Odoo. Si lo ves, viene de otro programa que usa un token, como el de una asesoría. KSeF revoca los tokens automáticamente cuando su titular pierde los permisos.
Con los demás estados, Odoo enseña «KSeF Authentication failed with status …: …» con la descripción y sin los details. En el 415 y el 470 la descripción es la misma, así que solo el campo details los distingue.
Tokens de acceso, refresco y códigos 21301 y 21304
| Elemento | KSeF | Odoo 18, 19 y 20 |
|---|---|---|
| accessToken | Vale unos pocos minutos («kilkanaście», dice la documentación), los que marque su campo exp | Tras un HTTP 401 lo refresca y repite la petición una vez. |
| refreshToken | Hasta 7 días | La acción planificada «Refresh KSeF tokens» vuelve a iniciar sesión con el certificado cada 6 días. |
| 21301 «Brak autoryzacji.» (sin autorización) | Al canjear o refrescar tokens, por ejemplo «Token KSeF został unieważniony.» (token KSeF revocado) | Ves «Failed to refresh KSeF access token. You may need to re-authenticate manually. Error: 400 Client Error…», sin el código. |
| 21304 «Brak uwierzytelnienia.» (sin autenticación) | «Operacja uwierzytelniania o numerze referencyjnym {referenceNumber} nie została znaleziona.» | Igual: el código no llega a la pantalla. |

Qué hacer
- 415, o 21301 tras retirar permisos: el propietario de la empresa da permisos en KSeF a la persona del certificado y tú vuelves a guardar el certificado en los ajustes de Odoo.
- 425: alguien revocó la sesión; vuelve a guardar el certificado para que Odoo inicie sesión de nuevo.
- 480: haz lo que dice KSeF y contacta con el Ministerio de Finanzas por su formulario; repetir el inicio de sesión no sirve.
- 500 o 550: vuelve a intentarlo.
Nuestro módulo, Poland KSeF 2.0 Validator, lleva una lista de certificados y tokens KSeF con sus fechas de caducidad, pero no inicia sesión en KSeF y no ve estos estados.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/uwierzytelnianie.
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/uwierzytelnianie.
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/i18n
- 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
- 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/tool
- github.com/psf/requests/blob/v2.32.5/src/requests/models.py#L730
- Código del módulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_credential.py
