Od zamówienia do KSeF — automatyzacja faktur z akceptacją e-mailową
Proces fakturowania B2B łączy zamówienia otrzymywane e-mailem, akceptację operatora, wysyłkę do KSeF i miesięczne archiwum XML/PDF w Google Drive. Osobne importy sprzedaży i zakupów przypisują dokumenty do właściwego okresu.
Wyzwanie
Powtarzające się zamówienie zakupu przychodziło jako załącznik PDF. Wystawienie faktury wymagało przepisania kwot, sprawdzenia danych klienta, utworzenia dokumentu i zapisania go dla księgowości. Pierwotny proces obejmował również ręczne przygotowanie odpowiedzi e-mailowej.
Rozbudowa procesu o KSeF dodała kolejne wymagania: operator musiał sprawdzić fakturę przed wysłaniem, a dokumenty sprzedażowe i zakupowe miały trafiać do właściwego miesięcznego archiwum. Faktura wystawiona w maju za usługę wykonaną w kwietniu powinna znaleźć się w kwietniowym folderze sprzedaży.
Rozwiązanie
Cztery połączone przepływy n8n obsługują odbiór zamówień, akceptację i wysyłkę do KSeF, import sprzedaży oraz import zakupów. Operator sprawdza podgląd PDF i zatwierdza go e-mailem. System zajmuje się przygotowaniem, wysłaniem, pobraniem i archiwizacją dokumentów wokół tej decyzji.
- 01
Odbiór zamówienia zakupu
Filtr przekazywania w Gmail kieruje wybrane wiadomości z zamówieniami na dedykowany adres odbiorczy Resend. n8n pobiera wiadomość i załącznik PDF przez Resend, a przed przetwarzaniem sprawdza nadawcę. Odbiór zamówień nie wymaga już cyklicznego odpytywania Gmail przez OAuth.
Przepływ odczytuje numer zamówienia, walutę, kwotę netto, VAT, kwotę brutto i NIP nabywcy. Sprawdza wymagane dane oraz sumę kontrolną NIP, a następnie pobiera dane klienta z Firestore.
- 02
Podgląd i akceptacja e-mailem
System zapisuje w Firestore zamówienie oczekujące na akceptację i generuje podgląd faktury. Resend wysyła operatorowi prośbę o zatwierdzenie z zamówieniem i podglądem faktury w załącznikach PDF. Dokument źródłowy i proponowaną fakturę można więc sprawdzić razem.
Operator odpowiada
approved. Cloudflare Email Routing i Worker przekazują odpowiedź do n8n, gdzie zostaje ona powiązana z zapisanym zamówieniem. Wysłanie faktury do KSeF poprzedza w ten sposób świadoma decyzja człowieka. - 03
Wysłanie zatwierdzonej faktury do KSeF
Po akceptacji n8n buduje XML faktury, korzysta z usługi pomocniczej KSeF do szyfrowania, wysyła dokument i sprawdza status przetwarzania. Następnie uruchamia import sprzedaży, który pobiera dokumenty z KSeF i zapisuje je w archiwum.
Ten proces zastępuje wcześniejsze wystawianie przez API bankowe i przygotowywanie wersji roboczej w Gmail. Obecny przepływ kończy się zapisaniem dokumentów z KSeF w Drive; nie przygotowuje ani nie wysyła końcowego e-maila do klienta.
- 04
Archiwizacja sprzedaży i zakupów według właściwych dat
Dwa przepływy importu pobierają eksporty faktur z KSeF, wyodrębniają dokumenty XML, generują czytelne PDF-y i zapisują oba formaty w Google Drive w folderach rok/miesiąc.
- Faktury zakupowe: import cykliczny obejmuje poprzedni miesiąc kalendarzowy i wybiera faktury według daty wystawienia (
P_1). - Faktury sprzedażowe: import uruchamia się po zatwierdzonej wysyłce lub ręcznie i wybiera dokumenty według daty sprzedaży lub wykonania usługi (
P_6lubP_6A) z uwzględnieniem nakładania się okresu świadczenia usługi.
Na przykład faktura sprzedażowa wystawiona w maju za usługę wykonaną w kwietniu trafia do archiwum kwietniowego. Rozdzielenie tych reguł ułatwia księgowości pracę z dokumentami.
- Faktury zakupowe: import cykliczny obejmuje poprzedni miesiąc kalendarzowy i wybiera faktury według daty wystawienia (
Usprawnienia obsługi
Ostatnie zmiany dotyczą szczegółów, które mają znaczenie w regularnej pracy:
- Obsługa przekazywanych wiadomości i załączników zachowuje PDF-y potrzebne do weryfikacji.
- Import zakupów zachowuje numer KSeF faktury podczas przetwarzania dokumentów.
- Własna usługa
@mdab25/ksef-pdfkorzysta z przypiętej wersji 1.0.0, aby zapewnić spójne generowanie PDF-ów. - Sprawdzanie statusów odbywa się w odstępach, a każdy przepływ ma limit czasu wykonania. Niedokończona operacja zewnętrzna nie utrzymuje więc uruchomienia bez końca.
- Wyłączono zapisywanie postępu każdego węzła, ograniczając zbędne zapisy do bazy danych.
- Szablony przepływów bez danych poufnych, dokumentacja wdrożenia i instrukcje kopii zapasowych ułatwiają ponowne uruchomienie oraz utrzymanie rozwiązania.
Efekt
Rozwiązanie łączy odbiór zamówienia, weryfikację, wysyłkę do KSeF i archiwum księgowe w jeden proces. Operator może sprawdzić proponowaną fakturę ze swojej skrzynki, a system ponownie wykorzystuje odczytane dane i automatycznie zapisuje dokumenty.
Główne korzyści to mniej ręcznego przenoszenia danych między systemami, zapisany etap akceptacji, oryginały XML obok czytelnych PDF-ów oraz osobne reguły dat dla sprzedaży i zakupów.
Wcześniejsza wersja opisywała skrócenie około 15 minut pracy ręcznej do poniżej 30 sekund automatycznego przetwarzania. Był to wynik pierwotnego przepływu. Obecny proces obejmuje akceptację człowieka i przetwarzanie w KSeF, więc jego całkowity czas zależy od operatora oraz usługi zewnętrznej. Nie podajemy tu nowego pomiaru czasu całego procesu.
Technologia
- n8n
- Koordynacja przepływów, wywołania API i importy cykliczne.
- Resend
- Odbiór wiadomości i załączników oraz wysyłanie próśb o akceptację.
- Cloudflare Email Routing i Workers
- Przekazywanie odpowiedzi zatwierdzających do n8n.
- Firestore
- Dane klientów i stan akceptacji zamówień.
- KSeF API
- Wysyłanie faktur oraz eksport sprzedaży i zakupów.
- Google Drive API
- Miesięczne archiwa XML i PDF.
- Node.js, Express, Docker i @mdab25/ksef-pdf
- Podglądy, generowanie PDF-ów faktur i funkcje szyfrowania.