Faktura trafia do systemu od razu
Wysyłasz dane faktury zwykłym żądaniem, a wraca urzędowy numer KSeF — dowód, że jest już w rejestrze. Formaty, szyfrowanie, sesje i statusy zostają po stronie usługi.
KSeF Gateway to gotowa usługa do rządowego systemu e-Faktur. Podłączasz ją raz — do sklepu, systemu księgowego albo automatyzacji n8n — i od tej pory wystawianie oraz odbieranie faktur dzieje się automatycznie. Cała techniczna złożoność KSeF zostaje w środku.
Wybierz, co chcesz zrobić w KSeF. Dane poniżej są przykładowe (środowisko testowe, nie prawdziwe faktury) — u siebie wpiszesz własne. Przeklikaj kolejne kroki i przekonaj się, że cała obsługa KSeF sprowadza się do kilku linijek.
Poniżej są nasze wartości demo — u siebie wpiszesz własny adres i klucz. Usługa stoi na Twoim serwerze, klucz zna tylko Twój kod. Ten jest jawny naumyślnie, bo to tylko środowisko testowe (nie prawdziwe faktury).
# ↓ wartości demo — u siebie wpiszesz swoje DEMO="https://ksef-demo.techskills.academy" KEY="0679d36400bfdedcaf1f7d1f5774d0d94ffae5a9f6bc7596cbf24de94d42a8ee"
Jeden JSON z danymi faktury — resztę (szyfrowanie, sesję, podpis, wysyłkę do KSeF) usługa robi za Ciebie. Numer dostaje datę, bo dwóch identycznych faktur KSeF nie przyjmie.
NR="DEMO/$(date +%s)" # unikalny numer
RESP=$(curl -s -X POST "$DEMO/ksef/invoice" \
-H "X-Api-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{
"invoiceNumber": "'"$NR"'",
"issueDate": "'"$(date +%F)"'",
"saleDate": "'"$(date +%F)"'",
"seller": { "nip": "3202004132", "name": "Demo sp. z o.o.",
"address": { "street": "ul. Demo 1", "city": "00-001 Warszawa" } },
"buyer": { "nip": "3202004132", "name": "Demo sp. z o.o.",
"address": { "street": "ul. Demo 1", "city": "00-001 Warszawa" } },
"items": [ { "name": "Usługa demo", "quantity": 1, "unitPrice": 100, "vatRate": 23 } ]
}')W odpowiedzi wraca numer, pod którym Twoja faktura wylądowała w rządowym systemie. Wyłapujesz go do zmiennej — dokładnie tak zrobi Twój kod (bez jq, zwykłym grep-em).
echo "$RESP" # pełna odpowiedź (niżej) KSEF=$(echo "$RESP" | grep -o '"ksefNumber":"[^"]*"' | cut -d'"' -f4) echo "→ numer KSeF: $KSEF"
{"success":true,"data":{
"ksefNumber":"3202004132-20260702-9D77C0C00000-3D",
"status":"accepted","statusDescription":"Sukces",
"sessionReferenceNumber":"20260703-SO-...","invoiceReferenceNumber":"20260703-EE-..."},"error":null}
→ numer KSeF: 3202004132-20260702-9D77C0C00000-3DTen numer zamieniasz na PDF z kodem QR, którym każdy zweryfikuje fakturę. To samo poślesz mailem kupującemu.
curl "$DEMO/ksef/invoice/$KSEF/pdf" \ -H "X-Api-Key: $KEY" -o faktura.pdf
Poniżej są nasze wartości demo — u siebie wpiszesz własny adres i klucz. Usługa stoi na Twoim serwerze, klucz zna tylko Twój kod. Ten jest jawny naumyślnie, bo to tylko środowisko testowe (nie prawdziwe faktury).
# ↓ wartości demo — u siebie wpiszesz swoje DEMO="https://ksef-demo.techskills.academy" KEY="0679d36400bfdedcaf1f7d1f5774d0d94ffae5a9f6bc7596cbf24de94d42a8ee"
Jednym żądaniem pobierasz faktury, które trafiły do KSeF na Twój NIP — bez znajomości ich numerów. To Twój stateless inbox: KSeF pilnuje, co przyszło.
RESP=$(curl -s "$DEMO/ksef/invoices/received" \ -H "X-Api-Key: $KEY") echo "$RESP" # lista faktur (niżej)
{"success":true,"data":{"invoices":[
{"ksefNumber":"3202004132-20260702-9D77C0C00000-3D",
"invoiceNumber":"DEMO/178...","sellerName":"Demo sp. z o.o.",
"grossAmount":123,"currency":"PLN"},
{ ...kolejne faktury... }
]},"error":null}Z listy wyłuskujesz numer KSeF (tu: najnowsza) i pobierasz jej PDF — dokładnie tak, jak zrobiłby to Twój system księgowy przy imporcie kosztów.
KSEF=$(echo "$RESP" | grep -o '"ksefNumber":"[^"]*"' | head -1 | cut -d'"' -f4) curl "$DEMO/ksef/invoice/$KSEF/pdf" \ -H "X-Api-Key: $KEY" -o faktura.pdf
Klucz powyżej jest publiczny i celowo współdzielony (środowisko TEST, jednorazowy NIP). Pełny opis wREADME.
Rządowe API jest potężne, ale wymaga od Ciebie rzeczy, którymi nie powinieneś musieć się zajmować. Każdy, kto się z nim integruje, przechodzi dokładnie tę samą drogę — i na każdym kroku łatwo o błąd.
Schemat faktury, szyfrowanie, sesje, statusy błędów — cała ta maszyneria zostaje w środku. Ty wysyłasz proste dane i dostajesz wynik.
Wysyłasz dane faktury zwykłym żądaniem, a wraca urzędowy numer KSeF — dowód, że jest już w rejestrze. Formaty, szyfrowanie, sesje i statusy zostają po stronie usługi.
Sprzedawca, nabywca, pozycje — tyle wystarczy. VAT liczy się sam. Nie musisz znać schematu faktury ani pól typu P_13_1.
Jedno żądanie i masz PDF faktury z kodem QR, który każdy może zweryfikować w KSeF. Generowany oficjalną biblioteką Ministerstwa.
KSeF nie wysyła powiadomień — usługa tak. Cyklicznie sprawdza nowe faktury i gotowa jest do podpięcia pod maila, Slacka albo n8n.
W środku pracuje SDK utrzymywane przez Ministerstwo Finansów. Gdy KSeF się zmienia, zmiany przychodzą oficjalnym kanałem — nie odwrotną inżynierią.
Poza prostymi operacjami masz dostęp do pełnego API KSeF — ponad 60 operacji, od wysyłki wsadowej po zarządzanie uprawnieniami. Na zapas.
Własny serwer, darmowy hosting w chmurze, AWS albo Azure — gotowe konfiguracje na każdą opcję. Bez uzależnienia od jednego dostawcy.
Kontrahenci wystawiają faktury w KSeF i nie zawsze wysyłają je mailem. Bez powiadomień w samym systemie musisz sam sprawdzać, czy coś wpadło — albo znać numer KSeF z góry. Usługa robi to za Ciebie: sama znajduje nowe faktury po dacie i roli nabywcy — bez znajomości numeru.
Działa, kiedy śpisz
Gotowy workflow n8n co 20 minut pyta usługę o nowe faktury i wysyła każdą na Twój adres — z PDF-em w załączniku. Zero sprawdzania ręcznie.
Od zera do działającej integracji z KSeF w mniej niż pięć minut.
Jedno polecenie na dowolnym komputerze z Dockerem — niczego więcej nie instalujesz. Wolisz bez terminala? Kliknij „Wdróż na Render" — usługa stawia się sama w chmurze.
Do testów: jedno polecenie i masz gotowy certyfikat na środowisku testowym KSeF. Na produkcji: logujesz się Profilem Zaufanym (masz go z bankowości, za darmo) na ap.ksef.mf.gov.pl i wyklikujesz certyfikat w kilka chwil — bez podpisu kwalifikowanego.
Dane sprzedawcy, nabywcy i pozycje — w odpowiedzi dostajesz numer KSeF. Twoja pierwsza faktura właśnie jest w systemie.
KSeF staje się w Polsce obowiązkowy — wchodzi etapami i obejmuje zarówno wystawianie, jak i odbieranie faktur. Zamiast wdrażać integrację na ostatnią chwilę, lepiej mieć ją gotową wcześniej. Przejście z testu na produkcję to kilka kliknięć w rządowym portalu, a certyfikat wygenerujesz Profilem Zaufanym za darmo.
Chcesz zobaczyć każdy krok?
Uwierzytelnianie w produkcji opiera się na certyfikacie KSeF. Pełny przewodnik po certyfikatach, uprawnieniach i konfiguracji multi-NIP — znajdziesz w dokumentacji.
Obsługujesz faktury dla więcej niż jednego NIP-u (klienci biura rachunkowego, spółki w grupie)? Jedna usługa, dowolna liczba firm — każda ze swoim certyfikatem.
Bez limitu czasowego, bez karty kredytowej — pełna moc usługi dla jednej firmy.
To domyślny tryb: uruchamiasz u siebie i od razu wystawiasz faktury. Bez kont, bez haczyków.
Jedna płatność, licencja bezterminowa na tej instalacji. Weryfikacja w pełni offline — klucz licencji nigdy nie opuszcza Twojego serwera. Aktualna cena poniżej.
albo zobacz stronę produktu bezpośrednio →Jak to skonfigurować?
Plik contexts.json, certyfikat per firma, wiele certyfikatów na Render (Secret Files) — pełna instrukcja w dokumentacji.
Docker, serverless czy zarządzana chmura — wszystkie konfiguracje są w repozytorium.
Dwa polecenia i usługa działa. Bez konta w chmurze. Działa na każdym VPS.
Wdrożenie jednym kliknięciem. Ustaw trzy zmienne środowiskowe. Darmowy tier. Oba kontenery (API + PDF) wdrażają się automatycznie.
Deploy jako Lambda z Function URL. SAM CLI obsługuje build. Bliskie zeru koszty przy małym ruchu.
Zarządzane kontenery odzwierciedlające Docker Compose. Szablon Bicep w zestawie, zero zmian w kodzie.
Postaw jedną komendą — na Mikrusie lub dowolnym VPS
Klucz API i pozostałe sekrety generują się same. Nie masz serwera?Mikrusod ~5 zł/mies. w zupełności wystarcza.
KSeF Gateway to samodzielna usługa HTTP. Bez pluginów, bez SDK, bez zmian w Twojej platformie — tylko wywołanie HTTP.
Zalecane — zero zmian w Twojej platformie
Gotowe workflow do wysyłania i odbierania faktur — zero kodu po Twojej stronie. Wysyłka: webhook platformy → transformacja → POST /ksef/invoice. Odbiór: cykliczny poll → pobranie PDF.
Dowolny język, dowolny framework
Dodaj jedno wywołanie HTTP w obsłudze udanej płatności. Działa z PHP, Python, Node.js, Go — wszystkim co potrafi wykonać request HTTP.
Obsługa wielu NIP-ów
Obsługuj faktury dla wielu firm z jednej instancji — wszystkie wpisujesz do jednego pliku konfiguracyjnego, każda ze swoim certyfikatem. Usługa sama rozpoznaje po fakturze, w imieniu której firmy działa.
Open source, na Twoim serwerze, bez abonamentu i bez uzależnienia od dostawcy. Jedno kliknięcie w chmurze albo dwa polecenia u siebie — dokumentacja prowadzi krok po kroku.
To, co zwykle pada w pierwszej rozmowie o wdrożeniu.
Tak, jeśli nie boisz się skopiować kilku poleceń. Gotowe workflow n8n obsługują całość bez pisania kodu, wdrożenie na Render to jedno kliknięcie, a publiczne demo możesz przetestować od razu, bez instalowania czegokolwiek. Instrukcje prowadzą krok po kroku.
Nie. Do wygenerowania certyfikatu KSeF wystarczy Profil Zaufany — darmowy, masz go zwykle z bankowości. Logujesz się na ap.ksef.mf.gov.pl i wyklikujesz certyfikat w kilka chwil. Spółki dodatkowo składają jednorazowo formularz ZAW-FA w urzędzie skarbowym (chyba że mają pieczęć kwalifikowaną).
Wyłącznie na Twoim serwerze. Gateway nie ma bazy danych ani zewnętrznego serwisu pośredniczącego — certyfikat i klucz nigdzie nie wypływają poza oficjalne API KSeF, do którego usługa się nimi uwierzytelnia. Klucz może leżeć zaszyfrowany na dysku i jest odszyfrowywany dopiero w pamięci; nigdy nie trafia do repozytorium ani do obrazu Dockera.
Tak, z jednym zastrzeżeniem, które warto rozumieć. Każdy host — chmura czy własny VPS — technicznie ma dostęp do sekretów usługi w czasie działania, bo dostawca kontroluje warstwę pod spodem (hypervisor). Własny serwer tego nie eliminuje — zmienia tylko, komu ufasz, a zatłoczona maszyna z wieloma usługami bywa mniej bezpieczna niż izolowana instancja u reputowanego dostawcy. Realnie chroni Cię nie to, gdzie leży certyfikat, tylko mocny X-Api-Key, ograniczenie kto może wołać usługę (allowlista IP) oraz to, że certyfikat KSeF w każdej chwili wygenerujesz od nowa, a stary przestaje działać.
Nie — każde zapytanie (poza /health) wymaga nagłówka X-Api-Key z Twoim własnym kluczem gatewaya. Bez niego dostajesz 401, a jeśli klucz w ogóle nie jest ustawiony, gateway odrzuca wszystko (fail-closed), zamiast po cichu zostać otwarty.
Ustaw allowlistę IP przed usługą. Konkretnie: przepuść domenę przez Cloudflare (rekord DNS z włączonym proxy), sprawdź publiczny egress IP swojego callera — osobno IPv4 i IPv6 — i dodaj w Cloudflare regułę WAF, która blokuje wszystko poza tymi adresami. Wtedy nawet gdyby klucz API wyciekł, użyje go wyłącznie zaufany adres. Działa to najlepiej, gdy caller ma stałe IP; adresy domowe/mobilne bywają zmienne, a wewnętrzne adresy VPN (np. Tailscale) nie są widoczne dla publicznej usługi — w takim wypadku kieruj ruch przez stały host i to jego IP allowlistuj. Pełna instrukcja krok po kroku — łącznie z domknięciem obejścia przez publiczny origin — jest w README projektu.
Sam gateway jest open source (AGPL-3.0) i darmowy. Płacisz jedynie za hosting — własny serwer, darmowy tier Render albo pay-as-you-go Lambda/Azure. Samo KSeF jest bezpłatne.
Nie. Podmieniasz certyfikat testowy na produkcyjny w konfiguracji i restartujesz usługę. Wszystko inne — adresy, format danych, podpięte automatyzacje — zostaje bez zmian.
Gateway pilnuje oficjalnych limitów po swojej stronie i odda Ci 429 z nagłówkiem Retry-After, zanim jeszcze uderzy w limit KSeF — nie musisz sam implementować throttlingu.
Tak, przez tryb multi-NIP: każda firma ze swoim certyfikatem w jednym pliku konfiguracyjnym, a usługa sama rozpoznaje, w imieniu której firmy działa — po NIP sprzedawcy z faktury albo jawnym nagłówku.