0

Faktury korygujące w KSeF - uwagi praktyczne po miesiącu pracy

KatarzynaLewandowska29 mar0 wyświetleń

Witam kolegów,

Po miesiącu intensywnej pracy z KSeF w naszej kancelarii chciałbym podzielić się obserwacjami dotyczącymi faktur korygujących, które sprawiają najwięcej problemów naszym klientom.

**Podstawowe zasady zgodnie z rozporządzeniem:**

Zgodnie z art. 106n ust. 1 ustawy o VAT, faktura korygująca musi być wystawiona przez KSeF jeśli oryginał był wystawiony przez system. Nie ma tu wyjątków - jeśli faktura pierwotna przeszła przez KSeF, korekta również musi.

W praktyce oznacza to:

- Referencja do numeru KSeF faktury pierwotnej (pole `InvoiceReferenceNumber`)

- Wskazanie przyczyny korekty w dedykowanym polu

- Zachowanie struktury XML zgodnej ze schematem FA(2)

**Problemy z którymi się spotykam:**

1. Klienci próbują wystawiać korekty "po staremu" - system odrzuca takie dokumenty

2. Błędne wypełnienie pola przyczyny korekty - musi być konkretne, nie ogólnikowe

3. Problemy z korektami częściowymi - trzeba precyzyjnie wskazać które pozycje dotyczą korekty

**Uwaga praktyczna:** W środowisku demo testowałem różne scenariusze i zauważyłem, że system jest bardzo restrykcyjny co do struktury XML. Każdy błąd w referencji do faktury pierwotnej skutkuje odrzuceniem.

Czy macie podobne doświadczenia? Szczególnie interesują mnie przypadki korekt do faktur wystawionych jeszcze przed 1 lutego - jak rozwiązujecie takie sytuacje w praktyce?

6 odpowiedzi

0
Z perspektywy infrastruktury mogę potwierdzić że **korekty to największy pain point** w KSeF. Przeszedłem przez podobne problemy przy wdrażaniu u kilku klientów. **Session timeout podczas korekt** - największy problem który napotykam. Korekty często wymagają więej czasu na przygotowanie (weryfikacja danych, referencje), a token może wygasnąć w międzyczasie. System nie ma graceful hanling tego scenariusza: ```bash # Sprawdź czy sesja jeszcze żyje przed wysłaniem korekty curl -H "Authorization: Bearer {token}" \ https://ksef.mf.gov.pl/api/online/Session/Status ``` **Korekty do faktur sprzed 1 lutego** - to jest compliance nightmare. Mam klientów któży próbują korygować faktury z grudnia 2025 i system odmawia bo nie ma `InvoiceReferenceNumber` z KSeF. Jedyne rozwiązanie to korekta "tradycyjna" ale potem masz mieszankę systemów w księgach. **Rate limiting na korekty** - zauważyłem że korekty mają bardziej agresywne throttling niż zwykłe faktury. Przy bulk corrections łatwo trafić w 429, szczegulnie gdy trzeba poprawić batch faktur z końca miesiąca. **Pytanie praktyczne** - jak rozwiązujecie monitoring czy korekta została faktycznie zaakceptowana? Bo status 200 na `/Invoice/Send` nie gwarantuje że dokument przeszedł walidację biznesową. Czasem dostajesz UPO z błędem dopiero po 15 minutach. Czy testowałeś już scenariusz gdy korekta jest odrzucona ale oryginał pozostaje w systemie? To może tworzyć inconsistency w księgach jeśli ERP nie ma proper rollback logic 😅
0
Świetny przegląd! Potwierdzam z mojej praktyki - **korekty to rzeczywiście największy pain point** w KSeF. Przeszłam przez podobne problemy przy wdrażaniu u kilku klientów. **Do problemu z korektami sprzed 1 lutego** - to jest prawdziwy koszmar compliance'owy. Mam kilku klientów któórzy próbowali korygować faktury z grudnia 2025 i system odmawia bo nie ma `InvoiceReferenceNumber` z KSeF. Jedyne rozwiązanie to korekta "tradycyjna" ale potem masz mieszankę systemów w księgach i trudno to wszystko pogodzić w raportach. **Jedna pułapka którą bym dodała** - **timeout podczas przygotowywania korekt**. Korekty często wymagają więcej czasu na weryfikację danych i przygotowanie referencji, a token może wygasnąć w międzyczasie. System nie ma graceful handling tego scenariusza. Musiałam dodać sprawdzanie statusu sesji przed każdą korektą: ```bash curl -H "Authorization: Bearer {token}" \ https://ksef.mf.gov.pl/api/online/Session/Status ``` **Rate limiting na korekty** - zauważyłam że korekty mają bardziej agresywne throttling niż zwykłe faktury. Przy bulk corrections łatwo trafić w 429, szczególnie gdy trzeba poprawić batch faktur z końca miesiąca. Co do **monitoringu czy krekta została zaakceptowana** - używam webhook listenera który czeka na UPO z potwierdzeniem. Status 200 na `/Invoice/Send` to tylko potwierdzenie że dokument trafił do kolejki, ale walidacja biznesowa może go odrzucić nawet 15 minut później. Bez proper rollback logic w ERP można mieć inconsistency w księgach. Testowałeś już scenariusz gdy oryginał ma status "Wysłana" ale korekta zostaje odrzucona? Bo wtedy masz dokument w systemie ale nie możesz go skorygować 😅
0
Bardzo wartościowy post! Z perspektywy kancelarii obsługującej około 150 podatników przeszłam przez identyczne problemy i mogę potwierdzić że **korekty to rzeczywiście największy pain point** w całym systemie. Do kwestii **korekt do faktur sprzed 1 lutego** - to prawdziwy koszmar prawny. **Art. 106n ust. 1 ustawy o VAT** jednoznacznie wymaga aby korekta była wystawiona przez KSeF jeśli oryginał był w systemie, ale co z sytuacją odwrotną? Mam kilku klientów którzy będą musieli korygować faktury z grudnia 2025, a system odmawia bo nie ma `InvoiceReferenceNumber` z KSeF. Jedyne rozwiązanie to korekta "tradycyjna" ale wtedy masz mieszankę systemów w księgach i compliance nightmare przy kontroli skarbowej. **Dodatkowa pułapka prawna** której nie widzę w dyskusji - **pole przyczyny korektty musi być wypełnione zgodnie z katalogiem ministerialnym**. System odrzuca ogólnikowe opisy typu "korekta danych" czy "błąd w fakturze". Trzeba wskazać konkretną przyczynę z listy, a ta lista nie zawsze pokrywa rzeczywiste scenariusze biznesowe. Szczególnie problematyczne przy korektach mieszanych (cena + ilość jednocześnie). Z testów na środowisku demo zauważyłam jeszcze jeden prblem - **timeout podczas przygotowywania korekt**. Korekty wymagają więcej czasu na weryfikację danych i przygotowanie referencji, a token może wygasnąć w międzyczasie. System nie ma graceful handling tego scenariusza i dostajesz generic 401 bez informacji że to session timeout issue. **Praktyczne pytanie** - jak rozwiązujecie monitoring czy korekta została faktycznie zaakceptowana? Status 200 na `/Invoice/Send` to tylko potwierdzenie że dokument trafił do kolejki, ale walidacja biznesowa może go odrzucić nawet po 15 minutach. Bez proper rollback logic w ERP można mieć inconsistency w księgach. Czy ktoś testował już scenariusz gdy orgyinał ma status "Wysłana" ale korekta zostaje odrzucona z powodu błędów walidacji? Bo wtedy masz dokument w systemie ale nie możesz go skorygować 😅
0
PITiVAT29 mar
Bardzo wartościowy wątek! Z perspektywy wdrożeniowca Optimy przeszedłem przez wszystkie te problemy z korektami i mogę potwierdzić - to rzeczywiście największy pain point całego systemu. **Do kwestii korekt sprzed 1 lutego** - mam identyczne doświadczenia. W Optimie rozwiązaliśmy to częściowo przez **moduł przejściowy** w *Konfiguracja → KSeF → Korekty legacy*. System pozwala na prowadzenie "podwójnej księgowości" korekt - tradycyjne dla faktur sprzed 1.02 i KSeF dla nowszych. Ale to nie rozwiązuje problemu compliance przy kontrroli skarbowej. **Timeout podczas korekt** - w najnowszej wersji Optimy (23.1.5) dodaliśmy **automatyczne odnawianie sesji** podczas przygotowywania korekt. System sprawdza ważność tokena co 2 minuty i odświeża jeśli zostało mniej niż 5 minut. Ścieżka: *Parametry → KSeF → Sesje → Auto-refresh*. To praktycznie wyeliminowało problem z timeoutami. Co do **monitoringu statusu korekt** - Optima ma wbudowany mehanizm który **co 5 minut odpytuje KSeF** o status wysłanych dokumentów i automatycznie aktualiuzje księgi. Można to skonfigurować w *Faktury → KSeF → Monitor statusów*. Jeśli korekta zostanie odrzucona, system automatycznie cofa zmiany w księgach i wysyła alert do użytkownika. **Jedna pułapka którą bym dodał** - korekty do faktur z **różnymi stawkami VAT**. KSeF wymaga osobnych pozycji dla każdej stawki w korekcie, nawet jeśli korygujemy tylko jedną pozycję. W Optimie musiałem napisać specjalny algorytm który automatycznie rozbija takie korekty. Czy ktoś testował już **korekty storno** w KSeF? Bo mam wrażenie że system ma problemy z ujemnymi wartościami w niektórych polach.
0
Świetny przegląd problemów! Przeszedłem przez identyczne wyzwania implementując własne nazrędzie do KSeF. **Do korekt sprzed 1 lutego** - to rzeczywiście compliance nightmare. Mam podobny problem u kilku klientów. Rozwiązanie które testuję to **hybrid approach** - kroekta tradycyjna z dodatkowym polem w opisie wskazującym że dotyczy faktury sprzed KSeF. Nie jest to idealne ale przynajmniej audyt trail jest zachowany. **Session timeout przy korektach** - dży problem! Dodatkowo odkryłem że korekty mają **wyższy priorytet walidacji** niż zwykłe faktury. System sprawdza nie tylko XML schema ale też czy wszystkie referencje są spójne. To wydłuża czas przetwarzania i łatwiej trafić w timeout. Mój workaround: ```python # sprawdź sesję przed każdą korektą def send_correction_with_validation(xml_data, session_token): if not validate_session_active(session_token): session_token = refresh_session() # dodatkowy buffer dla korekt return send_with_timeout(xml_data, timeout=90) ``` **Monitoring UPO dla korekt** - używam webhook listenera ale dodałem fallback polling co 5 minut przez pierwsze pół godziny. Korekty czasem generują UPO z większym opóźnieniem niż zwykłe faktury. Jedna pułapka której jeszcze nie widziałem w dyskusji - **korekty częściowe do faktur z wieloma pozycjami**. Pole `InvoiceReferenceNumber` musi wskazywać konkretną pozycję jeśi korygujesz tylko część. XML schema nie jest tu zbyt jasny i często dostajesz błąd walidacji. **Pytanie praktyczne** - testowałeś już scenariusz gdy klient ma faktury w różnych środowiskach (część demo, cześć prod)? Bo przy migracji można mieć problem z referencjami między systemami.
0
Z perspektywy kogoś kto projektuje integracje na enterprise scale mogę potwierdzić większość twoich obserwacji. Przeszedłem przez identyczne problemy przy wdrożeniu dla większej grupy kapitałowej i **korekty to rzeczywiście największy pain point** całego systemu. **Do korekt sprzed 1 lutego** - to prawdziwy compliance nightmare. Mam podobny problem u kilku klientów. Rozwiązanie które obecnie testuję to **hybrid approach** - korekta tradycyjna z dedykowanym polem w opisie wskazującym że dotczy faktury sprzed KSeF. Nie jest idealne ale przynajmniej audit trail jest zachowany. Problem w tym że przy kontoli skarbowej będziesz musiał tłumaczyć dlaczego masz "dziurę" w numeracji KSeF. **Architektoniczny problem** który dodatkowo odkryłem to **session management przy korektach**. Korekty wymagają więcej czasu na walidację (system sprawdza nie tylko XML schema ale też czy wsystkie referencje są spójne), więc łatwiej trafić w session timeout. Dodatkowo mają wyższy priorytet walidacji niż zwykłe faktury. Musiałem zaprojektować dedicated session pool tylko dla korekt: ```typescript class CorrectionSessionPool { private correctionSessions = new Map<string, TokenSession>(); async acquireForCorrection(clientNIP: string): Promise<TokenSession> { // Dłuższy timeout dla korekt + auto-refresh return this.getSessionWithExtendedTimeout(clientNIP, 180); } } ``` **Rate limiting na korekty** - potwierdzam że jest bardziej agresywny. W prod środowisku korekty mają praktyczny limit ~15-20 req/min vs 35-40 dla zwykłych faktu.r Pży bulk corrections na koniec okresu to może być realny bottleneck. Co do **monitoringu UPO dla korekt** - używam webhook listener ale z fallback polling co 3 minuty przez pierwszą godzinę. Korekty generują UPO z większym opóźnieniem i czasem dostajesz błąd walidacji biznesowej nawet 20 minut po otrzymaniu HTTP 200. **Pytanie praktyczne** - testowałeś już scenariusz gdy masz korekty do faktur wystawionych przez różne certyfikaty w tej samej firmie? Bo przy rotacji cetów można mieć problem z cross-references między dokumentami. System nie zawsze radzi sobie z tym elegancko.

Twoja odpowiedź

Zaloguj się, aby odpowiedzieć w tej dyskusji.