---
title: "KSeF - odbieranie faktur zakupu"
description: "Pobieranie faktur zakupowych z Krajowego Systemu e-Faktur - polling, parsowanie FA(3), auto-reconciliation z ręcznie przesłanymi dokumentami."
url: https://numifyai.com/docs/zgodnosc-z-prawem/ksef/odbieranie
review_status: internal
updated: 2026-04-16
---


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.

<ComplianceDisclaimer />

## Model doręczenia [#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 (<LegalRef act="VAT" art="86" />).

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

* zaniedbanie nie przesuwa terminu.

## Dostęp do faktur zakupu [#dostęp-do-faktur-zakupu]

Odbiorca ma trzy sposoby pobierania faktur zakupu:

### 1. Interfejs WWW `ksef.mf.gov.pl` [#1-interfejs-www-ksefmfgovpl]

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) [#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:
<ServiceRef path="src/lib/services/ksef-service.ts">ksef-service.ts</ServiceRef>
zawiera metodę `syncReceivedInvoices()`, wywoływaną przez endpoint
`POST /api/ksef/sync`. Szczegóły UI — zobacz sekcję „Częstotliwość
synchronizacji” poniżej.

### 3. Pobranie zbiorcze [#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 [#flow-auto-reconciliation-w-numify]

Kiedy Numify pobierze nową fakturę z KSeF:

1. **Parsowanie FA(3)** - XML jest parsowany do struktur wewnętrznych:
   <ServiceRef path="src/lib/services/ksef-fa3-parser.ts">ksef-fa3-parser.ts</ServiceRef>.
   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) [#specyfika-reverse-charge-import-usług]

Kiedy otrzymujemy fakturę od kontrahenta zagranicznego (poza KSeF),
zastosowanie mają zasady odwrotnego obciążenia
(<LegalRef act="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 [#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 [#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](/docs/koncepcje/akceptacja-ludzka) - docelowo w Phase 5).

<ChangeHistory>
  <ChangeEntry date="2026-04-16" act="Phase 2">
    Pierwsza wersja - zagregowana z `_legacy/KSEF-REFERENCE.md` oraz
    implementacji `ksef-service.ts` i `ksef-fa3-parser.ts` w Numify.
  </ChangeEntry>
</ChangeHistory>
