KSeF zmusił mnie do przebudowania fragmentu systemu – oczywiście z AI

KSeF wymusił zmianę w moim systemie. Nie jestem programistą, ale z pomocą AI przebudowałem jego fragment w kilka godzin. To właśnie było największym zaskoczeniem

Paweł Fidelus

5/19/20265 min read

Jak wiecie, mam swój własny system do obsługi firmy, który zbudowałem z pomocą AI. Nazywam go Maszynką. Działa u mnie od ponad pół roku. Wystawia faktury, wysyła maile do klientów, pilnuje płatności, robi raporty itp. Jest super i właśnie dlatego trochę bałem się go ruszać. Bo jeśli coś działa, to po co to zmieniać?

No ale przyszedł KSeF.

A skoro moja Maszynka obsługuje faktury, to nie mogłem udawać, że temat mnie nie dotyczy. Musiałem przebudować fragment systemu.

Plan był prosty: pełna automatyzacja

Na początku chciałem zrobić to idealnie. Skoro Maszynka już dziś wystawia faktury przez API w Subiekcie123, to pomysł wydawał się oczywisty: po wejściu KSeF niech robi dokładnie to samo, tylko w nowym trybie.

Czyli system miałby:

  • rozpoznawać, czy klient jest przedsiębiorcą, czy osobą prywatną,

  • wystawiać odpowiedni dokument w programie księgowym, czyli dla osób prywatnych zwykłą fakturę, a dla firm – fakturę KSeF,

  • pobierać odpowiedni dokument albo jego wizualizację,

  • załączać go do maila,

  • wysyłać klientowi właściwą wiadomość.

Innymi słowy: proces miał się zamknąć całkowicie bez mojego udziału.

Tak jak do tej pory. Brzmiało pięknie i z tą myślą przystąpiłem do pracy.

Marzenia kontra rzeczywistość

Moja Maszynka w tematach księgowych jest połączona z Subiektem123 przez API. API to w uproszczeniu sposób, w jaki jeden program może komunikować się z drugim. Dzięki temu mój system może na przykład przekazać dane klienta i poprosić Subiekta123 o wystawienie faktury.

Do tej pory to działało bardzo dobrze. Dlatego przy KSeF zacząłem od sprawdzenia dokumentacji technicznej Subiekta123. Chciałem zobaczyć, czy są tam informacje potrzebne do obsługi faktur KSeF przez API. Niestety szybko okazało się, że dokumentacja nie zawiera tego, czego potrzebuję.

Napisałem więc do Insertu, czyli dostawcy Subiekta123.

Z odpowiedzi wynikało, że Subiekt123 nie jest jeszcze gotowy na taki scenariusz, jaki chciałem wdrożyć w mojej Maszynce. Przynajmniej nie przez API i nie w sposób, którego potrzebowałem.

Mój pierwotny plan spalił więc na panewce. I wtedy pojawiło się pytanie: co dalej?

Zmienić program księgowy? Wrócić do ręcznej obsługi? A może wymyślić obejście?

Telefon do księgowego

Zadzwoniłem do księgowego. Chciałem lepiej zrozumieć, jak on sam podchodzi do KSeF i jak wygląda to w praktyce w Subiekcie123, z którego on sam korzysta. Z rozmowy wyniknął ważny szczegół: wystawioną fakturę tradycyjną można jednym kliknięciem zmienić na fakturę KSeF, a potem kolejnym kliknięciem wysłać ją do KSeF.

To oczywiście nadal oznacza ręczne działanie. Ale w moim przypadku to nie był dramat.

U mnie klientów biznesowych jest niewielu. Zdecydowana większość klientów to osoby prywatne. Gdybym miał setki faktur B2B miesięcznie, pewnie patrzyłbym na temat inaczej. Ale przy mojej skali zmiana programu księgowego tylko po to, żeby domknąć automatyzację kilku faktur, byłaby przesadą.

Postanowiłem więc zrobić coś prostszego. Nie idealnego technicznie, ale rozsądnego biznesowo.

Nowy proces w Maszynce

Po zmianach Maszynka działa różnie w zależności od typu klienta.

Dla osób prywatnych proces zostaje zasadniczo taki jak dotąd. Czyli system wystawia fakturę, pobiera ją z Subiekta i wysyła klientowi maila z załącznikiem.

Przy klientach biznesowych wygląda to inaczej. Maszynka rozpoznaje, że klient jest przedsiębiorcą. Co ciekawe, nadal wystawia fakturę tradycyjną, ale nie dodaje jej do maila dla klienta.

Zamiast tego wysyła inną wiadomość: z informacją o kwocie do zapłaty i o tym, że faktura KSeF będzie do pobrania z systemu KSeF jeszcze w danym dniu.

