KSeF: weryfikacja kontrahenta przed wystawieniem e-faktury

W KSeF błąd w danych nabywcy to faktura ustrukturyzowana, którą trudno cofnąć. Sprawdź NIP, nazwę i status kontrahenta w rejestrze, zanim system wyśle plik FA do KSeF.

Problem: faktury w KSeF nie da się po cichu poprawić

Wystawianie faktur w Krajowym Systemie e-Faktur jest obowiązkowe od 1 lutego 2026 r. dla podatników, których sprzedaż w 2024 r. (łącznie z VAT) przekroczyła 200 mln zł, i od 1 kwietnia 2026 r. dla pozostałych przedsiębiorców. Najmniejsi, ze sprzedażą fakturowaną do 10 000 zł brutto miesięcznie, mają czas do końca 2026 r. Faktura ustrukturyzowana w formacie XML dostaje numer KSeF w chwili przyjęcia przez system. Z tego momentu nie poprawiasz jej po cichu w arkuszu: błąd w danych nabywcy poprawia się zwykle fakturą korygującą, a ta też przechodzi przez KSeF.

W praktyce największym źródłem pomyłek są dane kontrahenta: literówka w NIP, stara nazwa po przekształceniu spółki, adres sprzed zmiany siedziby, a czasem firma, której już nie ma w rejestrze. Przy fakturach wystawianych ręcznie księgowość wychwytywała część takich błędów na oko. Przy automatycznym wystawianiu z ERP, sklepu lub systemu rozliczeń nikt tego nie widzi, dopóki nabywca nie odrzuci faktury albo nie zadzwoni z reklamacją.

Dlatego warto dodać jeden krok przed wysyłką do KSeF: porównanie danych nabywcy z rejestrem. Wystarczy jedno zapytanie po NIP.

Jak to działa

  • GET /companies/search?country=PL&nip=... znajduje spółkę po NIP (z walidacją sumy kontrolnej, błędny numer dostaje od razu 400 validation_error). Możesz też szukać po KRS lub REGON.
  • GET /companies/{id} zwraca nazwę, formę prawną, status i adres z KRS. Porównujesz je z danymi, które ERP zamierza umieścić na fakturze.
  • GET /vat/PL{NIP} potwierdza numer VAT UE w VIES, jeśli faktura dotyczy transakcji wewnątrzunijnej.
  • POST /monitor obserwuje stałych nabywców: gdy status zmieni się na rozwiązany lub w likwidacji, dostajesz webhook i wstrzymujesz automatyczne wystawianie.
import os, requests

API = 'https://api.prometiam.com/functions/v1/risk-api'
HEAD = {'Authorization': f'Bearer {os.environ["PROMETIAM_API_KEY"]}'}

def sprawdz_nabywce(nip: str, nazwa_na_fakturze: str):
    r = requests.get(f'{API}/companies/search',
                     params={'country': 'PL', 'nip': nip}, headers=HEAD)
    if r.status_code == 400:
        return {'ok': False, 'powod': 'nieprawidlowy NIP'}
    dane = r.json().get('data') or []
    if not dane:
        return {'ok': False, 'powod': 'brak w rejestrze'}
    firma = requests.get(f'{API}/companies/{dane[0]["id"]}', headers=HEAD).json()['data']
    return {
        'ok': firma['status'] == 'active',
        'status': firma['local_status'],
        'nazwa_zgodna': nazwa_na_fakturze.lower() in firma['company_name'].lower(),
        'firma': firma,
    }

print(sprawdz_nabywce('7740001454', 'ORLEN SPÓŁKA AKCYJNA'))

Przykładowy NIP 7740001454 należy do spółki ORLEN, którą rejestr zapisuje jako „ORLEN SPÓŁKA AKCYJNA”, z formą prawną rozpisaną w całości. Dlatego porównanie nazw warto robić po normalizacji (wielkość liter, skrót formy prawnej), a rozbieżność kierować do człowieka, nie odrzucać automatycznie. Funkcja wywołana przed wysyłką pliku FA do KSeF zatrzymuje fakturę, gdy NIP jest błędny, firmy nie ma w rejestrze, spółka nie jest aktywna lub nazwa na fakturze różni się od rejestrowej. Resztę przepuszcza bez udziału człowieka.

