“Błąd weryfikacji, brak poprawnych faktur” w wysyłce KSeF – co robić, kiedy Optima raportuje błąd, a faktury i tak trafiają do KSeF

Jeden z najbardziej frustrujących scenariuszy, jaki może się zdarzyć przy wysyłce do KSeF w Comarch ERP Optima wygląda tak: wysyłasz zbiorczo 150 faktur, dostajesz komunikat “Błąd weryfikacji, brak poprawnych faktur”, ponawiasz – ten sam komunikat, a licznik punktów w pakiecie KSeF spada. Wysyłasz pojedynczo – dostajesz “Duplikat faktury. Faktura o numerze KSeF… została już prawidłowo przesłana do systemu”. Pokażemy, co się dzieje pod spód, jak to poprawnie odbaćwać i jak odzyskać punkty niesprawiedliwie zdjęte z puli.

Dlaczego dostajesz “Błąd weryfikacji, brak poprawnych faktur” mimo że faktury są poprawne

Ten komunikat w praktyce oznacza, że sesja wysyłki została przetworzona po stronie KSeF, ale odpowiedź zwrotna nie trafiła poprawnie do Optimy – albo Optima nie umiała jej poprawnie zinterpretować. Powodów może być kilka: błąd po stronie serwerów KSeF (podniesiona latencja, chwilowa niezgodność schemy), zmiany w walidacji KSeF od 1.08, które nie zostały jeszcze pokryte w Twojej wersji Optimy, albo błąd parsowania odpowiedzi zwrotnej w konkretnej wersji programu. Kluczowe, co pokazuje komunikat o duplikacie: faktura z numerem KSeF 9160002136-20260731-...-2F została już prawidłowo przesłana w sesji 20260731-SB-... – czyli KSeF ją zarejestrował i nadał jej numer identyfikacyjny. Optima natomiast raportowała “błąd weryfikacji” i zdjęła punkty z puli.

Krok po kroku – jak to odbaćwać

Krok 1 – najpierw sprawdź status faktur w module KSeF, ZANIM ponowisz wysyłkę

Wejdź w menu główne KSeF → Sesja KSeF lub odpowiedni widok listy dokumentów wysłanych do KSeF. Sprawdź, czy Twoje 150 faktur ma nadany numer KSeF (kolumna z ID KSeF). Jeśli tak – to znaczy, że są fizycznie w KSeF, a “błąd weryfikacji” był tylko błędem odczytu odpowiedzi. Nie wysyłaj ich ponownie, bo dostaniesz duplikaty i tylko zaśmiecisz KSeF.

<screen>

Krok 2 – podnieś Optimę do wersji 2026.5.1

Jeśli masz obecnie wpisaną pulę KSeF, działasz na wersji co najmniej 2026.4.1 – to wystarczy do korzystania z pakietu, ale nie zawiera wszystkich świeżych poprawek do walidacji KSeF po 1.08. Wersja 2026.5.1 zawiera pakiet ważnych poprawek dotyczących właśnie sesji KSeF, obsługi odpowiedzi zwrotnej i walidacji dokumentów. Aktualizację wykonaj przez Menadżera Instalacji Comarch ERP – pamiętaj o kopii bazy przed update i o oknie serwisowym. Po aktualizacji zweryfikuj wersję w Pomoc → O programie.

Krok 3 – test na jednej nowej fakturze po aktualizacji

Zanim wrócisz do wysyłek zbiorczych, wystaw jedną nową fakture testową i wyślij ją pojedynczo do KSeF. Sprawdź, czy dostaniesz status “Zakolejkowana → Wysłana → Zaakceptowana z numerem KSeF”. Jeśli tak – wysyłka działa poprawnie na 2026.5.1 i możesz wracać do rutynowej pracy. Jeśli test nadal daje błąd – masz sygnał, że to nie był problem samej wersji, tylko potencjalny problem z konfiguracją firmy / środowiskiem / uprawnieniami operatora KSeF.

Krok 4 – domknij sprawę tych 150 faktur, które “utknęły”

