Jawne oraz ukryte błędy w integracji z KSeF 

Po ponad miesiącu funkcjonowania obowiązkowego KSeF 2.0 można już rozpocząć analizę błędów, zgłaszanych przez użytkowników zewnętrznych programów, zintegrowanych z KSeF. Większość błędów jest prosta do stwierdzenia: faktur nie udaje się wysłać albo pobrać z KSeF, lub pomimo komunikatów o skutecznej wysyłce, dokumentów XML nie ma w systemie i w efekcie nie docierają one do kontrahenta. Stosunkowo łatwo można również zauważyć, że lokalnie wygenerowane pliki PDF nie spełniają obowiązujących wymogów. Autorzy wielu artykułów szeroko omawiają tę grupę błędów, dlatego w pierwszej części tekstu krótko podsumujemy te przypadki. My jednak chcemy w tym miejscu postawić dalej idące pytanie: czy skuteczne wysłanie faktury do KSeF zawsze oznacza, że wystawca sporządził ją w pełni prawidłowo? W dalszej części przedstawimy przykłady, które pozwolą każdemu czytelnikowi samodzielnie to ocenić. 

Błędy łatwe do zidentyfikowania 

Rzeczywistość funkcjonowania KSeF 2.0 pokazuje, że podstawowe błędy w integracji z systemem mogą mieć bardzo różnorodny charakter. Na potrzeby niniejszego artykułu podzieliliśmy je na 3 grupy: 

Prawidłowe wystawianie faktur w KSeF wymaga przeanalizowania – i w razie potrzeby skorygowania – wewnętrznych procedur oraz utrwalonych praktyk. Przykładowo, jeżeli przedsiębiorca – tak jak dotychczas – wystawia kilka dni po rozpoczęciu miesiąca faktury za poprzedni miesiąc, wpisując w nich ostatni dzień poprzedniego miesiąca jako Datę wystawienia, dopuszcza się wykroczenia karno-skarbowego. Choć do końca 2026 r. takie naruszenie pozostaje bez sankcji, warto zmienić dotychczasowe praktyki wcześniej, nie czekając na wprowadzenie kar. W efekcie oznacza to konieczność wyboru jednego z dwóch rozwiązań:  

  • faktycznego wystawiania faktur w ostatnim dniu miesiąca, 
  • wskazywania w fakturach rzeczywistej daty ich wystawienia.  

W tym drugim przypadku może się jednak okazać konieczne wprowadzenie zmian w umowie z kontrahentem, np. w formie aneksu. 

Do tej samej grupy problemów zaliczamy również brak:

  • przygotowania do wystawiania faktur korygujących, 
  • gotowości do działania w okresie awarii lub niedostępności KSeF.  

Pierwsza z tych kwestii ma szczególne znaczenie. W systemie KSeF nie ma możliwości edytowania lub anulowania faktur po ich przesłaniu, a jednocześnie zrezygnowano z not korygujących. W praktyce, będziemy wystawiać faktury korygujące znacznie częściej niż dotychczas, o bardziej zróżnicowanej treści.

Drugim potencjalnym problemem jest awaria KSeF, która może natomiast wystąpić w najmniej odpowiednim momencie dla firmy. Awaria może trwać na tyle długo, że jej „przeczekanie” będzie problematyczne. W obydwu przypadkach mamy do czynienia z problemami całkowicie nowymi albo znacznie bardziej skomplikowanymi, niż w dotychczasowym modelu fakturowania. Dlatego warto wcześniej ustalić zasady postępowania. Osoby zaangażowane w proces powinny wiedzieć jakie działania podjąć, zamiast szukać rozwiązania pod presją czasu. 

Wybór odpowiedniego programu do wystawiania faktur, to kluczowy element prawidłowej integracji z KSeF. Nie wystarczy sprawdzenie czy program w ogóle jest zintegrowany z KSeF. Należy sprawdzić go również pod kątem obsługi wszystkich sytuacji, które potencjalnie mogą wystąpić w działalności firmy.  

Oczywistym przykładem problemu z programem jest sytuacja, w której generuje on pliki w niewłaściwej strukturze (FA(2) zamiast FA(3)) albo nie zapewnia walidacji struktury przed jej wysłaniem do KSeF. Wówczas wysyłka faktury może skończyć się odrzuceniem. Podobny skutek może wystąpić w przypadku braku mechanizmów zabezpieczających przed dublowaniem numerów faktur.  

