Przejdź do głównej treści
KSeF 2.0 · uwierzytelnianie

Logowanie certyfikatem do KSeF: kod 460 i błędy podpisu XAdES

Odoo 18, 19 i 20 łączy się z KSeF wyłącznie certyfikatem KSeF: podpisuje wyzwanie podpisem XAdES i wysyła je do POST /auth/xades-signature. Jeśli coś jest nie tak z certyfikatem albo podpisem, KSeF odpowiada jednym z jedenastu kodów z tej strony, ale Odoo zwykle pokazuje z nich niewiele.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 5 listopada 2026

Najważniejsze

Moduł
KSeF 2.0
Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym modułu, wersja 20.0 · w źródłach podanych na końcu
Czas czytania
2 min

Kiedy Odoo się loguje

Odoo uwierzytelnia się w dwóch momentach: gdy zapisujesz certyfikat KSeF z kluczem prywatnym w ustawieniach i w zaplanowanej akcji „Refresh KSeF tokens”, która co 6 dni powtarza pełne logowanie. Kontekstem jest NIP firmy, więc numer VAT firmy musi zaczynać się od PL. Wyzwanie (challenge) z KSeF jest ważne 10 minut.

Karta kodu 460 KSeF z wyjątkami podpisu XAdES
Kod 460 i dziesięć wyjątków, które zwraca POST /auth/xades-signature.

Kody i ich teksty

KodTekst KSeF
9101„Nieprawidłowy dokument.”
9102„Brak podpisu.”
9103„Przekroczona liczba dozwolonych podpisów.”
9105„Nieprawidłowy podpis.”
21111„Nieprawidłowe wyzwanie autoryzacyjne.”
21115„Nieprawidłowy certyfikat.”
21117„Nieprawidłowy identyfikator podmiotu dla wskazanego typu kontekstu.”
21217„Nieprawidłowe kodowanie znaków.”
21401„Dokument nie jest zgodny ze schemą (xsd).” Tu chodzi o XML logowania, nie o fakturę.
21406„Konflikt podpisu i typu uwierzytelnienia.”
460„Uwierzytelnianie zakończone niepowodzeniem z powodu błędu certyfikatu”, z details: „Nieważny certyfikat”, „Błąd weryfikacji łańcucha certyfikatów”, „Niezaufany łańcuch certyfikatów”, „Certyfikat odwołany”, „Certyfikat zawieszony” albo „Niepoprawny certyfikat”.

Pierwszych dziesięć przychodzi od razu, jako odpowiedź HTTP 400 na podpis. Status 460 przychodzi później, przy sprawdzaniu stanu logowania. Uwaga na samą specyfikację: przykłady odpowiedzi tego zapytania pokazują dla tych samych przyczyn kod 400 z opisem „Uwierzytelnianie zakończone niepowodzeniem”, a tabela statusów podaje 460. Dlatego ważniejsza od numeru jest treść details.

Czego Odoo nie pokaże

Przy błędzie podpisu Odoo pisze „Failed to authenticate with XAdES:”, a potem tekst wyjątku z biblioteki requests, w rodzaju „400 Client Error: Bad Request for url: …/auth/xades-signature”. Kod z tabeli nie trafia na ekran: Odoo bierze treść odpowiedzi tylko wtedy, gdy obiekt odpowiedzi jest „prawdziwy”, a w requests odpowiedź z kodem od 400 do 599 jest fałszywa. Tak samo działa przy pobieraniu wyzwania, sprawdzaniu stanu i odbiorze tokenów.

Przy statusie 460 Odoo pisze „KSeF Authentication failed with status 460: …” z opisem, bez details (w 18 i 19 po polsku: „Uwierzytelnianie KSeF nie powiodło się z kodem błędu 460: …”).

Odnowienie co 6 dni, gdy się nie uda, zostawia ślad tylko w logu serwera. Token odświeżania KSeF działa do 7 dni, a potem wysyłka kończy się komunikatem „Failed to refresh KSeF access token. You may need to re-authenticate manually.”.

Lista danych uwierzytelniających w naszym module

Lista danych uwierzytelniających KSeF w module, z dwoma wierszami na pomarańczowo
Zrzut z danymi demonstracyjnymi: dwie pozycje są pomarańczowe, bo wygasają za mniej niż 30 dni.

Poland KSeF 2.0 Validator ma w KSeF › Configuration › Credentials (w polskim tłumaczeniu modułu „Poświadczenia”) listę certyfikatów KSeF, tokenów, pieczęci i podpisów kwalifikowanych z liczbą dni do wygaśnięcia: pomarańczowe, gdy zostało 30 dni lub mniej, czerwone po terminie. Datę ważności wpisuje osoba, która dodaje pozycję. Moduł nie czyta certyfikatu z ustawień Odoo ani stanu w KSeF, więc certyfikatu odwołanego albo zawieszonego nie oznaczy.

Co zrobić

  1. Sprawdź w ustawieniach, czy wybrany rekord to certyfikat KSeF z kluczem prywatnym.
  2. Sprawdź daty ważności i to, czy certyfikat nie jest odwołany albo zawieszony w KSeF.
  3. Sprawdź, czy numer VAT firmy zaczyna się od PL i jest NIP-em, dla którego wystawiono certyfikat.
  4. Zapisz certyfikat w ustawieniach jeszcze raz. Jeśli błąd wraca, a w Odoo widzisz tylko „400 Client Error”, poproś o odczyt odpowiedzi KSeF z kodem.

Czytaj dalej

Statusy uwierzytelniania KSeF: 415, 425, 450, 470 i 480Statusy logowania do KSeF 2.0 poza certyfikatem: brak uprawnień, unieważnienie, zły token, blokada. Kody 21301 i 21304 i jak to wygląda w Odoo 18-20.Kody 410 i 415 w KSeF: uprawnienia sprzedawcy i załącznikiKod 410 „Nieprawidłowy zakres uprawnień” i 415 „Brak możliwości wysyłania faktury z załącznikiem”: co je wywołuje według testów MF i co sprawdzić w Odoo 18, 19 i 20.KSeF HTTP 429, 403 i 401: limity zapytań i odmowa dostępuKSeF 2.0: 429 Too Many Requests po przekroczeniu limitu, 403 z reasonCode przy braku dostępu, 401 przy wygasłym tokenie. Limity i co robi Odoo 18, 19 i 20.
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach

Źródła