Dla faktur, które w Kroku 1 pokazały już numer KSeF – nic nie rób, zostały prawidłowo zarejestrowane. W Optimie ręcznie zaktualizuj status wysyłki na fakturach (jeśli program tego nie zrobił sam po update do 2026.5.1) – w wielu przypadkach nowa wersja po synchronizacji automatycznie “dopasuje” statusy z KSeF. Dla faktur bez numeru KSeF – wystaw je ponownie w Optimie z flażą do wysyłki i wyślij normalną ścieżką.

<screen>

Krok 5 – zgłoś sprawa niesprawiedliwie zdjętych punktów KSeF do Asysty Comarch

Każda próba wysyłki, która zakończyła się komunikatem “błąd weryfikacji”, a faktycznie faktury trafiły do KSeF – to podstawa do zgłoszenia w Asyście Comarch. Otwórz zgłoszenie, opisz sytuację, podaj identyfikator sesji z komunikatu duplikatu (np. 20260731-SB-2BE41C2003-C0D454DAFD-24) i załącz logi sesji z Twojej instalacji. Na tej podstawie Comarch zwraca punkty do puli pakietu KSeF. Nie licz na automatyczny zwrot – trzeba zgłosić.

Dlaczego warto być zawsze na aktualnej wersji Optimy przy KSeF

Wysyłka do KSeF od 1.08 działa według nowych reguł walidacji, które Ministerstwo Finansów wprowadziło w kolejnych falach. Każda wersja Optimy przynosi poprawki dopasowujące się do tych reguł – i nie ma bezpiecznego “pomijania” wersji, jeśli faktury muszą trafiać do KSeF na bieżąco. Firmy, które zostają na 2026.4.1, dostają dokładnie takie problemy: częściowe wysyłki, punkty znikające z puli mimo błędu i konieczność domykania sprawy przez Asystę. Wersja 2026.5.1 nie jest wersją “kosmetyczną” – to release z pakietem poprawek do samej wysyłki.

Perspektywa ELTE-S

Jeśli obsługujesz w Optimie dużą liczbę dokumentów do KSeF (setki miesięcznie i więcej), rekomendujemy dwie rzeczy. Pierwsza – zbudować procedurę aktualizacji Optimy w oknie serwisowym, uruchamianą w tym samym tygodniu, w którym Comarch wydaje nowy patch KSeF. Opóźnianie update o kilka tygodni to dokładnie ten scenariusz, który generuje 150 zawieszonych faktur w środę wieczorem. Druga – wprowadż monitoring pakietu KSeF (ktoś, kto codziennie sprawdza stan pakietu, statusy sesji i alertuje, jeśli licznik punktów spada szybciej niż liczba faktycznych wysyłek). W ten sposób problem z niesprawiedliwie zdejmowanymi punktami łapiesz w dzień, w którym się wydarzył, a nie po miesiącu przy zamknięciu okresu, kiedy odzyskanie punktów przez Asystę zajmuje trzy razy tyle czasu.

Porozmawiajmy o uporządkowaniu procesu wysyłki KSeF i update Optimy w Twojej firmie.

Aktywacja KSeF w Comarch ERP Optima – PIN, numer klucza, numer klienta, gdzie wpisać i jak sprawdzić status

Zakup KSeF w Comarch odbywa się na kluczu licencyjnym – dostajesz PIN, numer klucza i numer klienta, i często to jedyne dokumenty, które trafiają do Ciebie mailem. Pytanie, które na tym etapie zadaje sobie większość użytkowników: gdzie ja to mam wpisać w Optimie i jak poznam, że KSeF w ogóle zadziałał?. Odpowiedź jest dwuczęściowa – najpierw aktywujesz licencję na kluczu w Menadżerze Kluczy, potem w samej Optimie podpinasz numer klucza pod dane firmy i weryfikujesz stan pakietu.

Do czego służą PIN, numer klucza i numer klienta

Te trzy dane to Twoje uprawnienia do aktywacji licencji KSeF na kluczu HASP – dokładnie tak samo jak przy aktywowaniu każdego innego modułu Comarch. Nie wpisujesz ich bezpośrednio do Optimy – one służą do wygenerowania i zaciągnięcia pliku licencji (typowo .RUS) na kluczu HASP wpiętym do serwera. Po tej operacji na Twoim kluczu “siedzi” wykupiony pakiet KSeF (np. na 100 dokumentów) i Optima będzie mogła z niego korzystać. Bez tego kroku – nawet jeśli wpiszesz numer klucza w Optimie, Optima nie znajdzie pasującej licencji na HASP i wysyłka do KSeF nie ruszy.