A ja dla tych nielicznych klientów biznesowych muszę danego dnia wejść do Subiekta123, zmienić fakturę tradycyjną na fakturę KSeF i wysłać ją do systemu. Prosta sprawa, choć oczywiście trzeba jej dopilnować.

Czy to jest pełna automatyzacja? Oczywiście, że nie.

Czy zostawiłem ten krok ręcznie dlatego, że tak wolę? Też nie. Zostawiłem go ręcznie, bo na ten moment nie mam sensownej możliwości domknięcia tego przez API w moim obecnym układzie systemowym.

Nie chodzi o to, że ręczne klikanie jest celem. Chodzi o to, że czasem automatyzacja musi uwzględniać ograniczenia narzędzi, z których korzystamy.

Bezpieczniki, żeby nie zapomnieć

Skoro w procesie zostaje ręczny krok, to trzeba go dobrze zabezpieczyć. Najważniejsze jest dla mnie to, żebym faktycznie danego dnia wykonał zmianę w Subiekcie123 i wysłał fakturę do KSeF.

Dlatego dodałem w Maszynce kilka zabezpieczeń.

Po pierwsze: alerty mailowe. W porannym i wieczornym raporcie system pokazuje mi informacje o fakturach KSeF do obsłużenia danego dnia. Tak wygląda nagłówek maila z ostrzeżeniem KSeF przy raporcie porannym:

Po drugie: zmieniłem wygląd aplikacji. Dodałem osobną zakładkę KSeF, w której widzę klientów biznesowych i faktury możliwe do wystawienia w najbliższych dwóch tygodniach.

Dzięki temu nie muszę o wszystkim pamiętać. Maszynka nadal pilnuje procesu. Po prostu jeden fragment wymaga mojego ręcznego działania.

To nie jest ręczne obejście z lenistwa. To jest obejście z powodu ograniczeń systemowych. Moim zdaniem to jest ważna lekcja przy automatyzacji: nie wszystko zawsze musi być idealne. Ważne, żeby było użyteczne, bezpieczne i dopasowane do konkretnej firmy.

Kilka godzin pracy zamiast wielkiej rewolucji

Największe zaskoczenie? Te zmiany zrobiłem dosłownie w kilka godzin.

A nie była to zmiana tylko w jednym miejscu. Trzeba było zmienić interfejs użytkownika, backend i bazę danych. Trzeba było dodać rozpoznawanie klientów biznesowych, osobną ścieżkę procesu, alerty i nową zakładkę w aplikacji.

Nie zrobiłem tego szybko dlatego, że temat KSeF jest prosty. Zrobiłem to szybko, bo miałem już własny system, znałem swój proces i mogłem pracować z AI na konkretnym, istniejącym kodzie.

Korzystałem z Claude Code, który wykonywał zlecone zadania praktycznie bez mojej ingerencji.

Pracowałem oczywiście na środowisku deweloperskim, nie od razu na produkcji. Zlecałem zmiany krok po kroku, testowałem efekty, poprawiałem błędy i doprecyzowywałem kolejne elementy.

Dopiero potem przyszła kolej na wdrożenie produkcyjne.

To jest dla mnie jedna z największych wartości AI w samodzielnym programowaniu – bardzo sprawna, szybka praca z efektami widocznymi od razu. A przypomnę, że w ogóle nie jestem programistą.

W tradycyjnym podejściu każda taka zmiana mogłaby oznaczać długie planowanie, szukanie wykonawcy, tłumaczenie procesu, wycenę, czekanie i poprawki. U mnie wyglądało to zupełnie inaczej. Siadam, opisuję problem, pokazuję strukturę kodu, pracuję z AI, sprawdzam rezultaty i krok po kroku dopasowuję Maszynkę do tego, czego naprawdę potrzebuję.

To nie jest historia o KSeF

Na pierwszy rzut oka ten tekst jest o KSeF. Ale dla mnie ważniejszy jest inny temat. To jest historia o tym, po co w ogóle mieć własny system w małej firmie.

Nie po to, żeby wszystko było od razu idealne. Własny system — taki, nad którym panuję razem z AI — daje coś dużo bardziej praktycznego: możliwość szybkiego dopasowania firmy do rzeczywistości.

Kiedy zmieniają się przepisy, narzędzia albo sposób pracy, nie jestem całkowicie zależny od gotowego rozwiązania.

Mogę zareagować. Czasem w wymarzony sposób, a czasem kompromisowo. Ale szybko i po swojemu.

I właśnie za to lubię mieć własną Maszynkę.

Dla małej firmy to może być większa przewaga, niż się na początku wydaje.