Automatyczne pobieranie faktur z KSeF co 1 godzinę — konfiguracja, limity i praktyka
Opublikowano: 28 kwietnia 2026 · Autor: KSeF Import · Czas czytania: 8 min
TL;DR — co musisz wiedzieć w 30 sekund
- Co to daje: 24 synchronizacje dziennie zamiast ręcznego logowania co kilka dni. Faktura wystawiona o 10:15 jest w Twoim arkuszu najpóźniej o 11:15.
- Jak to działa: Celery Beat uruchamia task sync co 60 minut + losowy jitter (±15 min), każdy NIP niezależnie. KSeF Import respektuje limity API MF (20 req/h na endpoint query/export).
- Dostępność: Częstotliwość godzinowa aktywna w planach Grupa (99 zł/msc) i Biuro (299 zł/msc). Biuro pozwala schodzić do 15 minut.
- Bezpieczeństwo: Token KSeF odświeżany proaktywnie co 10 min + reaktywnie na błąd 401. Retry z exponential backoff. Zero przegapionych faktur.
- Dla kogo: Firmy potrzebujące szybkiej reakcji na nowe koszty (windykacja, płatności MPP), biura rachunkowe, dashboardy controllingowe, integracje z Make/Zapier.
Słowo „automatyczne" w kontekście KSeF ma u większości dostawców elastyczne znaczenie — jedni odświeżają dane raz dziennie, inni raz na 4-8 godzin. Różnica między „raz dziennie" a „co godzinę" wydaje się kosmetyczna, dopóki nie zaczniesz naprawdę pracować na aktualnych danych. Wtedy okazuje się, że to różnica między „dowiemy się jutro rano" a „księgowa zobaczy fakturę zanim pójdzie na obiad".
Jeśli zamykasz miesiąc ostatniego dnia, pobranie faktur raz dziennie oznacza, że te wystawione po 18:00 wpadną dopiero 1. następnego miesiąca — za późno. Jeśli ściągasz fakturę kosztową z MPP na 40 000 zł brutto i musisz ją zapłacić w terminie, opóźnienie 6-8 godzin w jej zauważeniu potrafi kosztować. W tym artykule pokazujemy, dlaczego sync co godzinę jest inaczej skonstruowany niż naiwne „co N godzin", i jak go skonfigurować bez konfliktów z API KSeF.
Problem: KSeF bez harmonogramu to chaos
Zobacz, jak wygląda typowy dzień w firmie bez automatycznego pobierania:
- 9:45 — księgowa siada do arkusza, ale nie ma nowych faktur (nikt jeszcze nie pobrał).
- 10:20 — właściciel dzwoni: „czy przyszła faktura od HurtPlus?". Księgowa loguje się do portalu MF, sprawdza. Jest.
- 11:15 — kierownik zakupów pyta o fakturę za paliwo. Księgowa znowu loguje się do KSeF.
- 14:30 — trzeba wysłać coś do księgi głównej. Księgowa eksportuje CSV z portalu MF, otwiera w Excelu, kopiuje dane.
- 17:00 — koniec dnia. Nikt nie wie, czy wpadły jeszcze faktury po godzinach.
W firmie z 200 fakturami miesięcznie to 5-10 godzin pracy tygodniowo tylko na „sprawdzaniu KSeF-u". A przy 15 minutach rate-limiting per sesja i konieczności logowania certyfikatem — to dodatkowa frustracja.
Wartość: harmonogram godzinowy w planach Grupa i Biuro
KSeF Import daje 9 kanonicznych częstotliwości synchronizacji: 15 min, 30 min, 1h, 2h, 4h, 6h, 8h, 12h, 24h. Konkretna częstotliwość dostępna dla Ciebie zależy od planu:
| Plan | Minimalna częstotliwość | Rekomendacja |
|---|---|---|
| Solo (9 zł) | 24 h | Mikrofirmy, kilka faktur tygodniowo |
| Firma (29 zł) | 6 h (4× dziennie) | JDG, mała firma handlowa |
| Grupa (99 zł) | 2 h → 1 h (próg godzinowy) | Firmy 10-50 osób z operacjami realnymi |
| Biuro (299 zł) | 15 min (96× dziennie) | Biura rachunkowe, grupy kapitałowe |
Próg 1 godziny to punkt, w którym dane w arkuszu zaczynają być „na tyle aktualne, że można na nich pracować operacyjnie". Przy częstotliwości godzinowej każda nowa faktura jest w arkuszu w ciągu maksymalnie 60 minut od jej pojawienia się w KSeF — w praktyce średnio 30 minut (bo kiedy akurat trafi, nie wiesz).
Architektura: Celery Beat + jitter + backoff
Sync godzinowy to nie jest prosty „cron co 60 minut". Cron to byłby zły pomysł: wszyscy klienci odpaliliby zapytania do KSeF w tej samej sekundzie (np. :00 każdej godziny), co spowodowałoby skokowe obciążenie API MF i ryzyko HTTP 429 (rate limit exceeded). Schemat u nas:
- Celery Beat — scheduler odpalający task sync dla każdego aktywnego NIP-a z harmonogramem godzinowym.
- Jitter ±15 min — losowy offset dodany do momentu odpalenia taska. NIP A może być pobrany o 10:07, NIP B o 10:23, NIP C o 10:51. Rozkładamy obciążenie.
- Per-NIP rate limiter — każdy NIP ma niezależny limit zgodny z limitami KSeF (20 req/h dla endpoint
POST /invoices/query/metadata, 600 req/h dlaGET /invoices/exports/{ref}). - Token refresh — proaktywnie co 10 minut + reaktywnie na 401. Zero przestojów z powodu wygasłego tokena.
- Retry z exponential backoff — jeśli KSeF chwilowo pada (HTTP 5xx), retry po 30s, potem 60s, 120s. Po 3 nieudanych próbach alert do Sentry + email do właściciela NIP-a.
Limity API KSeF, których musisz przestrzegać
Ministerstwo Finansów publikuje twarde limity w ksef-docs. Kluczowe dla sync godzinowego:
| Endpoint | req/s | req/min | req/h |
|---|---|---|---|
| POST /invoices/query/metadata | 8 | 16 | 20 |
| POST /invoices/exports | 4 | 8 | 20 |
| GET /invoices/exports/{ref} | 10 | 60 | 600 |
| GET /invoices/ksef/{nr} | 8 | 16 | 64 |
„20 req/h na query" oznacza: nawet gdybyś miał 25 synchronizacji dziennie, tylko ~20 zapytań typu „query metadata" na godzinę w oknie. Dla sync godzinowego 1 query + 1 export request to komfortowo w limicie. Przy 15-minutowym na planie Biuro: 4 query/h, nadal w okienku.
Co KSeF Import robi z jitterem
Rzecz techniczna, ale kluczowa: jeśli masz 100 klientów na planie Grupa (co 1h), bez jittera wszyscy odpalają się o :00. 100 × 2 zapytania = 200 req o tej samej sekundzie. KSeF to przeżyje, ale Twój Celery worker zginie, a niektóre zapytania wpadną do kolejki na kilka minut.
Z jitterem (do 25% interwału, max 5 min dla sync godzinowego): każdy klient ma pseudolosowy offset w oknie [0 min, 15 min]. 100 klientów rozłożone na 900 sekund = 0,11 klienta/s. Idealnie dla workera i API KSeF.
Konfiguracja krok po kroku
-
Krok 1: Wybierz plan Grupa lub Biuro
Cennik → Grupa (99 zł netto/msc) lub Biuro (299 zł netto/msc). Obie opcje odblokowują sync co 1h. Plany z synchro co 1h są dostępne od razu po aktywacji.
-
Krok 2: Dodaj NIP i wgraj certyfikat
Panel → Certyfikaty → Dodaj certyfikat KSeF (.p12, zaszyfrowany AES-256-GCM po stronie aplikacji). Każdy NIP ma niezależną kolejkę i token.
-
Krok 3: Ustaw harmonogram
Panel → Harmonogram synchronizacji → wybierz „Co 1 godzinę". Możesz wyłączyć sync w godzinach nocnych (np. 23:00-05:00), jeśli i tak nikt nie pracuje — oszczędza to limity API.
-
Krok 4: Wskaż docelowy eksport
Google Sheets, Excel Online lub CSV. Każda synchronizacja automatycznie dopisuje nowe faktury do arkusza (bez duplikatów — klucz po numerze KSeF).
-
Krok 5: (Opcja) Włącz powiadomienia
Panel → Powiadomienia → email po każdej synchronizacji z podsumowaniem (N nowych faktur, wartość) albo tylko gdy znajdzie się faktura MPP-owska > 15 000 zł. Koniec z dzwonieniem do księgowej „czy coś wpadło?".
Scenariusze, w których 1h robi różnicę
-
Windykacja / monitoring kontrahentów
Klient wystawił fakturę — chcesz wiedzieć od razu, żeby zaksięgować należność. Przy sync godzinowym należność jest w systemie najpóźniej 60 min po wystawieniu, gotowa do pilnowania terminu.
-
Split payment z terminem płatności
Faktura MPP na 30 000 zł brutto z terminem 7 dni. Sync godzinowy zapewnia, że zauważysz ją w tym samym dniu, co wystawienie — masz pełne 7 dni na płatność, nie 5 dni zredukowane o opóźnienie sync. Więcej o MPP w artykule o automatycznym flagowaniu faktur MPP.
-
Integracje Make / Zapier / n8n
Jeśli automatyzacja wysyła powiadomienia Slack, wpisuje do CRM albo tworzy zadanie w Asana — częstotliwość KSeF Import wyznacza górny próg latencji Twojego workflow. Sync 6h = alerty Slack opóźnione o 6h. Sync 1h = prawie real-time. Praktyczne scenariusze w artykule o automatyzacji Make.com.
-
Dashboard CFO / controller
Power BI z odświeżaniem scheduled refresh co godzinę nie ma sensu, jeśli arkusz źródłowy aktualizuje się raz na 6h. Dashboard Power BI zasilany sync godzinowym = pełna aktualność. Kontekst w Power BI dla CFO.
Co się dzieje, gdy KSeF jest niedostępny
Ministerstwo Finansów czasem ma przerwy serwisowe albo niespodziewane padnięcia. KSeF Import obsługuje to trzema warstwami:
- Retry 3× z 30/60/120s — dla chwilowych timeoutów.
- Circuit breaker — po 10 kolejnych padach konkretnego NIP-a automatyka pauzuje go na 30 min, żeby nie eksploatować API.
- Backfill przy odzyskaniu — gdy KSeF wraca, następna synchronizacja pobiera wszystkie faktury z okresu przerwy (do 89 dni wstecz, bo takie są limity query range w KSeF v2).
W rezultacie: jeśli KSeF padł o 14:00 i wrócił o 16:30, Twój arkusz o 17:00 ma wszystkie faktury z tego okna. Zero zgubionych dokumentów.
Efekt: operacyjna świeżość danych
- 24 synchronizacje dziennie, 720 miesięcznie — zero ręcznego logowania.
- Faktury w arkuszu w ciągu godziny od wystawienia — dashboardy są aktualne, gdy księgowa pije kawę o 9:00.
- Alerty natychmiastowe na MPP, terminy płatności, faktury od nietypowych kontrahentów.
- Zgodność z limitami API KSeF — zero ryzyka HTTP 429, zero blokad.
- Niezależność od dostępności MF — retry, circuit breaker, backfill przy recoveryey.
Dla firmy, która pracuje operacyjnie na danych z KSeF (a nie tylko do rozliczenia podatkowego raz w miesiącu), różnica między sync 6h a sync 1h to różnica między „aplikacja, która czasem odświeża dane" a „aplikacja, w której dane są".
Artykuł przygotowany przez zespół KSeF Import
Faktury z KSeF w arkuszu co godzinę — bez ręcznego logowania
KSeF Import synchronizuje z API Ministerstwa Finansów 24 razy na dobę, respektuje limity, pauzuje przy awarii i backfilluje po niej. 7 dni za darmo.
Skonfiguruj sync godzinowy — zacznij za darmo