Krok po kroku – jak aktywować pakiet KSeF w Optimie

Krok 1 – aktywuj licencję KSeF w Menadżerze Kluczy

Na serwerze z kluczem HASP uruchom Menadżer Kluczy (Comarch ERP Menadżer Kluczy). Wybierz opcję aktualizacji licencji, użyj PIN, numeru klucza i numeru klienta (te dane dostałeś po zakupie), pobierz plik licencji .RUS i wgraj go do Menadżera Kluczy. Po zakończeniu aktualizacji na liście licencji klucza HASP powinien pojawić się pakiet KSeF z liczbą dokumentów do wykorzystania.

<screen>

Krok 2 – wpisz numer klucza KSeF w Optimie

Zaloguj się do Optimy i wejdź w Konfiguracja → Firma → Dane Firmy → KSeF. W polu Numer klucza KSeF wpisz numer klucza z aktywowanej licencji (ten sam numer, który widziałeś w Menadżerze Kluczy po aktywacji). Zapisz konfigurację. To jest krok, który mówi Optimie: “licencja KSeF, której ta baza ma używać, siedzi na tym konkretnym kluczu”.

<screen>

Krok 3 – sprawdź, czy KSeF jest aktywny

Aktywność pakietu KSeF weryfikujesz w dwóch miejscach. Pierwsze – menu główne KSeF → Pakiet KSeF – tam zobaczysz stan pozostałych dokumentów w pakiecie (np. “96 z 100”). Drugie – próba wystawienia i wysłania testowej faktury – jeśli licencja jest aktywna, Optima połączy się z KSeF i zwróci status wysyłki. Jeśli licencja nie jest aktywna, przy próbie wysyłki dostaniesz komunikat o braku licencji lub o braku klucza.

<screen>

Krok 4 – zweryfikuj poprawność danych firmy w konfiguracji KSeF

W Konfiguracja → Firma → Dane Firmy → KSeF oprocz numeru klucza sprawdź, czy są poprawnie ustawione NIP firmy, środowisko (Demo lub Produkcja – to musi być to samo, na które został wygenerowany token operatora KSeF) oraz dane autoryzacyjne operatora KSeF. Niespójność między środowiskiem tokena a środowiskiem konfiguracji to najczęstsza przyczyna błędu 401 przy pierwszej wysyłce po aktywacji.

<screen>

Kiedy pakiet KSeF się skończy – co zobaczysz

Wykupiony pakiet ma z góry określoną liczbę dokumentów (np. 100 na miesiąc). Każda faktura wysłana do KSeF zmniejsza licznik o 1. Kiedy pakiet się wyczerpie, przy próbie kolejnej wysyłki Optima pokaże komunikat o braku dostępnych dokumentów w pakiecie i wysyłka się nie powiedzie. Żeby uzupełnić pakiet, musisz dokupić kolejny cykl (od Comarch lub partnera) i powtórzyć kroki z aktywacją licencji w Menadżerze Kluczy – te same PIN/numer klucza/numer klienta dostaniesz na drugi cykl.

Perspektywa ELTE-S

Kupno KSeF w Optimie to schemat licencyjny, który ma dwa poziomy – klucz HASP (miejsce, gdzie żyje licencja) i konfiguracja bazy (miejsce, gdzie mówisz Optimie, której licencji ma używać). Wielu użytkowników utyka na tym, że robi jeden z dwóch kroków – wgra licencję na klucz, ale zapomni wpisać numeru klucza w Konfiguracji → Firma → Dane Firmy → KSeF, albo odwrotnie: wpisze numer, który “gdzieś widział”, nie aktywując licencji na kluczu. Praktyczna wskazówka: zaraz po zakupie zapisz sobie zestaw danych (PIN, numer klucza, numer klienta, data zakupu, ilość dokumentów w pakiecie, środowisko Demo/Prod) w wewnętrznej dokumentacji IT lub w bazie haseł. Przy kolejnym cyklu odnowienia będziesz mieć wszystko pod ręką i unikniesz sytuacji, w której fakturowanie stoi, bo ktoś zgubił maila z Comarch.

