| Kiedy się pojawia | Co zrobić | |
|---|---|---|
| 21301 | Pobieranie lub odświeżanie tokenów | Sprawdzić status logowania, nie pobierać tokenów drugi raz |
| 21304 | Pytanie o nieznaną operację logowania | Sprawdzić numer referencyjny i środowisko |
| 401 | Operacja bez ważnego access tokena | Odświeżyć token albo zalogować się ponownie |
| 403 | Operacja bez uprawnienia | Nadać uprawnienie i pobrać nowy token |
KSeF 21301 i 21304: brak autoryzacji, brak uwierzytelnienia oraz błędy 401 i 403
Kody 21301 i 21304 w KSeF dotyczą tokenów przy logowaniu, a 401 i 403 dostępu do operacji. Wyjaśniam każdy przypadek według dokumentacji API i co zrobić.
„Brak autoryzacji” i „brak uwierzytelnienia” brzmią jak synonimy, a w API KSeF oznaczają konkretne, różne sytuacje. Oba komunikaty to kody wyjątków zwracane razem z odpowiedzią HTTP 400 przy pobieraniu lub odświeżaniu tokenów: 21301 i 21304. Osobno istnieją odpowiedzi HTTP 401 i 403 przy zwykłych operacjach, jak wysyłka czy pobieranie faktur. Poniżej rozdzielam te cztery przypadki według dokumentacji API KSeF 2.0.
21301 brak autoryzacji: cztery przyczyny z dokumentacji
- Tokeny dla operacji uwierzytelniania zostały już pobrane. Access token i refresh token można odebrać dla danego logowania tylko raz. Program, który próbuje zrobić to drugi raz (np. po restarcie w połowie procesu), dostaje 21301.
- Status uwierzytelniania nie pozwala na pobranie tokenów. Logowanie jeszcze się nie zakończyło albo zakończyło się błędem. Najpierw trzeba odczytać status uwierzytelnienia, opisany w tekście o błędzie uwierzytelnienia.
- Status uwierzytelniania nie pozwala na odświeżenie tokenu dostępowego. Uwierzytelnienie zostało unieważnione, więc refresh token nie zadziała.
- Token KSeF został unieważniony. Ktoś wyłączył token albo stracił on ważność. Więcej w tekście o tokenie KSeF.
21304 brak uwierzytelnienia: KSeF nie zna tej operacji
Dokumentacja opisuje go jednym zdaniem: operacja uwierzytelniania o podanym numerze referencyjnym nie została znaleziona. W praktyce program pyta o status albo tokeny dla numeru, którego KSeF nie ma. Najczęściej to numer z innego środowiska (test zamiast produkcji, patrz środowisko testowe KSeF), literówka w konfiguracji albo numer z bardzo starego logowania.
HTTP 401: brak ważnego access tokena
Przy zwykłych operacjach, jak otwarcie sesji czy pobranie faktury, KSeF oczekuje access tokena w nagłówku Authorization. Gdy go brakuje albo minął jego czas z pola exp, odpowiedź to 401 Unauthorized. Access token żyje krótko, zwykle kilkanaście minut, a refresh token pozwala go odnawiać do 7 dni. Integracja, która nie odświeża tokena, przestaje działać po kilkunastu minutach. Taka, która nie loguje się ponownie po wygaśnięciu refresh tokena, przestaje działać po tygodniu.
HTTP 403: brak uprawnienia do operacji
Odpowiedź 403 Forbidden oznacza, że token jest ważny, ale osoba lub podmiot nie ma uprawnienia do tej operacji w danym kontekście. W KSeF 2.0 uprawnienia są rozdzielone: wystawianie faktur to InvoiceWrite, przeglądanie i pobieranie to InvoiceRead, zarządzanie uprawnieniami to CredentialsManage. Program z samym InvoiceWrite wyśle sprzedaż, ale nie pobierze faktur kosztowych. Dokumentacja dodaje, że access token zostaje ważny do daty exp nawet po zmianie uprawnień, więc nowe uprawnienie zadziała dopiero z nowym tokenem.
Kolejność działań przy 403
- 1.Sprawdź, w jakim kontekście (NIP) program się zalogował.
- 2.Pobierz listę własnych uprawnień w tym kontekście, API ma do tego osobny endpoint.
- 3.Poproś właściciela lub administratora o brakujące uprawnienie, zgodnie z opisem w tekście o nadawaniu uprawnień.
- 4.Zaloguj się ponownie albo poczekaj na odświeżenie tokena.
Źródło: uwierzytelnianie i tokeny w dokumentacji API KSeF 2.0.
›Dlaczego integracja przestaje działać dokładnie po tygodniu?
Refresh token jest ważny do 7 dni. Po tym czasie program musi przejść pełne uwierzytelnienie, a jeśli tego nie robi, każde żądanie kończy się 401.
›Czy 21301 oznacza, że firma nie ma dostępu do KSeF?
Nie. To komunikat z procesu pobierania tokenów, najczęściej przy drugiej próbie odebrania tych samych tokenów albo przy nieudanym logowaniu. Pełną mapę kodów masz w tekście o błędach KSeF.
›Biuro rachunkowe dostaje 403 przy pobieraniu faktur klienta. Dlaczego?
Klient nie nadał biuru uprawnienia InvoiceRead w swoim kontekście. Opisuję to w tekście o uprawnieniach dla biura rachunkowego. Samo pobieranie można zautomatyzować, jak w usłudze faktury kosztowe z KSeF.
Chcesz przegadać swój projekt?
Odpowiadam osobiście w ciągu 24h w dni robocze — bez handlowca po drodze.