Warto również sprawdzić nieoczywiste cechy programu, w tym np. czy: 

  • mniej typowe elementy treści faktury, takie jak np. dodatkowe uwagi, adnotacje, oznaczenia pozycji oraz kontraktów, system umieszcza w odpowiednich polach struktury,
  • program zapewnia wystawienie prawidłowych faktur korygujących, także w nietypowych, lecz możliwych sytuacjach, 
  • treść generowanego obrazu faktury w PDF jest zgodna z treścią faktury XML oraz czy zawiera prawidłowy kod QR, 
  • w przypadku korzystania z trybu Offline24 program generuje prawidłowe wizualizacje faktur z dwoma kodami QR oraz właściwe Potwierdzenia transakcji, 
  • program obsługuje tryby awaryjne KSeF. 

W tym obszarze może się również mieścić się problem tzw. „faktur widmo”. W ostatnim okresie pojawiały się bowiem informacje o fakturach, które zostały wysłane do KSeF, lecz nie są widoczne w systemie i w efekcie nie trafiły do kontrahentów. W kilku przypadkach informowano o tym, że takie faktury otrzymały numer KSeF oraz/lub udało się pobrać urzędowe potwierdzenie odbioru (UPO). Ministerstwo Finansów odrzuciło jednak te doniesienia. Wskazuje, że przyczyną problemu są błędy w działaniu zewnętrznych programów do fakturowania, które albo niewłaściwie odczytują odpowiedzi API KSeF, albo wręcz generują odpowiedzi, które w rzeczywistości nie zostały zwrócone przez system. 

Aby wysłanie lub pobranie faktury z KSeF zakończyło się powodzeniem, najpierw konieczne jest uwierzytelnienie w systemie, z użyciem wymaganego uprawnienia – do wystawiania lub przeglądania faktur. W przypadku korzystania z tokenu, odpowiednie uprawnienia muszą zostać w nim zapisane, już w momencie jego generowania. W przypadku certyfikatu ważne jest, aby podmiot/osoba, której certyfikat dotyczy, miała odpowiednie uprawnienie w momencie nawiązywania połączenia z KSeF. Sam fakt posiadania odpowiedniego uprawnienia w momencie generowania certyfikatu nie jest wystarczający. 

Błędy ukryte 

Jeżeli żaden z powyższych błędów nie wystąpi, faktura zostaje terminowo wystawiona i przesłana do KSeF. Kontrahent od razu może ją pobrać z systemu, a wystawca generuje prawidłowy obraz faktury w PDF. Czy w takiej sytuacji można uznać, że cały proces przebiegł w pełni prawidłowo? Niekoniecznie.  

Poniżej przedstawiamy trzy przykłady, zaczerpnięte z faktur pobranych z KSeF w ostatnich kilku tygodniach. Pokazują one, że nawet dokument przyjęty przez system może zawierać błędy lub nieścisłości, które ujawniają się dopiero przy dokładniejszej analizie. 

Przed integracją z KSeF wystawca generował faktury PDF w układzie jednego wiersza, zawierającego: Wartość netto, Stawkę VAT, Kwotę VAT oraz Wartość brutto. Dodatkowo w fakturze prezentowana była lista składowych ujętych w dokumencie – wszystkie w wartościach brutto.  

Struktura FA(3) nie pozwala jednak na przedstawienie wiersza faktury w taki sam sposób. Konieczne jest podanie Ceny jednostkowej i Ilości, a Wartość musi być określona jako netto lub brutto, w zależności od przyjętej podstawy kalkulacji.  

W analizowanym przypadku wystawca skopiował sumy do Podsumowania stawek podatku. W węźle Wiersz faktury zdecydował się wypełnić (między innymi) pola: 

  • P_8B – Ilość = 1 
  • P_9A – Cena jednostkowa netto = dotychczasowa Wartość netto 
  • P_11 – Wartość sprzedaży netto = dotychczasowa Wartość netto 
  • P_12 – Stawka podatku = dotychczasowa Stawka VAT 

Taki sposób wypełnienia wskazuje na kalkulację od cen netto. Oznacza to, że kwota podatku również obliczana jest na podstawie Wartości netto. W analizowanej fakturze obliczona w ten sposób kwota VAT różniła się jednak od wartości podanej w Podsumowaniu stawek podatku. Oznacza to powstanie odchyleń VAT w fakturze składającej się z jednego wiersza. Przy prawidłowej kalkulacji wartości faktury (sumy na podstawie wierszy) jest to niemożliwe.  