Porozmawiajmy o uporządkowaniu integracji KSeF w Twojej Optimie.

Zestawienie PPK w Comarch ERP Optima – jak wydrukować składki pracownika i pracodawcy bez dodatkowej nakładki

Raportowanie PPK w biurach kadrowych i firmach z własnym działem płac często zaczyna się od zego samego pytania: “czy żeby wydrukować zestawienie składek PPK muszę kupić dodatek Comarch PPK?”. Odpowiedź jest prosta – nie musisz. Comarch PPK to osobna aplikacja służąca do komunikacji z instytucją finansową obsługującą PPK (generowanie plików importowych, ewidencja umowa/rezygnacje, wysyłka danych do instytucji). Jeśli potrzebujesz wyłącznie raportu / wydruku pokazującego, ile zostało pobrane od pracownika i dopłacone przez pracodawcę – dane masz w standardowym module Kadry i Płace, wystarczy je wyciągnąć we właściwej formie.

Dlaczego zestawienie PPK da się zrobić bez aplikacji Comarch PPK

W Optimie składki PPK są elementem list płac – dokładnie takim samym jak składki ZUS, podatek czy inne potrącenia. Moduł Kadry i Płace zapisuje w bazie część podstawową pracownika, część dodatkową pracownika (jeśli zadeklarował), część podstawową pracodawcy i część dodatkową pracodawcy – i wszystko to jest dostępne w raportach już na standardowej licencji KiP. Aplikacja Comarch PPK dokłada do tego funkcje wymiany danych z instytucją finansową (plik XML w formacie instytucji, ewidencja przystąpień/rezygnacji, korekty przekazane instytucji itd.) – i tylko wtedy jest potrzebna, kiedy naprawdę chcesz tę komunikację zautomatyzować. Do samego raportowania jest zdecydowanie zbyt dużym młotkiem.

Dwa sposoby na zestawienie PPK w Optimie

Sposób 1 – indywidualny raport w formie wydruku PDF

To wersja “po księgowemu” – masz gotowy dokument, który możesz podpiąć pod listę płac, wysłać klientowi biura rachunkowego albo zarchiwizować. Bazujemy na module GenRap (dostępnym w Optimie w ramach standardowej licencji KiP), który pozwala zbudować wydruk pokazujący: pracownika, część pracownika (podstawową + ewentualnie dodatkową), część pracodawcy (podstawową + ewentualnie dodatkową) i sumę za wybrany miesiąc. Efekt: 1-stronicowy raport PDF z tabelą zestawiającą wszystkich pracowników firmy.

Sposób 2 – szybki raport w formie tabeli z eksportem do Excela

Wersja “po analityku” – jeśli chcesz danymi PPK dalej pracować (dołożyć sum kontrolnych, połączyć z innymi danymi kadrowymi, wygenerować wykres). Optima ma mechanizm szybkiego raportu – definiujesz zestaw kolumn (Pracownik, Składka pracownika, Składka pracodawcy, Miesiąc, Rok), filtry (np. tylko dana lista płac, tylko dana grupa pracowników) i wynik dostajesz od razu na ekranie jako tabelę. Jednym kliknięciem eksport do Excela i masz materiał do dalszej obróbki. Ten wariant jest szybszy do przygotowania i łatwiejszy do modyfikacji, kiedy klient zmieni wymagania (np. “a mogliśmy jeszcze dodać kolumnę z sumą narastająco od początku roku?”).

Krok po kroku – jak zrobić zestawienie PPK w Optimie

Krok 1 – upewnij się, że składki PPK są poprawnie ustawione

Składki PPK definiuje się w Konfiguracja → Firma → Płace → Składki PPK (procenty podstawowe, dodatkowe, dane instytucji finansowej). Zanim zaczniesz raportować, zweryfikuj, że wartości procentowe na listach płac za dany miesiąc są poprawne. Błąd w konfiguracji składek będzie widoczny na raporcie i zaburzy zestawienie.

<screen>

Krok 2 – wygeneruj listę płac za miesiąc z uwzględnieniem PPK

