Quando Odoo accede
Odoo si autentica in due momenti: quando salvi nelle impostazioni il certificato KSeF con la sua chiave privata e nell'azione pianificata «Refresh KSeF tokens», che ripete l'accesso completo ogni 6 giorni. Il contesto è il NIP dell'azienda, quindi la partita IVA dell'azienda deve iniziare con PL. La sfida (challenge) di KSeF è valida 10 minuti.

POST /auth/xades-signature.I codici e i loro testi
| Codice | Testo di KSeF |
|---|---|
| 9101 | «Nieprawidłowy dokument.» (documento non valido) |
| 9102 | «Brak podpisu.» (firma mancante) |
| 9103 | «Przekroczona liczba dozwolonych podpisów.» (troppe firme) |
| 9105 | «Nieprawidłowy podpis.» (firma non valida) |
| 21111 | «Nieprawidłowe wyzwanie autoryzacyjne.» (sfida di autorizzazione non valida) |
| 21115 | «Nieprawidłowy certyfikat.» (certificato non valido) |
| 21117 | «Nieprawidłowy identyfikator podmiotu dla wskazanego typu kontekstu.» (identificativo del soggetto non valido per il tipo di contesto indicato) |
| 21217 | «Nieprawidłowe kodowanie znaków.» (codifica dei caratteri non valida) |
| 21401 | «Dokument nie jest zgodny ze schemą (xsd).» Qui si tratta dell'XML di accesso, non della fattura. |
| 21406 | «Konflikt podpisu i typu uwierzytelnienia.» (conflitto tra firma e tipo di autenticazione) |
| 460 | «Uwierzytelnianie zakończone niepowodzeniem z powodu błędu certyfikatu», con details: «Nieważny certyfikat», «Błąd weryfikacji łańcucha certyfikatów», «Niezaufany łańcuch certyfikatów», «Certyfikat odwołany», «Certyfikat zawieszony» o «Niepoprawny certyfikat» (scaduto, errore di catena, catena non attendibile, revocato, sospeso, non corretto). |
I primi dieci arrivano subito, come risposta HTTP 400 alla firma. Lo stato 460 arriva dopo, quando si consulta lo stato dell'accesso. Attenzione alla specifica stessa: gli esempi di quella richiesta danno, per gli stessi motivi, il codice 400 con la descrizione «Uwierzytelnianie zakończone niepowodzeniem», mentre la sua tabella degli stati riporta 460. Conta più il testo di details che il numero.
Ciò che Odoo non mostra
Se la firma fallisce, Odoo scrive «Failed to authenticate with XAdES:» seguito dal testo dell'eccezione della libreria requests, del tipo «400 Client Error: Bad Request for url: …/auth/xades-signature». Il codice della tabella non arriva allo schermo: Odoo prende il corpo della risposta solo quando l'oggetto risposta è «vero», e in requests una risposta con codice da 400 a 599 è falsa. Lo stesso accade richiedendo la sfida, consultando lo stato e riscattando i token.
Con lo stato 460, Odoo scrive «KSeF Authentication failed with status 460: …» con la descrizione e senza i details (in polacco nella 18 e nella 19: «Uwierzytelnianie KSeF nie powiodło się z kodem błędu 460: …»).
Se il rinnovo ogni 6 giorni fallisce, lascia traccia solo nel log del server. Il token di refresh di KSeF dura fino a 7 giorni; dopodiché l'invio termina con «Failed to refresh KSeF access token. You may need to re-authenticate manually.».
L'elenco delle credenziali del nostro modulo

Poland KSeF 2.0 Validator ha in KSeF › Configuration › Credentials un elenco di certificati KSeF, token, sigilli e firme qualificate con i giorni che restano: in arancione con 30 giorni o meno e in rosso se già scaduti. La data di scadenza la inserisce chi crea la voce. Il modulo non legge il certificato dalle impostazioni di Odoo né il suo stato in KSeF, quindi non segnalerà un certificato revocato o sospeso.
Cosa fare
- Verifica nelle impostazioni che il record scelto sia un certificato KSeF con la sua chiave privata.
- Controlla le date di validità e se il certificato è revocato o sospeso in KSeF.
- Verifica che la partita IVA dell'azienda inizi con PL ed è il NIP per cui è stato emesso il certificato.
- Salva di nuovo il certificato nelle impostazioni. Se l'errore ritorna e in Odoo vedi solo «400 Client Error», chiedi di leggere la risposta di KSeF con il suo codice.
Continua a leggere
Verificato nel codice del modulo (versione 20.0) e nelle fonti collegate
Fonti
- Codice del modulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): i18n/pl.po
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/uwierzytelnianie.
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- 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/psf/requests/blob/v2.32.5/src/requests/models.py#L730
- 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/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/uwierzytelnianie.
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/tool
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- Codice del modulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/ksef_credential_views.xml
- Codice del modulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_credential.py