Co dostajesz

PolePo co przy fakturze
company_namePełna nazwa nabywcy zgodna z KRS
identifiersKRS, NIP i REGON w jednym obiekcie
status, local_statusCzy spółka działa, jest w likwidacji lub została rozwiązana
legal_formForma prawna, np. sp. z o.o. lub S.A.
adresSiedziba z rejestru do porównania z adresem na fakturze
vat_number, vat_number_sourceNumer PL + NIP, źródło rule

Numer VAT ma w Polsce źródło rule: zbudowany z NIP, bez potwierdzenia rejestracji. Czynny status podatnika sprawdzisz w białej liście VAT albo przez VIES (GET /vat/PL...).

Czego nie dostaniesz

  • Prometiam nie łączy się z KSeF i nie wystawia faktur. To warstwa danych o kontrahencie, którą wywołujesz ze swojego ERP lub systemu fakturowania.
  • Dla Polski dane są na poziomie firmy: bez członków zarządu, bez CRBR i KRZ, bez zdarzeń rejestrowych i bez komunikatów o niewypłacalności.
  • Dane pochodzą z KRS. Jednoosobowe działalności gospodarcze (CEIDG) nie są w KRS, więc wyszukiwanie po NIP znajdzie spółki i inne podmioty wpisane do KRS, nie osoby fizyczne prowadzące działalność.
  • Rachunki bankowe z białej listy podatników VAT nie są w odpowiedzi API; do tego służy nasze narzędzie białej listy.

Który plan

Sprawdzenie nabywcy to zwykle 2 zapytania na nowego kontrahenta, a stałych nabywców wystarczy zweryfikować raz i trzymać w pamięci podręcznej. Firmie wystawiającej kilkaset faktur miesięcznie wystarcza Starter (9,99 € miesięcznie, 1 000 kredytów). Webhooki z monitoringu to plan Professional (29,99 €, 10 000 kredytów). Ceny są publiczne, rozliczenie roczne daje dwa miesiące gratis.

Szczegóły obowiązku, terminów i sankcji KSeF publikuje Ministerstwo Finansów (ksef.podatki.gov.pl). Ta strona opisuje wyłącznie sposób sprawdzania danych kontrahenta i nie jest poradą podatkową.

Powiązane strony

Rozpocznij 14-dniowy darmowy okres próbny · Dokumentacja API

Okres próbny trwa 14 dni i obejmuje 500 kredytów. Wymagana jest karta, w trakcie okresu próbnego nic nie jest pobierane; potem obowiązuje plan Starter (9,99 € miesięcznie), jeśli go nie anulujesz.

Frequently asked questions

Czy Prometiam wysyła faktury do KSeF?
Nie. To API z danymi rejestrowymi. Wywołujesz je przed wysyłką faktury, a samą fakturę nadal wystawia Twój system lub bramka do KSeF.
Jak sprawdzić nabywcę po NIP?
Użyj GET /companies/search?country=PL&nip=.... Numer jest walidowany sumą kontrolną, a błędny dostaje odpowiedź 400 validation_error. Szukać można też po KRS i REGON.
Co z nabywcami prowadzącymi jednoosobową działalność?
Dane pochodzą z KRS, więc obejmują podmioty wpisane do tego rejestru. Przedsiębiorców z CEIDG nie znajdziesz tym wyszukiwaniem.
Czy API potwierdza, że kontrahent jest czynnym podatnikiem VAT?
Numer VAT jest budowany z NIP (źródło rule), a jego rejestrację potwierdzisz przez GET /vat/PL... (VIES) lub w białej liście VAT. Samo API nie zwraca rachunków bankowych z białej listy.
Kiedy KSeF jest obowiązkowy?
Wystawianie faktur w KSeF jest obowiązkowe od 1 lutego 2026 r. dla podatników, których sprzedaż w 2024 r. przekroczyła 200 mln zł z VAT, i od 1 kwietnia 2026 r. dla pozostałych. Podatnicy ze sprzedażą fakturowaną do 10 000 zł brutto miesięcznie mają czas do końca 2026 r. Aktualne zasady, także dotyczące kar, podaje Ministerstwo Finansów.