Przejdź do Kadry i Płace → Wypłaty → Wypłaty pracowników, wybierz odpowiedni okres i sprawdź, czy składki PPK zostały naliczone na wypłatach (kolumna “PPK – część pracownika” i “PPK – część pracodawcy” muszą mieć wartości). Bez tego kroku raport będzie pusty, nawet jeśli technicznie jest poprawnie skonfigurowany.

<screen>

Krok 3a – wersja z wydrukiem PDF (indywidualny raport GenRap)

Z listy wypłat użyj przycisku Wydruk danych (ikona drukarki lub CTRL+P) i w menu wydruków poszukaj pozycji związanej z PPK. Jeśli w standardowych szablonach Optimy nie ma dokładnie tego widoku, którego potrzebujesz – wejdź w Konfiguracja → Program → Użytkowe → Wydruki, sklonuj najbliższy standardowy szablon i zmodyfikuj go w GenRap (dodaj kolumny część pracownika + część pracodawcy, sumę, filtr po miesiącu). Zapisz jako wydruk użytkownika. Od tej pory generujesz PDF jednym kliknięciem.

<screen>

Krok 3b – wersja z szybkim raportem tabelarycznym

Z menu Widok → Szybki raport (lub odpowiadającej opcji w Twojej wersji Optimy) uruchom kreator szybkiego raportu na widoku wypłat. Wybierz kolumny: Pracownik, Składka PPK – część pracownika (podstawowa), Składka PPK – część pracodawcy (podstawowa) oraz ewentualnie dodatkowe. Ustaw filtr na miesiąc, który Cię interesuje. Uruchom raport, sprawdź wynik na ekranie i eksportuj do Excela przyciskiem Eksport do arkusza kalkulacyjnego.

<screen>

Krok 4 – zapisz konfigurację raportu do wielokrotnego użytku

Zarówno w wariancie GenRap, jak i w szybkim raporcie – zapisz swoją wersję jako wydruk użytkownika lub schemat szybkiego raportu, żeby nie budować go od zera co miesiąc. To mało intuicyjny krok, ale w praktyce oszczędza godziny w kolejnych okresach.

<screen>

Kiedy jednak warto rozważyć aplikację Comarch PPK

Comarch PPK ma sens wtedy, kiedy prowadzisz pełen cykl obsługi PPK w firmie, a nie tylko raportujesz składki. Konkretne sytuacje: duża liczba pracowników (kilkaset+) w PPK, potrzeba automatycznej wymiany plików z instytucją finansową (przystąpienia, rezygnacje, korekty), rozbudowana ewidencja wypowiedzenia deklaracji, obsługa wielu instytucji finansowych obsługujących PPK w jednej firmie. Wtedy indywidualne raporty w KiP stają się niewystarczające i Comarch PPK zwraca się czasem oszędnym w miesiącu. Dla “czystego” raportowania – to zdecydowanie za dużo.

Perspektywa ELTE-S

Zakup dodatkowej nakładki tylko po to, żeby wydrukować zestawienie składek PPK, to klasyczny przykład przepłaty za funkcję, którą Optima ma standardowo. Nasza rada: raz porządnie skonfigurujcie własny wydruk PPK w GenRap i schemat szybkiego raportu tabelarycznego dla działu płac – i traktujcie je jako standardowe narzędzia miesięcznego zamknięcia. To 2-3 godziny pracy specjalisty jednorazowo, które oszczędzają potem godziny w każdym kolejnym miesiącu. Do rozważenia Comarch PPK wracamy dopiero wtedy, kiedy firma dojrzewa do pełnej automatyzacji komunikacji z instytucją finansową – i wtedy dyskusja przestaje być o “raporcie za miesiąc”, a zaczyna o procesie obsługi PPK.

Porozmawiajmy o uporządkowaniu raportowania PPK i innych składek w Twojej Optimie.

Poprawki do Comarch ERP XL 2025.1.6 – skąd pobrać skrypty SQL naprawiające KSeF

Wersja 2025.1.6 Comarch ERP XL doczekała się zestawu poprawek, które nie zostały zaszyte w standardowym instalatorze – trzeba je pobrać oddzielnie i wgrać w bazie. Najczęściej pojawia się to w kontekście błędu powiązania użytkownika SQL wykorzystywanego przez XL do wysyłki do KSeF, który na tej wersji potrafi zablokować otwarcie sesji lub wysyłkę zbiorczą faktur. Składają się na to skrypty SQL do puszczenia w bazie firmowej. Poniżej gdzie je znajdziesz i jak bezpiecznie zaaplikować.