Tymczasem rozwiązanie było proste: zamiast pól P_9A i P_11 należało wypełnić pola P_9B i P_11A, wystawiając fakturę – zgodnie z rzeczywistością – z kalkulacją od cen brutto. 

Kolejny przykład dotyczy polskiego oddziału firmy zagranicznej, który nalicza opłaty za wszystkie świadczone usługi w walucie obcej. W szczegółach faktury podawane są: Wartość netto, Kwota VAT i Wartość brutto. Dokument zawiera Sumy tych trzech wartości oraz ich odpowiedniki w złotówkach.  

W związku z integracją z KSeF zdecydowano się – prawdopodobnie w celu uniknięcia konieczności korzystania z załącznika do faktury KSeF – uwzględniać w fakturze wszystkie świadczone usługi. Podobnie jak w poprzednim przykładzie wartości netto (dla poszczególnych usług) zostały skopiowane do Cen jednostkowych netto, a Ilości we wszystkich wierszach wypełniono jako 1. W tym przypadku taka metoda określenia ceny była poprawna.  

Problem pojawił się jednak w sytuacji, gdy dla niektórych usług wartość naliczeń wynosiła 0. W efekcie w wygenerowanej fakturze XML pojawiły się wiersze z: 

  • P_8B – Ilość = 1 
  • P_9A – Cena jednostkowa netto = 0 
  • P_11 – Wartość sprzedaży netto = 0 

Powstaje pytanie, czy takie wypełnienie faktury jest prawidłowe? Naszym zdaniem nie. W aplikacji CONTsup, aby umożliwić zapisanie takiego dokumentu zaimportowanego z KSeF jako nie-roboczego, konieczne było usunięcie jednej z reguł walidacji, blokującej możliwość zapisania faktury zawierającej takie dane. 

W ostatnim przykładzie faktura jest wystawiana przez inny podmiot niż sprzedawca. Dotychczas informacja o tym była prezentowana w miejscu przeznaczonym na Nazwę sprzedawcy, w formie „Podmiot ABC zamiast Podmiotu DEF”. Pod spodem były umieszczane dane adresowe i NIP Sprzedawcy (Podmiotu DEF). Taki sposób może nie był do końca prawidłowy, ale przy odczytywaniu danych z faktury nie powodowało to większych problemów interpretacyjnych. 

Niestety, w omawianym przypadku, integrując się z KSeF wystawca nie wprowadził żadnych zmian w tym zakresie. Wspomniana treść została wpisana w polu Nazwa w węźle Podmiot1. W strukturze KSeF stanowi to już oczywisty błąd. Wystarczyło uwzględnić w fakturze Podmiot3 z rolą „Wystawca faktury”, który jest przeznaczony właśnie do takich sytuacji. 

Podsumowanie 

Integracja z Krajowym Systemem e-Faktur może prowadzić do powstawania wielu różnych błędów. Duża ich część dotyczy jednego kluczowego obszaru: sposóbu generowania pliku XML. Błędy powodujące odrzucenie faktury przez KSeF są od razu widoczne. Znacznie trudniejsze do wykrycia są przypadki, w których faktura spełnia wszystkie wymogi formalne struktury i zostaje przyjęta przez KSeF. Jednak jej dokładniejsza analiza zaczyna budzić wątpliwości.  

W przedstawionych przykładach najprawdopodobniej nie zmieniono sposobu generowania faktur – tak jak dotychczas są one generowane jako dokumenty PDF. Generowanie i wysyłanie do KSeF plików XML zostało jedynie „dołączone” do całego procesu – i to w oparciu o gotową już treść dokumentów PDF, a nie na bazie danych źródłowych.  

Takie podejście może prowadzić do powstawania błędów, które w systemach zaprojektowanych od początku z myślą o KSeF – takich jak aplikacja CONTsup – praktycznie nie występują. Oceniając własną integrację z KSeF warto pamiętać, że rozwiązania oparte na takiej „doklejonej” integracji mogą stać się dodatkowym źródłem problemów. 

Chcesz dowiedzieć się więcej? Sprawdź nasz program do zarządzania finansami i wybierz ofertę dopasowaną do Twoich potrzeb. 

Chcesz bezpłatnie przetestować aplikację CONTsup?

Tekst przygotowany we współpracy z: