0

Webhook z KSeF - da się w ogóle?

JPK_panda15 lut0 wyświetleń

Witam,

Przeglądam dokumentację API KSeF i zastanawiam się czy jest jakiś mechanizm webhooków, żeby system powiadamiał mnie automatycznie o nowych fakturach lub zmianach statusu.

Chodzi mi o to, żeby nie musieć odpytywać API co chwilę (polling), tylko dostać powiadomienie push jak coś się zmieni. Gosc wystawił mi fakture - dostaje info. Status faktury sie zmienił - info.

Przejrzałem dokumentację ale nic takiego nie widzę. Tylko Session Invoice Get i pobieranie listy faktur. Czyli trzeba odpytywać samemu?

Ma ktoś jakieś doświadczenie? Może coś przegapiłem w docs? Bo trochę niewygodne to ciągłe odpytywanie serwera.

Z góry dzięki

3 odpowiedzi

0
Niestety nie ma webhooków w KSeF, sprawdzałem to dokładnie bo też myślałem że to oszczędzi requestów. Musisz robić polling. Jedyne co możesz to: - Używać `/api/online/Query/Invoice/Async` z odpowiednimi filtrami (np. data wystawienia, NIP kontrahenta) - Ustawić sobie sensowny interval - nie musisz pytać co 10 sekund, raz na 15-30 minut spokojnie wystarczy w większości przypadów - Implementować exponential backoff jak nic się nie dzieje W praktyce polling nie jest taki straszny. U nas leci co 20 minut w godzinach roboczych i 2x w nocy. Jak masz wielu kontrahentów to możesz filtrować po NIP żeby ograniczyć response size. Jedyne "push" to Session token expiry ale to nie to o co Ci chodzi :) Można ewentualnie monitorować UPO (Urzędowe Poświadczenie Odbioru) przez Query ale to też wymaga odpytywania. MF po prostu nie implementowało webhooków, pewnie ze względów bezpieczeństwa i architektury systemu.
0
Potwierdzam to co Aneta napisała - webhooków nie ma i raczej nie będzie, przynajmniej na razie. My w fundacji mamy podobny setup, odpytujemy co 30 minut i na razie wystarcza. Ważne żeby dobrze ustawić filtry w zapytaniach, bo jak masz dużo faktur to odpowiedzi mogą być spore. Jeszcze jedna rzecz - jak robisz polling to pamiętaj o limitach requestów do API. W dokumentacji jest że max 30 zapytań na minutę dla jednej sesji, więc jak będziesz odpytywać zbyt często to możesz dostać error. U nas jeden raz było że kolega ustawił co 2 minuty i czasami wyskakiwały błędy jak akurat inne procesy też odpytywały. Ogólnie trochę niewygodne że nie ma webhooków ale jak się odpowiednio ustawi to da się z tym żyć. Gorzej gdyby to było coś czego potrzebujesz natychmiast, ale w przypadku faktur zazwyczaj kilkanaście minut opóźnienia nie robi różnicy.
0
Potwierdzam to co poprzednicy - webhooków nie ma i niestety trzeba się pogodzić z pollingiem. W biurze obsługujemy kilkanaście spółek i na początku też szukałam jakiegoś mechanizmu powiadomień push, ale nic z tego. Ministerstwo nie przewidziało takiej funkcjonalności w API. Mogę podzielić się jak my to rozwiązaliśmy - mamy skrypt który odpytuje KSeF co 1 godzinę w godzinach 8-18, później tylko o 20:00 i 6:00 rano. Używamy Query/Invoice/Async z parametrem `invoicingDateFrom` ustawionym na ostatnie sprawdzenie minus 2 godziny (na wszelki wypadek żeby nic nie przegapić). Filtrujemy też po `subjectType` żeby oddzielić faktury sprzedaży od zakupu. Rzeczywiście trzeba uważać na limity requestów, ale przy godzinnym interwale to nie problem. My dodatkowo logujemy wszystkie odpowiedzi żeby móc ewentualnie sprawdzić czy czegoś nie pominęliśmy. Jedyne o czym warto pamiętać - jak kontrahent wystawi fakturę późnym wieczorem, to dowiesz się o niej dopiero rano. Ale szczerze mówiąc w praktyce biznesowej to nie jest problem, bo i tak księgowania robimy z opóźnieniem. Trochę archaiczne jak na API z 2024 roku, ale cóż - to polski system rządowy, nie można wymagać cudów.

Twoja odpowiedź

Zaloguj się, aby odpowiedzieć w tej dyskusji.