Gdzie są poprawki do 2025.1.6

Comarch udostępnia hotfixy do wersji 2025.1.6 przez usługę iBard – jest to dedykowany link do folderu z pakietem plików (skrypty .SQL, ewentualne pliki .DLL do modułu KSeF i plik z instrukcją/ReadMe). Aktualny odnośnik do pobrania:

https://www.ibard.com/d/ff77223d5c3c7e15f43173e1195064bc749088c9#/folder.

Otwierasz link w przeglądarce, pobierasz cały folder na serwer, na którym stoi baza XL (albo na maszynę administratora z dostępem do SQL Server).

Co konkretnie naprawiają skrypty w 2025.1.6

Gros poprawek dotyczy modułu KSeF. W kilku scenariuszach instalator 2025.1.6 nie ustawia poprawnie powiązania użytkownika SQL wykorzystywanego przez XL do komunikacji z KSeF – efektem są:

– błędy 401/400 przy otwarciu sesji KSeF i przy wysyłce zbiorczej (SendBatch, OpenBatchSessionAsync),

– rozbieżności w tabeli cdn.KSeFTokeny – “martwe” wpisy, których XL nie potrafi odnowić,

– brak zapisu UPO albo status faktury utykający na “wysłana” bez potwierdzenia,

– błędne uprawnienia użytkownika technicznego SQL, który ma pisać do tabel KSeF.

Skrypty korygują uprawnienia, sprzątają nieprawidłowe wpisy i przywracają poprawne mapowanie użytkownika SQL – operatora KSeF.

Krok po kroku – jak bezpiecznie wgrać poprawki

Krok 1 – pobierz pakiet z iBard

Otwórz link do folderu na iBard i pobierz wszystkie pliki (nie pojedyncze). W folderze powinny być skrypty .SQL, ewentualnie plik ReadMe z opisem i kolejnością wykonania. Zapisz je w lokalizacji dostępnej z SQL Server Management Studio.

Krok 2 – zrób pełny backup bazy firmowej

Zanim czegokolwiek dotkniesz, wykonaj backup FULL bazy firmowej XL (SSMS → prawy klik na bazę → Tasks → Back Up…). Alternatywa dla środowisk zwirtualizowanych: snapshot maszyny SQL Server. Bez tego kroku nie zaczynaj – skrypty piszą do bazy i nie każdy z nich można cofnąć przez ROLLBACK po commicie.

Krok 3 – wyloguj użytkowników i wyłącz usługi Comarch

Wyślij informację do zespołu i wyloguj wszystkich operatorów z Comarch ERP XL. Na serwerze wyłącz usługi Comarch (m.in. Comarch ERP Serwis Operacji Automatycznych, Comarch ERP Automat Synchronizacji, usługi związane z KSeF). To pozwala uniknąć konfliktów blokowania tabel przy uruchamianiu skryptów.

Krok 4 – uruchom skrypty w kolejności z ReadMe

W SSMS otwórz nową sesję, przełącz kontekst na właściwą bazę firmową (nie master, nie tempdb, nie dbo domyślny) i uruchamiaj skrypty pojedynczo w kolejności wskazanej w ReadMe lub według numeracji w nazwach plików. Po każdym skrypcie zweryfikuj, że zakończył się bez błędów – nie uruchamiaj kolejnego, jeśli poprzedni rzucił wyjątkiem.

Krok 5 – uruchom usługi i zweryfikuj sesję KSeF

Włącz usługi Comarch z powrotem, uruchom Comarch ERP XL, zaloguj się na operatora używanego do KSeF.

W menu System → Sesja KSeF otwórz nową sesję i wykonaj test – pojedyncza wysyłka faktury i próba wysyłki zbiorczej (SendBatch). Jeśli poprzednio występowały błędy w cdn.KSeFTokeny lub OpenBatchSessionAsync unauthorized – po skryptach powinny zniknąć albo wymagać tylko ponownego uwierzytelnienia operatora (co odtworzy świeży wpis w tabeli KSeFTokeny).

