API KSeF

API KSeF: wysyłaj e-faktury do KSeF jednym żądaniem POST

Oficjalne API KSeF 2.0 wymaga obsługi logowania przez challenge, szyfrowania RSA-OAEP, sesji interaktywnych, odpytywania o status i pobierania UPO. Notaly robi to za Ciebie: wysyłasz JSON, my generujemy XML FA(3), wysyłamy go do KSeF i powiadamiamy, gdy faktura zostanie przyjęta.

Aktualizacja 6 min czytania

Czym jest API KSeF

KSeF (Krajowy System e-Faktur) to krajowy system e-fakturowania prowadzony przez Ministerstwo Finansów. Każda faktura ustrukturyzowana to dokument XML FA(3), który trzeba wysłać do KSeF. Tam otrzymuje unikalny numer KSeF i urzędowe poświadczenie odbioru, czyli UPO.

Oficjalne API KSeF 2.0 (https://api.ksef.mf.gov.pl/v2) to niskopoziomowy interfejs REST. Bezpośrednia integracja oznacza samodzielną obsługę:

  • logowania przez challenge z tokenem lub certyfikatem KSeF, z tokenem szyfrowanym kluczem publicznym MF (RSA-OAEP);
  • tokenów dostępowych i odświeżających oraz kluczy AES sesji do szyfrowania każdej faktury;
  • generowania XML FA(3) zgodnego z oficjalnym XSD, łącznie z sumami i adnotacjami VAT;
  • odpytywania o status sesji i faktury aż do decyzji KSeF oraz pobierania UPO;
  • osobnych hostów, kluczy i tokenów dla środowisk TEST, DEMO i PRODUKCYJNEGO.

Jedno POST zamiast integracji z KSeF

Notaly to API do e-faktur w Polsce, które robi to za Ciebie. Wysyłasz fakturę jako JSON, a Notaly generuje XML FA(3), waliduje go, wysyła do KSeF, śledzi status i informuje o wyniku.

POST/invoices201 Created
curl -X POST https://api.getnotaly.com/invoices \
  -H "Authorization: Bearer $NOTALY_API_KEY" \
  -H "Idempotency-Key: FV-2026-10-001" \
  -H "Content-Type: application/json" \
  -d '{
    "number": "FV/2026/10/001",
    "issueDate": "2026-10-12",
    "currency": "PLN",
    "seller": { "nip": "2745013933", "name": "Przykład Sp. z o.o.",
                "address": { "line1": "ul. Testowa 1, 00-001 Warszawa", "country": "PL" } },
    "buyer":  { "nip": "1234563218", "name": "Klient Testowy S.A.",
                "address": { "line1": "ul. Próbna 2, 30-001 Kraków", "country": "PL" } },
    "items": [ { "name": "Abonament SaaS", "quantity": 1, "unitNetPrice": 1000, "vatRate": 23 } ]
  }'

Odpowiedź to obiekt faktury ze statusem "submitted" i numerem referencyjnym KSeF. Gdy KSeF podejmie decyzję, otrzymasz podpisany webhook invoice.accepted z numerem KSeF, UPO i linkiem do PDF. Szczegóły znajdziesz w dokumentacji API.

Sandbox: w KSeF TEST NIP sprzedawcy musi wynosić 2745013933 (NIP certyfikatu testowego Notaly). Inny sprzedawca zostanie odrzucony kodem 422 seller_nip_not_authorized, zanim faktura trafi do KSeF, więc nie zużyje darmowej faktury.

Cykl życia faktury

Faktura przechodzi przez cztery statusy API. KSeF ma też wewnętrzną fazę przetwarzania, ale API utrzymuje wtedy status submitted, dopóki KSeF nie zdecyduje.

StatusZnaczenieCo otrzymujesz
draftXML FA(3) wygenerowany i zapisany, jeszcze niewysłany (np. KSeF był niedostępny).id, XML
submittedWysłana do KSeF; pozostaje tu, dopóki KSeF ją przetwarza.Numer referencyjny KSeF
acceptedPrzyjęta przez KSeF.Numer KSeF, UPO, PDF z kodem QR
rejectedOdrzucona przez KSeF.Stały kod błędu, np. ksef_rejected:<kod>

Środowiska KSeF

KSeF ma trzy rozdzielone środowiska. Tokeny, klucze i faktury z jednego nie działają w innym.

ŚrodowiskoHost APIDane dostępoweSkutek prawny
TESTapi-test.ksef.mf.gov.plDane fikcyjneNie
DEMOapi-demo.ksef.mf.gov.plPrawdziwy NIP i tokenNie
PRODUKCJAapi.ksef.mf.gov.plPrawdziwy NIP i tokenTak

Dziś cały proces Notaly działa w KSeF TEST. Produkcja zostanie uruchomiona po weryfikacji podatkowej i prawnej; plany płatne będą wtedy korzystać z tokena KSeF Twojej firmy.

Kogo dotyczy KSeF

KSeF stał się obowiązkowy dla faktur B2B w Polsce w 2026 roku: od 1 lutego 2026 dla firm, których sprzedaż w 2024 roku przekroczyła 200 mln zł, a od 1 kwietnia 2026 dla pozostałych podatników VAT. Najmniejsze firmy otrzymały późniejszy termin. Jeśli tworzysz oprogramowanie do fakturowania, ERP, e-commerce lub billingu dla polskich firm, Twój produkt musi wystawiać faktury przez KSeF.

Notaly wystawia i śledzi e-faktury. Nie świadczy usług księgowych ani nie nalicza podatków.

Cennik

PlanCenaFaktury
SandboxZa darmo3 faktury testowe w KSeF TEST
Starter49 €/mcDo 200 miesięcznie
Scale199 €/mcDo 1 000 miesięcznie

Załóż konto sandbox na stronie głównej. Klucz API dostajesz w kilka sekund, bez karty płatniczej.

Najczęstsze pytania

Czym jest API KSeF?

To REST API Ministerstwa Finansów (KSeF 2.0, /v2) służące do uwierzytelniania, wysyłania ustrukturyzowanych faktur FA(3) do KSeF oraz odczytu ich statusu i UPO. Notaly to warstwa dla programistów: jedno POST /invoices z JSON zamiast sesji, szyfrowania i odpytywania.

Czy potrzebuję własnego tokena KSeF, żeby przetestować Notaly?

Nie. Konta sandbox wysyłają faktury do KSeF TEST z testowymi danymi Notaly (NIP sprzedawcy 2745013933) i obejmują 3 darmowe faktury testowe. Własny token KSeF firmy podłączasz przy przejściu na płatny plan.

Jakie środowiska KSeF obsługuje Notaly?

Dziś pełny proces działa w KSeF TEST. Klient KSeF obsługuje już środowiska TEST, DEMO i PRODUKCYJNE; produkcja zostanie uruchomiona po weryfikacji podatkowej i prawnej.

Skąd wiem, że KSeF przyjął fakturę?

Notaly odpytuje KSeF za Ciebie i wysyła podpisany webhook (invoice.accepted lub invoice.rejected) z numerem KSeF, UPO i linkiem do PDF. W każdej chwili możesz też wywołać GET /invoices/{id}.

Ile kosztuje API KSeF w Notaly?

Sandbox jest darmowy. Starter kosztuje 49 €/mc za do 200 faktur, a Scale 199 €/mc za do 1 000 faktur.

Wystaw pierwszą fakturę testową w KSeF jeszcze dziś

Załóż konto sandbox: klucz API w kilka sekund, 3 darmowe faktury testowe w KSeF TEST, bez karty płatniczej.