NumifyAI
Zgodność z prawemKSeF 2.0
Zweryfikowane wewnętrznie

KSeF - odbieranie faktur zakupu

Pobieranie faktur zakupowych z Krajowego Systemu e-Faktur - polling, parsowanie FA(3), auto-reconciliation z ręcznie przesłanymi dokumentami.

Od kiedy KSeF jest obowiązkowy, faktura zakupu nie trafia do spółki przez e-mail - dostawca wystawia fakturę w KSeF, a odbiorca samodzielnie pobiera ją z systemu. Zmienia to proces akceptacji i księgowania - spółka musi aktywnie sprawdzać, czy nie ma nowych faktur zakupowych.

Informacje mają charakter edukacyjny

Dokumentacja nie zastępuje porady doradcy podatkowego ani biegłego rewidenta. W sprawach szczegółowych skontaktuj się ze specjalistą. Jak weryfikujemy dokumentację ↗

Model doręczenia

Dostawca → [XML FA(3)] → KSeF → ⏸️ oczekuje na odbiór

                     [odbiorca pobiera z KSeF]

                     [księgowanie w systemie odbiorcy]

Data otrzymania faktury = data przyjęcia przez KSeF (tj. data wystawienia przez dostawcę). Nie zależy od momentu, w którym odbiorca fizycznie pobierze fakturę - odliczenie VAT liczy się od dnia wystawienia (Ustawa o VAT, art. 86).

Oznacza to, że odbiorca powinien regularnie sprawdzać nowe faktury

  • zaniedbanie nie przesuwa terminu.

Dostęp do faktur zakupu

Odbiorca ma trzy sposoby pobierania faktur zakupu:

1. Interfejs WWW ksef.mf.gov.pl

Dostępny dla każdego uprawnionego użytkownika (zarząd, prokurent, pełnomocnik). Pozwala ręcznie przeglądać, filtrować i pobierać faktury. Dobre dla spółek z małą liczbą faktur miesięcznie.

2. System księgowy z integracją (rekomendowane)

System księgowy pobiera faktury przez API KSeF automatycznie - np. co 15 minut. Nowe faktury trafiają do kolejki "do akceptacji", gdzie użytkownik może je przejrzeć i zaksięgować.

Numify działa w tym modelu: ksef-service.ts zawiera metodę syncReceivedInvoices(), wywoływaną przez endpoint POST /api/ksef/sync. Szczegóły UI — zobacz sekcję „Częstotliwość synchronizacji” poniżej.

3. Pobranie zbiorcze

API KSeF pozwala pobrać zestaw faktur za wybrany okres jako ZIP z plikami XML. Przydatne do migracji danych lub audytu.

Flow auto-reconciliation w Numify

Kiedy Numify pobierze nową fakturę z KSeF:

  1. Parsowanie FA(3) - XML jest parsowany do struktur wewnętrznych: ksef-fa3-parser.ts. Wyodrębniane są: dostawca (NIP + nazwa), numer faktury, daty, pozycje, kwoty netto / VAT / brutto, ewentualne GTU / MPP.

  2. Weryfikacja kontrahenta - NIP sprawdzany przeciwko rejestrowi kontrahentów. Jeśli kontrahent istnieje - link. Jeśli nie - nowy rekord z danymi z FA(3).

  3. Auto-reconciliation z ręcznie przesłanym dokumentem - jeśli użytkownik wcześniej wgrał PDF tej samej faktury (zanim KSeF ją zsynchronizował), Numify łączy oba rekordy. Kryteria matchowania:

    • NIP dostawcy.
    • Numer faktury.
    • Data wystawienia (tolerancja ±3 dni).
    • Kwota brutto (tolerancja ±1 grosz).
  4. Proponowana dekretacja - AI proponuje kategorię kosztu i konta księgowe. Użytkownik akceptuje lub koryguje.

  5. Księgowanie - po akceptacji tworzone są:

    • Wpis w dzienniku (DR koszt / DR 221 VAT naliczony / CR 202 Rozrachunki).
    • Wpis w rejestrze VAT zakupu z polem NrKSeF.

Specyfika reverse charge (import usług)

Kiedy otrzymujemy fakturę od kontrahenta zagranicznego (poza KSeF), zastosowanie mają zasady odwrotnego obciążenia (Ustawa o VAT, art. 28b). Ta faktura nie jest w KSeF - dostawca zagraniczny nie ma do niego dostępu.

Numify detektuje takie faktury po:

  • Braku polskiego NIP dostawcy.
  • Kraju dostawcy ≠ Polska.

I tworzy dwa wpisy w rejestrze VAT: output VAT (należny, K_29/K_30) i input VAT (naliczony, K_42/K_43) - z tą samą kwotą, zerujące się nawzajem w JPK_V7M.

Częstotliwość synchronizacji

W bieżącej wersji synchronizacja jest manualna — uruchamiana ze strony KSeF w aplikacji (/ksef). Użytkownik wybiera zakres dat (domyślnie ostatnie 30 dni) i klika przycisk synchronizacji — endpoint POST /api/ksef/sync wywołuje syncReceivedInvoices(), która pobiera faktury zakupowe z KSeF API i zapisuje je lokalnie ze statusem PENDING.

Docelowo planowane jest cykliczne zadanie w tle (BullMQ) — np. co 15 minut w godzinach 6:00–22:00 oraz co godzinę w nocy. Do tego czasu odpowiedzialność za regularne uruchamianie synchronizacji spoczywa na użytkowniku.

Akceptacja i księgowanie

Każda pobrana faktura KSeF trafia jako dokument do kolejki parsowania (status pending, potem processing, końcowo completed). Nie jest automatycznie księgowana — użytkownik musi ją zaakceptować przed utworzeniem transakcji i wpisów księgowych:

  • Akceptuj — tworzy transakcję, wpisy w dzienniku i rejestrze VAT.
  • Odrzuć — oznacza dokument jako nieistotny (np. wysłany omyłkowo).
  • Koryguj kontrahenta / kategorię — poprawa propozycji AI przed zaksięgowaniem (dekretacja).

Zaksięgowana faktura jest widoczna w rejestrze VAT oraz w JPK_V7M za odpowiedni okres.

Nie ma automatycznej akceptacji bez interakcji człowieka - zgodnie z zasadą human-in-the-loop (zob. Akceptacja ludzka - docelowo w Phase 5).

Historia zmian podstawy prawnej
  1. Phase 2

    Pierwsza wersja - zagregowana z _legacy/KSEF-REFERENCE.md oraz implementacji ksef-service.ts i ksef-fa3-parser.ts w Numify.

Na tej stronie