Kilka zasad bezpieczeństwa przy takich hotfixach

Nie uruchamiaj skryptów “na produkcji z marszu”. Jeśli to możliwe, przetestuj je najpierw na kopii bazy – odtwórz kopię z ostatniego backupu na osobnej instancji SQL, puszczaj skrypty tam, sprawdź rezultat. Dopiero po pomyślnym teście replikujesz to na produkcji z nową kopią zapasową pod ręką.

Nie wgrywaj cudzych plików z iBard po linku, którego nie zna Twoja firma. Link z Comarch/forum społeczności jest legitymowany, ale przed uruchomieniem skryptu w bazie produkcyjnej zawsze przejrzyj jego treść – hotfix powinien mieć sensowny, opisowy komentarz na górze pliku i operować tylko na tabelach cdn.* związanych z problemem.

Dokumentuj wgranie poprawki. Zanotuj datę, które skrypty i w jakiej kolejności puściłeś, kto był operatorem SQL i jaki był stan przed/po (screen z błędem KSeF, screen z zakończoną wysyłką). To bezcenne przy audycie i przy następnej aktualizacji, kiedy trzeba będzie odtworzyć historię zmian.

Perspektywa ELTE-S

Hotfixy “po linku iBard” to normalna praktyka w świecie Comarch ERP XL – Comarch często tak dystrybuuje poprawki między oficjalnymi wersjami minor, bo szybciej jest udostępnić zestaw plików niż wypuścić pełną aktualizację. Nasza rada: potraktuj takie skrypty jako pełnoprawną zmianę w produkcji – z backupem, oknem serwisowym i checklistem. W obszarze KSeF w wersji 2025.1.6 widać wyraźnie, że Comarch dopiero stabilizuje mapowanie użytkownika SQL na operatora KSeF, więc warto mieć swój sprawdzony scenariusz na wypadek podobnych problemów przy kolejnych wersjach. Jeśli integracja z KSeF przechodzi Ci przez kilkadziesiąt baz klienckich – dobrze mieć to zautomatyzowane w formie własnego skryptu instalującego hotfix na wszystkie bazy jednym przebiegiem, zamiast klikania po kolei w SSMS.

Porozmawiajmy o uporządkowaniu procesu aktualizacji Comarch ERP XL i integracji KSeF u Twoich klientów.

Błąd wysyłki zbiorczej do KSeF w Comarch ERP XL – OpenBatchSessionAsync unauthorized access

Zbiorcza wysyłka faktur do KSeF z Comarch ERP XL i w konsoli ląduje długi łańcuszek błędu: Invalid operation ‘SendBatch’: Operation failed due to component error: OpenBatchSessionAsync failed due to unauthorized access and token refresh error: Bad Request. W praktyce to komunikat z jednym prostym znaczeniem – XL próbuje otworzyć sesję zbiorczą w KSeF, dostaje 401 Unauthorized od API MF i przy próbie odnowienia tokena łapie kolejny błąd 400. Nie chodzi tu o dane faktury ani o schemę XML – problem jest po stronie sesji i tokena operatora.

Dlaczego XL zwraca ten błąd

Każda sesja KSeF w Optimie i XL bazuje na parze: token autoryzacyjny operatora + aktywna sesja API MF. Token ma swój czas życia i zakres uprawnień, sesja – jeszcze krótszy TTL. Kiedy XL próbuje uruchomić wysyłkę zbiorczą (SendBatch), otwiera nową sesję na tokenie operatora. Jeśli token wygasł, został wygenerowany dla innego środowiska (np. Demo, a wysyłka idzie na Produkcję) lub ma za wąski zakres uprawnień, MF zwróci 401. XL próbuje wtedy odnowić token (token refresh), ale endpoint refresh nie akceptuje wygasłego lub niepasującego tokena – dostaje 400 Bad Request. Efekt: często obie sesje (poprzednia i nowa) są w niespójnym stanie, a XL nie potrafi się sam z tego wygrzebać.

Krok po kroku – jak przywrócić wysyłkę

Krok 1 – zamknij aktywną sesję KSeF w XL

Z menu System → Sesja KSeF wybierz opcję zamknięcia aktywnej sesji. To wymusza porzucenie niespójnego stanu sesji, której używał SendBatch. Jeśli w oknie jest widoczna aktywna sesja – zamknij ją ręcznie, nawet jeśli status wygląda poprawnie.

<screen>

Krok 2 – zrestartuj Comarch ERP XL

Zamknij całkowicie aplikację (nie tylko okno modułu handlowego) i uruchom ją ponownie. Przy starcie XL nawiąże nową sesję na aktualnym tokenie operatora – bez śladów poprzedniej, uszkodzonej. W wielu przypadkach ten krok wystarcza, żeby wysyłka zbiorcza znowu ruszyła.

Krok 3 – jeśli błąd wraca, usuń wpis operatora z cdn.KSeFTokeny

Uruchom SQL Server Management Studio, połącz się z bazą firmową XL i sprawdź tabelę cdn.KSeFTokeny – to tam XL trzyma zapisane tokeny/uwierzytelnienia poszczególnych operatorów. Znajdź wiersz odpowiadający operatorowi, który napotkał błąd i usuń go (przed usunięciem zrób backup lub zapisz zawartość na bok). Po ponownym uwierzytelnieniu tego operatora w XL, wpis zostanie odtworzony automatycznie już na świeżym tokenie. To rozwiązuje sytuacje, w których w tabeli siedzi “martwy” token, którego XL nie potrafi odnowić.

<screen>

Krok 4 – zweryfikuj środowisko tokena (Demo vs Produkcja)

W konfiguracji KSeF w XL sprawdź, dla jakiego środowiska wygenerowano token operatora. Częsty scenariusz: token pochodzi z testowego środowiska Demo, a wysyłka celuje w Produkcję (lub odwrotnie po przełączeniu klienta z Demo na Prod). MF nie zaakceptuje takiego tokena i zwróci 401 nawet dla poprawnego formalnie żądania. Wygeneruj nowy token dla właściwego środowiska.

<screen>

Krok 5 – zweryfikuj uprawnienia tokena

Token KSeF ma zakres uprawnień (m.in. wystawianie faktur, odczyt, zarządzanie uprawnieniami, samofakturowanie). Do wysyłki zbiorczej (SendBatch) potrzebujesz przynajmniej uprawnienia do wystawiania faktur. Jeśli token był generowany “minimalistycznie” (tylko odczyt lub tylko konkretna rola) – MF odrzuci wysyłkę. W praktyce najbezpieczniej wygenerować nowy token z pełnym zestawem uprawnień dla operatora technicznego biuletynu KSeF, który będzie używany przez XL.

<screen>

Kiedy sprawa jest po stronie MF, a nie XL

Zdarza się, że cały powyższy łańcuszek jest w porządku, a XL nadal zwraca 401/400 – warto wtedy sprawdzić status środowiska KSeF na stronie MF (podatki.gov.pl → KSeF → Status środowiska). Krytyczne prace serwisowe lub incydenty po stronie MF potrafią blokować wysyłkę zbiorczą z tym samym komunikatem błędu, mimo że token i sesja są poprawne. W takich sytuacjach jedyne co pomaga to poczekać na przywrócenie usługi.

Perspektywa ELTE-S

OpenBatchSessionAsync unauthorized w 9 na 10 wdrożeń sprowadza się do jednego z trzech twórców problemu: uszkodzony stan sesji po restarcie serwera, martwy token w cdn.KSeFTokeny albo niezgodność środowiska Demo/Prod na tokenie. Dopóki nie odetnie się tych trzech możliwości, nie warto szukać problemu w schemacie faktury ani w połączeniu sieciowym. Praktyczna wskazówka na przyszłość: dokumentujcie u siebie który operator w bazie ma token na jakie środowisko i pilnujcie, żeby po zmianie z Demo na Produkcję wyczyścić cdn.KSeFTokeny lub wygenerować nowe tokeny – to eliminuje 80% przypadków tego błędu. Interwencja w tabeli KSeFTokeny wygląda mocno technicznie, ale w praktyce jest bardzo bezpieczna – wpis odtwarza się automatycznie przy następnym logowaniu operatora.

Porozmawiajmy o uporządkowaniu integracji KSeF w Twoim Comarch ERP XL.