Biała lista VAT: automatyzacja weryfikacji rachunków dostawców

Płatność B2B ≥ 15 000 zł brutto wymaga weryfikacji rachunku dostawcy na białej liście w dniu przelewu. Pokazujemy trzy mechanizmy i procedurę ZAW-NR.

Published
Updated
Reading Time
25 min
Topics:
AP AutomationPolandbiała listaZAW-NRsupplier verificationbiuro rachunkowe

Wyobraź sobie tabelę z 200 fakturami kosztowymi od 47 dostawców z terminem płatności na koniec miesiąca, średnia wartość 18 500 zł brutto. Część dostawców to kontrahenci stali, z którymi pracujesz od lat. Część to firmy, z którymi rozliczasz się po raz pierwszy. Każdy z tych przelewów musi przejść tę samą bramkę: sprawdzenie numeru rachunku odbiorcy na wykazie podatników VAT w dniu zlecenia przelewu. Pytanie operacyjne nie brzmi, czy weryfikować, tylko jak zrobić to w dwie godziny zamiast w osiem.

Każda płatność B2B w Polsce powyżej 15 000 zł brutto wymaga sprawdzenia rachunku dostawcy na białej liście podatników VAT w dniu zlecenia przelewu. Weryfikację można wykonać ręcznie na wykaz.podatnicy.gov.pl, automatycznie przez API Wykazu podatników VAT prowadzone przez Ministerstwo Finansów (z dziennym limitem zapytań), lub przez codzienny plik płaski wykazu pobierany jako całość. Jeśli rachunku odbiorcy nie ma na liście w dniu zlecenia przelewu, kupujący ma 7 dni od dnia zlecenia przelewu na złożenie zawiadomienia ZAW-NR do urzędu skarbowego właściwego dla sprzedawcy.

Bramka jest twarda. Konsekwencją zlecenia przelewu na rachunek, którego nie ma na liście, bez następczego ZAW-NR jest utrata kosztu uzyskania przychodu od zapłaconej kwoty oraz odpowiedzialność solidarna nabywcy za VAT sprzedawcy z tytułu tej transakcji. To są dwie sankcje na raz, każda dotkliwa, i obie spadają na nabywcę, a nie na kontrahenta, który podał błędny lub niezgłoszony rachunek.

Drugi element, który komplikuje praktykę: próg 15 000 zł liczony jest do wartości transakcji brutto z jednym kontrahentem, nie do wartości pojedynczego przelewu. Jeżeli faktura na 30 000 zł brutto zostanie podzielona na dwa przelewy po 15 000 zł, biała lista weryfikacja rachunku jest obowiązkowa dla obu. Pojedynczy przelew na 9 000 zł, który jest częścią zapłaty za fakturę na 25 000 zł brutto, też podlega weryfikacji w dniu zlecenia. Reguła "przelew powyżej 15 000 weryfikacja konta" jest skrótem myślowym, w którym chodzi o transakcję, nie o sumę zaksięgowaną na zleceniu bankowym.

Trzy mechanizmy weryfikacji — wybór ze względu na miesięczny wolumen sprawdzeń

Wykaz podatników VAT jest dostępny w trzech kanałach, z których każdy odpowiada innej skali operacji. Web lookup, API i plik płaski nie są wymienne, są kolejnymi szczeblami drabiny wolumenowej. Pomyłka polega zwykle nie na tym, że ktoś wybiera niewłaściwy kanał, tylko na tym, że trzyma się jednego, gdy operacja go przerosła.

Web lookup na wykaz.podatnicy.gov.pl. Strona Ministerstwa Finansów z polem do wpisania NIP-u, numeru rachunku lub nazwy. Wynik na ekranie, do wglądu od razu, do archiwizacji najczęściej przez print do PDF. Bezpłatny, bez logowania, bez konta. Praktyczny próg sensowności to mniej więcej 5 sprawdzeń dziennie. Powyżej tej granicy ręczne wpisywanie 26-znakowego numeru rachunku jest zarówno czasochłonne, jak i kosztowne w skutkach pomyłki: literówka w jednej cyfrze daje wynik "nie znaleziono", a osoba sprawdzająca albo zlecy ZAW-NR niepotrzebnie, albo (gorzej) wpisze numer ponownie i przeoczy, że oryginalny wpis na fakturze miał błąd. Web lookup nadaje się dla mikrofirmy z kilkoma kontrahentami w miesiącu i dla okazjonalnych sprawdzeń ad hoc, kiedy księgowa potrzebuje potwierdzić jeden konkretny przypadek.

API Wykazu podatników VAT dostępne pod adresem https://wl-api.mf.gov.pl/ to interfejs REST z dwiema kluczowymi metodami. Metoda search jest zbiorcza, przyjmuje do 30 podmiotów na pojedyncze zapytanie i zwraca pełne wpisy z wykazu z rachunkami i statusem VAT. Metoda check to sprawdzenie pojedynczej pary NIP–numer rachunku z odpowiedzią tak/nie, użyteczne tam, gdzie potrzebny jest punktowy walidator (na przykład w bramce zatwierdzania przelewu w systemie księgowym). Zgodnie z dokumentacją API Wykazu podatników VAT publikowaną przez Krajową Administrację Skarbową metoda search pozwala na maksymalnie 100 zapytań dziennie po maksymalnie 30 podmiotów jednocześnie; po przekroczeniu limitu dostęp do API zostaje zablokowany do godziny 0:00. Limit liczony jest na adres IP, a nie na NIP nabywcy ani na konto użytkownika, co ma praktyczną konsekwencję: organizacja prowadząca mass-verification dla wielu klientów z jednego serwera planuje dobę pod ten limit i traktuje go jako twardy zasób do alokacji, nie jako ograniczenie teoretyczne.

Plik płaski. Codzienny dump całego wykazu publikowany przez Ministerstwo Finansów, w wersji skompresowanej ważący około 200 MB i zawierający w okolicach 3 milionów pozycji (czynni i zwolnieni podatnicy VAT wraz ze zgłoszonymi rachunkami). Refresh w okolicach godziny 0:00 każdego dnia roboczego. Mechanika: skrypt pobiera plik raz dziennie nad ranem, weryfikuje sumę kontrolną opublikowaną razem z plikiem, parsuje zawartość do lokalnej bazy lub do struktury w pamięci, po czym wszystkie sprawdzenia odbywają się lokalnie, bez kontaktu z API. Plik płaski jest mechanizmem dla biura rachunkowego obsługującego 30 i więcej klientów lub dla firmy z bazą 1 000 i więcej kontrahentów aktywnych w danym miesiącu. Wymaga elementu IT po stronie biura: harmonogramu pobrań, walidacji sumy kontrolnej, integracji z systemem księgowym lub osobnego narzędzia weryfikacyjnego.

Drzewo decyzyjne, w którym mechanizm pasuje do której skali, sprowadza się do liczby sprawdzeń w typowym dniu roboczym:

  • Do około 5 sprawdzeń dziennie wystarczy web lookup. Próg administracyjny, nie operacyjny.
  • Od 5 do około 200 sprawdzeń dziennie sensowna jest weryfikacja masowa biała lista przez API z dyscypliną batchingu po 30 podmiotów na zapytanie. Średnia firma z działem AP, jeden większy klient biura rachunkowego.
  • Powyżej 200 sprawdzeń dziennie lub przy biurze obsługującym wielu klientów w jednym przepływie codziennym fundamentem powinien być plik płaski, a API rolą fallbacku dla świeżości danych w dniu zlecenia przelewu (w przypadkach, gdy klient miałby do czynienia z kontrahentem zarejestrowanym lub zmienionym po wczorajszym refreshu pliku).

Zasadę inżynierską warto nazwać wprost, bo wiele praktycznych poradników jej nie nazywa: biała lista API jest zasobem o twardym limicie, więc każde zapytanie ma być zapełnione do końca. Pojedyncze sprawdzenia przez metodę search z jednym podmiotem w zapytaniu wyczerpują limit 100 zapytań przy 100 sprawdzeniach dziennie zamiast przy 3 000 sprawdzeniach (100 zapytań × 30 podmiotów). To różnica między architekturą, która wytrzyma poranny batch dla 20 klientów biura, a taką, która zablokuje się przed południem.

Konkretny kształt wywołania metody search w postaci minimalnego pseudo-JSON-a, dla zilustrowania, co dokładnie trafia do śladu audytowego:

GET /api/search/nips/1111111111,2222222222,3333333333?date=2026-01-31

{
  "result": {
    "subjects": [
      {
        "nip": "1111111111",
        "name": "ACME Sp. z o.o.",
        "statusVat": "Czynny",
        "accountNumbers": ["12 1020 1111 0000 1234 5678 9012"],
        ...
      },
      ...
    ],
    "requestDateTime": "2026-01-31T08:42:11.123",
    "requestId": "abc123de-..."
  }
}

Pole requestDateTime razem z requestId zwracane w odpowiedzi to najważniejsze elementy z punktu widzenia śladu audytowego — udowadniają, że zapytanie zostało wykonane w konkretnej chwili dnia, w którym zlecony był przelew. Biała lista plik płaski daje analogiczny ślad inną drogą: identyfikator pliku z danego dnia razem z sumą kontrolną pozwala odtworzyć stan wykazu, jaki był wykorzystany podczas weryfikacji, nawet po latach.

Dzień zlecenia przelewu i ślad audytowy — co konkretnie zarchiwizować i na jak długo

Reguła "weryfikacja w dniu przelewu" jest jednolinijkowa i przez tę jednolinijkowość najczęściej przeoczana. W praktyce decyduje nie tylko o tym, czy księgowa zachowuje koszt uzyskania przychodu, ale o tym, co zostanie po latach, gdy kontroler KAS poprosi o odtworzenie procedury z konkretnej daty.

Weryfikacja musi obejmować rachunek na dzień zlecenia przelewu. Nie na dzień wystawienia faktury. Nie na dzień otrzymania faktury w sekretariacie ani na dzień wprowadzenia jej do systemu księgowego. Nie na dzień zatwierdzenia faktury w workflow akceptacji. Jeśli przelew jest zlecany 31 stycznia, a faktura była wystawiona i wprowadzona do systemu 5 stycznia, sprawdzenie z 5 stycznia nie wystarcza dla obrony pozycji w razie kontroli. Wykaz aktualizuje się codziennie, rachunek dodany 3 stycznia mógł zostać wycofany do 31 stycznia, i to stan z dnia zlecenia jest tym, który ustawa zna i którego dowodzi się przed organem.

"Dzień zlecenia przelewu" jest tu pojęciem precyzyjnym. To data kalendarzowa, w której nabywca składa dyspozycję wykonania przelewu w swoim banku, niezależnie od tego, kiedy bank fizycznie wykona transakcję ani kiedy rachunek odbiorcy zostanie uznany. Dla przelewów z datą przyszłą (dyspozycja złożona w piątek z realizacją w poniedziałek) liczy się piątek jako dzień zlecenia, nie poniedziałek jako dzień realizacji. Dla przelewów wsadowych (paczka z systemu księgowego wysłana do banku jednym plikiem) data zlecenia to data wysłania paczki, a praktycznym ograniczeniem jest to, że weryfikacja wszystkich pozycji w paczce musi zostać wykonana w tym samym dniu, w którym paczka jest puszczana.

Ślad audytowy z każdego z trzech mechanizmów ma inną postać, ale w każdym przypadku trzeba zachować coś, co jednoznacznie wskazuje moment zapytania i jego wynik:

  • Z API — surowy JSON response z polami requestDateTime i requestId. To są pola wystawiane przez stronę KAS i mają moc dowodową: pokazują, kiedy zapytanie zostało odebrane przez serwer Wykazu i jakim identyfikatorem zostało zarejestrowane. Archiwizacja: plik tekstowy z odpowiedzią, nazwany w sposób pozwalający go odnaleźć (na przykład data zlecenia + NIP kontrahenta + numer faktury).
  • Z web lookup — print do PDF strony z wynikiem, z widoczną datą po stronie przeglądarki i widocznym potwierdzeniem wyszukania w treści strony. Jest to dowód słabszy niż JSON z API (timestamp pochodzi z urządzenia klienta, nie z serwera), więc dla mniejszego dziennego wolumenu jest akceptowalny, ale tam, gdzie wolumeny są wyższe, web nie jest mechanizmem śladu, tylko awaryjnym.
  • Z pliku płaskiego — wpis zawierający NIP, sprawdzony numer rachunku, status oraz identyfikator pliku z danego dnia (najczęściej w formie sumy kontrolnej publikowanej razem z plikiem). Suma kontrolna pliku z konkretnego dnia jest tym, co pozwala udowodnić, że weryfikacja oparła się o stan wykazu z dnia zlecenia, a nie o stan z innego dnia.

Ślad nie jest dokumentem luźnym. Ma być podpięty pod konkretną fakturę i konkretny przelew w systemie księgowym klienta — w Optimie, Symfonii, Subiekcie nexo, własnej bazie, albo w cyfrowym archiwum dokumentów. Różnica między "mamy plik weryfikacji gdzieś w katalogu sieciowym" a "mamy potwierdzenie weryfikacji jako załącznik do dokumentu nr X z dnia Y" jest różnicą między procedurą, która wytrzymuje kontrolę, a procedurą, która tej kontroli formalnie nie ma.

Okres przechowywania wyznacza przedawnienie zobowiązań VAT: 5 lat licząc od końca roku kalendarzowego, w którym upłynął termin płatności VAT za dany okres rozliczeniowy. W praktyce biura rachunkowe trzymają materiał dłużej, dopóki klient nie zażąda usunięcia po zakończeniu współpracy, ponieważ koszt przechowywania (pliki tekstowe i PDF, łącznie kilkadziesiąt MB rocznie na klienta) jest nieporównywalny z kosztem utraty kosztu uzyskania przychodu za fakturę sprzed czterech lat.

Przypadek graniczny warto nazwać, bo każde biuro się z nim spotyka. Jeżeli z powodu przerwy technicznej API (zdarzają się, najczęściej w godzinach porannych) albo zwykłego niedopatrzenia weryfikacja w dniu zlecenia nie została wykonana, a przelew już poszedł, ślad nie da się odtworzyć ex post. Sprawdzenie dwa dni później pokazuje stan z dwóch dni później, nie z dnia zlecenia. Wyjścia są dwa: jeśli rachunek faktycznie nie figurował na liście, jedynym ratunkiem jest złożenie ZAW-NR z zachowaniem 7-dniowego terminu liczonego od dnia zlecenia (czyli już praktycznie od razu); jeśli rachunek był na liście, ale brak jest dowodu w aktach, pozostaje akceptacja ryzyka kontrolnego i pisemna notatka o braku weryfikacji z uzasadnieniem przyczyny.

Biała lista i mechanizm podzielonej płatności — dwa równoległe obowiązki, nie wymienne

W praktyce biur rachunkowych powtarza się jedno założenie, które jest niemal zawsze błędne: że jeśli płatność idzie z mechanizmem podzielonej płatności, weryfikacja na białej liście "się załatwia automatycznie", bo skoro pieniądze trafiają na rachunek VAT sprzedawcy, to nabywca jest bezpieczny. Założenie jest błędne, a praktyczne konsekwencje pomyłki są takie same jak braku weryfikacji w ogóle: utrata kosztu uzyskania przychodu i odpowiedzialność solidarna.

Test, kiedy obowiązują obie reguły naraz, jest prosty. Jeżeli transakcja przekracza 15 000 zł brutto AND obejmuje towary lub usługi z załącznika 15 ustawy o VAT (między innymi elektronika z konkretnych kategorii, paliwa, stal i wyroby ze stali, części samochodowe, węgiel, usługi budowlane oraz pełna lista w samym załączniku), to obowiązkowy jest mechanizm podzielonej płatności AND obowiązkowa jest weryfikacja rachunku odbiorcy na białej liście. Spełnienie jednego z tych obowiązków nie zwalnia z drugiego. Biała lista a MPP jednocześnie to standardowa konfiguracja przy fakturach z załącznika 15 powyżej progu, nie wyjątek.

Powód, dla którego MPP nie zastępuje weryfikacji, jest mechaniczny. MPP rozdziela kwotę przelewu na dwie ścieżki księgowe: kwota netto trafia na rachunek rozliczeniowy sprzedawcy (rachunek bieżący jego firmy), a kwota VAT trafia na jego rachunek VAT (subkonto powiązane z rachunkiem rozliczeniowym, prowadzone przez ten sam bank na podstawie przepisów ustawy). Wykaz podatników VAT publikuje rachunki rozliczeniowe zgłoszone do urzędu skarbowego, nie publikuje rachunków VAT podpiętych do tych rachunków. Czyli: nawet jeżeli przelew formalnie zawiera komunikat MPP i bank automatycznie rozdziela kwotę, rachunek rozliczeniowy sprzedawcy musi figurować na białej liście w dniu zlecenia przelewu, żeby nabywca zachował koszt i uniknął odpowiedzialności solidarnej.

Praktyczny przypadek typowy dla działu zobowiązań: faktura na 20 000 zł brutto za usługi budowlane (świadczenie z załącznika 15). Procedura przy puszczaniu przelewu ma trzy elementy, z których każdy jest obowiązkowy i każdy zostawia własny ślad:

  • Weryfikacja rachunku rozliczeniowego sprzedawcy na białej liście w dniu zlecenia przelewu, ślad jak w poprzedniej sekcji (JSON z API, print z web, wpis z pliku płaskiego).
  • Komunikat "MPP" w treści przelewu, wraz z polami wymaganymi przez bank (numer faktury, NIP sprzedawcy, kwota brutto i kwota VAT).
  • Rozdzielenie kwoty przez bank: netto na rachunek rozliczeniowy, VAT na rachunek VAT, według parametrów przekazanych w zleceniu.

Trzy elementy, każdy z własnym uzasadnieniem prawnym i własnym śladem w dokumentacji.

Edge case warto wymienić, bo bywa źródłem ślepej uliczki w biurze. Jeżeli sprzedawca poda na fakturze wyłącznie numer rachunku VAT (subkonto) zamiast rachunku rozliczeniowego, sprawdzenie tego numeru na białej liście da wynik negatywny, ponieważ wykaz publikuje rachunki rozliczeniowe, a rachunki VAT są instytucjonalnie powiązane z bankiem, nie z publikacją w wykazie. Rozwiązanie jest jedno: poprosić sprzedawcę o podanie rachunku rozliczeniowego i fakturę skorygować lub potwierdzić dane przelewu na podstawie korespondencji, zanim przelew zostanie puszczony. Złożenie ZAW-NR w tym przypadku jest opcją, ale niepotrzebną, bo dane można wyjaśnić u źródła.

Pełne omówienie samego MPP, w tym kategorie z załącznika 15, kwalifikacja świadczeń mieszanych (część z załącznika i część poza nim na jednej fakturze), zwolnienia z obowiązku oraz sankcje za pominięcie komunikatu, wykracza poza zakres tej procedury i jest tematem osobnego artykułu o mechanizmie podzielonej płatności (MPP) i kategoriach z załącznika 15 ustawy o VAT.

Reguła agregacji: próg 15 000 zł na transakcję, nie na pojedynczy przelew

Próg 15 000 zł brutto odnosi się do wartości jednorazowej transakcji z jednym kontrahentem, niezależnie od tego, na ile przelewów zostanie ona podzielona w realizacji. To jedna z reguł, które łatwo zgubić, gdy faktura jest opłacana w ratach lub gdy harmonogram płatności rozkłada zobowiązanie na kilka pozycji w kolejce przelewów.

Faktura na 30 000 zł brutto, której zapłata została podzielona na dwa przelewy po 15 000 zł, w całości podlega weryfikacji rachunku na białej liście. Każdy z dwóch przelewów wymaga sprawdzenia wykazu na własny dzień zlecenia. Jeżeli pierwszy przelew jest puszczany 15 stycznia, a drugi 15 lutego, potrzebne są dwa odrębne ślady weryfikacji: jeden ze stanu wykazu z 15 stycznia, drugi ze stanu z 15 lutego. Rachunek mógł w międzyczasie zostać wycofany z wykazu, dodany ponownie, albo zastąpiony innym — żadna z tych zmian nie zwalnia drugiego przelewu z obowiązku własnej weryfikacji.

Sytuacja symetryczna z drugiej strony bywa równie często źródłem nieporozumień. Dwie odrębne faktury od tego samego kontrahenta, każda na 10 000 zł brutto, opłacane oddzielnie, nie agregują się do progu — każda jest poniżej 15 000 zł i obowiązek weryfikacji nie powstaje. Wyjątek, na który warto uważać, dotyczy sytuacji, w której dwie faktury są w sensie ekonomicznym częścią jednej transakcji (na przykład sztucznie rozdzielony zakres usług, faktura zaliczkowa i końcowa za to samo świadczenie); w takich wypadkach KAS może zakwestionować rozliczenie i potraktować całość jako jedną transakcję powyżej progu. Ostrożna praktyka biura to przyjąć, że jeżeli z umowy lub okoliczności wynika jedno świadczenie, agreguje się.

Konsekwencja proceduralna jest następująca: moment kontroli progu to wprowadzenie faktury kosztowej do księgowości, a nie moment, w którym ktoś z zespołu przygotowuje zlecenie przelewu w bankowości firmowej. Dlaczego: w momencie wprowadzania faktury widać jej pełną wartość brutto i można jednoznacznie zdecydować, czy faktura przekracza próg. W momencie realizacji pojedynczego przelewu widać tylko kwotę bieżącego zlecenia, która sama w sobie może być poniżej 15 000 zł, choć transakcja jest powyżej.

W praktyce wzorzec polega na ustawieniu w systemie księgowym auto-flagi na fakturach kosztowych ≥ 15 000 zł brutto. Optima, Symfonia, Subiekt nexo i pozostałe popularne systemy księgowe pozwalają na regułę kontrolną tego rodzaju — najczęściej jako pole logiczne na nagłówku faktury, ustawiane automatycznie na podstawie wartości brutto, ale dające się też ustawić ręcznie dla przypadków granicznych (faktura zaliczkowa do większego zamówienia, kompensaty). Każdy przelew dotyczący flagowanej faktury wpada do osobnej kolejki "do weryfikacji w dniu zlecenia", niezależnie od kwoty pojedynczego zlecenia.

Próg 15 000 zł ma sens głównie dla faktur, ale w jednym przepływie z fakturami przechodzą zwykle też paragony fiskalne z NIP-em nabywcy, traktowane jako uproszczone faktury dla potrzeb VAT i kosztu uzyskania przychodu. Paragony z reguły są dalekie od progu (typowa wartość rzędu kilkuset złotych za pojedynczą pozycję), więc obowiązek weryfikacji na białej liście praktycznie ich nie dotyczy, ale rola tej dokumentacji w upstreamie pracy działu AP jest analogiczna do faktur. Pełne omówienie tego brzegowego przypadku, w szczególności ewidencja paragonów z NIP w JPK_V7 i PKPiR po stronie nabywcy, jest tematem osobnego artykułu w klastrze polskiej zgodności.

Ostatnia kwestia, którą warto sformułować, dotyczy kompensaty (potrącenia wzajemnych należności). Jeżeli część zobowiązania z faktury kosztowej jest kompensowana z należnością wobec tego samego kontrahenta, weryfikacji na białej liście podlega tylko ta część kwoty, która jest faktycznie przelewana na rachunek odbiorcy — kompensata sama w sobie nie generuje obowiązku sprawdzenia rachunku, bo nie jest przelewem. Próg 15 000 zł natomiast nadal liczy się od pełnej wartości transakcji brutto, nie od kwoty pozostałej do zapłaty po kompensacie. Jeżeli więc faktura na 25 000 zł brutto jest kompensowana co do 20 000 zł, a 5 000 zł idzie przelewem, weryfikacja jest obowiązkowa (transakcja powyżej progu) i obejmuje ten jeden przelew na 5 000 zł, ze śladem na jego dzień zlecenia.


ZAW-NR krok po kroku — co składać, gdzie, w jakim terminie i co zachować

Negatywny wynik weryfikacji w dniu zlecenia przelewu nie kończy procedury, tylko ją przekierowuje. Ścieżką awaryjną jest złożenie zawiadomienia ZAW-NR do urzędu skarbowego — z bardzo wąskim terminem, konkretnym właściwym urzędem i listą pól, których nie można pominąć. Sekcja, którą warto zapisać w zakładkach na moment, w którym zostanie potrzebna.

ZAW-NR jest wyzwalany przez koniunkcję trzech warunków. Po pierwsze, płatność ≥ 15 000 zł brutto z tytułu transakcji z czynnym podatnikiem VAT (sprzedawca jest czynny — co samo w sobie warto sprawdzić w wykazie, niezależnie od weryfikacji rachunku). Po drugie, rachunek odbiorcy nie figuruje na białej liście w dniu zlecenia przelewu, ALBO weryfikacja nie mogła zostać przeprowadzona z przyczyn obiektywnych (na przykład awaria API i brak czasu na alternatywny mechanizm). Po trzecie, nabywca chce zachować koszt uzyskania przychodu od zapłaconej kwoty i uniknąć odpowiedzialności solidarnej za VAT sprzedawcy. Jeżeli wszystkie trzy warunki są spełnione, ZAW-NR jest jedyną realną drogą obrony pozycji nabywcy.

Termin — 7 dni od dnia zlecenia przelewu. Nie od dnia wystawienia faktury, nie od dnia uznania rachunku odbiorcy w jego banku, nie od dnia, w którym nabywca zorientował się, że rachunek nie był na białej liście. Termin biegnie od daty zlecenia, którą sam nabywca ustala w swoim systemie bankowości firmowej. Jest to termin prawa materialnego: jego przekroczenie skutkuje utratą skutku zawiadomienia, czyli sankcją taką samą jak brak ZAW-NR w ogóle. ZAW-NR formularz termin 7 dni jest twardy i nie ma drogi przywrócenia po fakcie (interpretacje organów rzadko dopuszczają wyjątki, a w okresach kryzysowych ustawodawca samodzielnie przedłużał termin osobnymi przepisami; w sytuacji standardowej trzeba przyjmować termin siedmiodniowy bezwarunkowo).

Właściwy urząd skarbowy to urząd właściwy dla sprzedawcy, nie dla nabywcy. To jeden z najczęstszych błędów praktycznych w pierwszych ZAW-NR składanych przez biuro: zawiadomienie trafia do urzędu klienta biura (czyli nabywcy), a powinno trafić do urzędu kontrahenta, na którego rachunek został zlecony przelew. Ustalenie urzędu właściwego dla sprzedawcy jest najprostsze w samym wykazie podatników VAT po NIP-ie sprzedawcy — rekord publikuje pełną nazwę urzędu wraz z adresem.

Kanały złożenia są trzy, w praktyce dwa pierwsze są standardem:

  • ePUAP, z formularzem podpisanym Profilem Zaufanym lub kwalifikowanym podpisem elektronicznym. Generuje UPP (urzędowe poświadczenie przedłożenia) automatycznie, z dokładnym timestampem złożenia.
  • e-Urząd Skarbowy — serwis Ministerstwa Finansów dedykowany kontaktowi z administracją skarbową, z analogicznym mechanizmem UPP.
  • Papierowo, na własne ryzyko terminowe. Liczy się data wpływu do urzędu, nie data nadania w placówce pocztowej (z wyjątkami przewidzianymi w Ordynacji podatkowej dla przesyłek poleconych, których stosowanie tu bywa kwestionowane). Przy siedmiodniowym terminie papier jest ścieżką wyjątkową, do użycia tylko wtedy, gdy elektroniczne kanały są niedostępne.

Wymagana zawartość ZAW-NR jest stała i niezbyt długa:

  • Dane nabywcy (składającego zawiadomienie): NIP, pełna nazwa, adres siedziby.
  • Dane sprzedawcy: NIP, pełna nazwa, adres siedziby.
  • Numer rachunku, na który zlecono przelew (rachunek spoza wykazu).
  • Wysokość należności zapłaconej na ten rachunek.
  • Data zlecenia przelewu.

Każde z tych pól pochodzi z dokumentów, które nabywca i tak ma w aktach: faktury kosztowej (dane sprzedawcy, kwota), potwierdzenia przelewu (data zlecenia, numer rachunku), własnych danych rejestrowych (dane nabywcy). ZAW-NR nie wymaga uzasadnienia ani opisu przyczyny — wystarczy fakt, że rachunek nie był w wykazie.

Retencja śladu z ZAW-NR jest analogiczna do retencji śladu z weryfikacji. UPP otrzymane elektronicznie (lub potwierdzenie nadania, jeśli papierowo) plus kopia samego ZAW-NR powinny być podpięte pod tę samą fakturę i ten sam przelew w systemie księgowym, w którym leży ślad weryfikacji negatywnej. Horyzont — 5 lat przedawnienia zobowiązań VAT, ten sam co dla pozostałych dokumentów weryfikacyjnych.

Skutek prawidłowego ZAW-NR jest tym, dla czego cała procedura w ogóle istnieje. Nabywca zachowuje prawo do zaliczenia w koszty uzyskania przychodu kwoty zapłaconej na rachunek spoza wykazu oraz nie odpowiada solidarnie za VAT sprzedawcy z tytułu tej transakcji. Sankcje, które w innym wariancie spadłyby na nabywcę (utrata kosztu, ryzyko egzekucji VAT od kontrahenta), są w pełni uchylone, pod warunkiem że ZAW-NR został złożony w siedmiodniowym terminie, do właściwego urzędu i z pełną zawartością. Dla księgowej, która zastanawia się, czy złożenie zawiadomienia opłaca się przy pojedynczym przelewie poniżej kilku tysięcy złotych, odpowiedź wynika z prostego rachunku: koszt złożenia ZAW-NR to kilkanaście minut pracy plus podpis elektroniczny, koszt jego niezłożenia to utrata całej kwoty zapłaconej z możliwości zaliczenia w koszty i ekspozycja na odpowiedzialność solidarną za VAT.


Workflow w biurze rachunkowym i wewnętrznym dziale AP — wzorce, które się skalują

Procedura na papierze i procedura w działającym workflow to dwie różne rzeczy. Poniżej trzy wzorce operacyjne, których biura rachunkowe i działy AP w praktyce używają, dopasowane do skali. Każdy z nich da się wdrożyć z istniejącym oprogramowaniem księgowym i istniejącym składem zespołu, bez budowania od nowa.

Wzorzec biura rachunkowego z 30 lub więcej klientami: codzienny plik płaski plus API jako weryfikacja day-of-payment. Architektura zaczyna się od skryptu uruchamianego nocą, najczęściej w okolicach 01:00, który pobiera świeży plik płaski z serwera Ministerstwa Finansów, weryfikuje sumę kontrolną, parsuje zawartość do lokalnej bazy lub do struktury w pamięci procesu serwerowego. Rano, przed puszczeniem przelewów dla każdego klienta, biuro wykonuje rundę weryfikacji wszystkich faktur ≥ 15 000 zł brutto zaplanowanych do zapłaty tego dnia. Lookup jest w pamięci, szybki, bez kosztu API. Dla pozycji granicznych (kontrahent zarejestrowany w wykazie po wczorajszym refreshu, sygnał z poprzedniej rundy o zmianie statusu) biuro robi dodatkowe sprawdzenie przez API metodą check, żeby mieć ślad day-of-payment z oficjalnego źródła. To jest biuro rachunkowe biała lista automatyzacja jako konkretna architektura: plik płaski jako fundament wolumenowy, API jako warstwa świeżości i dowodu, oba z własnym śladem w aktach klienta.

Wzorzec wewnętrznego działu AP w średniej firmie (200 do 2 000 faktur miesięcznie). Tu fundamentem jest system księgowy, nie osobny skrypt: Optima, Symfonia, Subiekt nexo lub równoważny. Auto-flaga ustawiana na każdej fakturze kosztowej ≥ 15 000 zł brutto przy wprowadzaniu do systemu (najczęściej automatycznie na podstawie wartości brutto, z możliwością ręcznej korekty dla przypadków granicznych). Każdy taki dokument wpada do osobnej kolejki "do weryfikacji w dniu zlecenia". W dniu zlecenia przelewu, krótko przed wysłaniem paczki do banku, zespół AP uruchamia batch verification: pojedyncze wywołanie API z 30 NIP-ami w paczce (lub kilka takich wywołań, jeżeli lista jest dłuższa), archiwizacja JSON response, podpięcie pod każdą fakturę z osobna. Cała operacja dla typowej dziennej paczki przelewów (15 do 30 faktur powyżej progu) zajmuje 5 do 15 minut z poprawnie skonfigurowaną integracją.

Wzorzec mikrofirmy lub jednoosobowej działalności gospodarczej z okazjonalnymi przelewami powyżej progu. Web lookup na wykaz.podatnicy.gov.pl, print do PDF strony z wynikiem, podpięcie pod fakturę w cyfrowym lub papierowym segregatorze. Bez skryptów, bez API key, bez integracji. Wystarcza dla skali kilku przelewów miesięcznie, w której koszt automatyzacji byłby wyższy niż koszt ręcznej weryfikacji. Granica praktyczności tego wzorca jest tam, gdzie zaczyna się drugi: kilkadziesiąt sprawdzeń miesięcznie, kilkanaście dziennie.

Ponad samym wyborem mechanizmu nakłada się warstwa kontrolna wewnątrz biura. Procedura napisana, nie domyślna: kto sprawdza, w którym kroku workflow, gdzie zapisuje ślad, kto zatwierdza zwolnienie przelewu z bramki weryfikacyjnej. Bez napisanej procedury biuro odtwarza tę samą decyzję pięć razy w tygodniu i każda powtórka jest okazją do błędu. Druga warstwa to reguła czterech oczu dla faktur powyżej progu wewnętrznego (na przykład 100 000 zł brutto) — drugi członek zespołu potwierdza wynik weryfikacji przed puszczeniem przelewu na większą kwotę. Trzecia warstwa to nazwana eskalacja na ZAW-NR: w każdym biurze powinna być wskazana z imienia osoba odpowiedzialna za przygotowanie zawiadomienia w ciągu 24 godzin od ustalenia, że rachunek nie był na liście (czyli z trzydniowym buforem do końca siedmiodniowego terminu).

Punkt graniczny, w którym automatyzacja przestaje być opcjonalna, da się określić wolumenem. Powyżej około 50 sprawdzeń dziennie web lookup przestaje być wykonalny — sam czas wpisywania i archiwizacji wyników wypełnia więcej niż godzinę dziennie, a koszt pomyłki rośnie liniowo z liczbą wpisów. Powyżej około 500 sprawdzeń dziennie API bez pliku płaskiego jako fundamentu generuje ryzyko wyczerpania dobowego limitu i blokady do godziny 0:00; dla biura puszczającego przelewy klientom popołudniu blokada o godzinie 11:00 jest katastrofą operacyjną, a nie drobnym utrudnieniem. Plik płaski plus API to architektura, która tego ryzyka praktycznie nie ma, bo lookup pliku jest niezależny od limitu API.

Automatyzacja weryfikacji jest też jedną składową szerszej zmiany operacyjnej, jaką biura przechodzą w okresie wdrożenia KSeF — w tym samym momencie, w którym faktury kosztowe zaczynają częściej przychodzić jako XML zamiast jako PDF, elastyczna ekstrakcja faktur w biurze rachunkowym po KSeF Phase 2 staje się tematem, w którym biała lista i wykaz mają konkretne miejsce. Dla zespołów AP po stronie międzynarodowych firm działających w Polsce, gdzie procedura wewnętrzna jest spisana po angielsku i adresowana do księgowych z centrali, dostępne jest analogiczne omówienie tej samej procedury w postaci English-language White List VAT verification guide for international AP teams operating in Poland — ta sama treść proceduralna, inny język operacyjny.

Niezależnie od wybranego wzorca, każda z tych architektur zaczyna się od jednego punktu: tego, w którym NIP i numer rachunku bankowego dostawcy wchodzą z faktury do systemu księgowego. Bez tego punktu nie ma czego sprawdzać.

Ekstrakcja faktury jako moment, w którym weryfikacja staje się możliwa

Procedura opisana w poprzednich siedmiu sekcjach zaczyna się od jednego konkretu w przepływie danych: NIP-u i numeru rachunku bankowego dostawcy, które muszą trafić z faktury do systemu księgowego, zanim cokolwiek innego się wydarzy. Trzy mechanizmy weryfikacji są bezużyteczne, dopóki te dwa pola nie są dostępne w postaci ustrukturyzowanej, gotowej do zapytania API lub do lookupu w pliku płaskim.

Jeżeli te pola trafiają do systemu przez ręczne przepisywanie z PDF-u lub z papierowej faktury, weryfikacja jest etapem N+1 po wąskim gardle wprowadzania danych. Żadne API i żaden plik płaski tego wąskiego gardła nie zniweluje — dopóki ktoś w zespole spędza godzinę na wpisywaniu NIP-ów i numerów rachunków z 50 faktur, oszczędność z automatyzacji weryfikacji jest mniejsza niż koszt manualnego upstreamu.

Trzy źródła, z których NIP i numer rachunku trafiają do systemu księgowego w polskim przepływie AP, to dziś faktury PDF od dostawców (najczęstszy przypadek poza KSeF, szczególnie od kontrahentów zagranicznych i mniejszych podmiotów), faktury w postaci XML z KSeF (rosnący udział od momentu obowiązkowego wdrożenia KSeF, ze strukturą pól zdefiniowaną normatywnie) oraz paragony fiskalne z NIP-em nabywcy (mniejsze zakupy, najczęściej poniżej progu białej listy, ale w jednym workflow z fakturami). W każdym z tych przypadków ekstrakcja danych — ręczna lub zautomatyzowana — jest momentem wejścia w workflow weryfikacji.

Biuro rachunkowe lub wewnętrzny dział AP, w którym ekstrakcja jest zautomatyzowana, zyskuje konkretną dźwignię na poziomie godzin pracy: NIP, numer rachunku, kwota brutto i data wystawienia są dostępne w arkuszu lub bezpośrednio w bazie systemu księgowego w momencie wprowadzania faktury, gotowe do natychmiastowego sprawdzenia przez API lub przez plik płaski. To jest moment, w którym automatyzacja ekstrakcji danych z faktur kosztowych zasila całą resztę procedury — bramka weryfikacyjna ma wtedy gotowe dane wejściowe, zamiast czekać, aż ktoś z zespołu skończy przepisywanie.

Nasze narzędzie wpisuje się w ten moment jako jeden z dostępnych sposobów na ekstrakcję. Użytkownik wgrywa faktury (PDF, JPG, PNG), opisuje w pojedynczym promptcie, jakie pola wyciągnąć i jak je ustrukturyzować, i otrzymuje plik Excel, CSV lub JSON z gotowymi kolumnami — w typowym zestawie dla polskiego AP są to NIP sprzedawcy, numer rachunku, numer i data faktury, kwota netto, VAT, brutto, ewentualnie kategoria z załącznika 15 oznaczająca obowiązek MPP. NIP i numer rachunku są dwoma z pól, które ten zestaw zawiera standardowo, więc dane wejściowe do weryfikacji na białej liście wpadają do systemu od razu w postaci, w której można je sprawdzić w API lub w pliku płaskim, bez żadnego dodatkowego kroku przepisywania.

Z tego punktu cały opisany przepływ łączy się w jedno sprzężenie: ekstrakcja udostępnia NIP i numer rachunku w systemie księgowym, weryfikacja na białej liście w dniu zlecenia przelewu daje wynik pozytywny lub negatywny, wynik pozytywny zwalnia przelew do realizacji ze śladem w aktach, wynik negatywny uruchamia procedurę ZAW-NR z własnym śladem. Cztery kroki, każdy z własnym dokumentem, razem składające się na procedurę, która wytrzymuje kontrolę KAS i nie pochłania pełnego etatu młodszej księgowej w sezonie zamknięcia miesiąca.

Extract invoice data to Excel with natural language prompts

Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.

Exceptional accuracy on financial documents
1–8 seconds per page with parallel processing
50 free pages every month — no subscription
Any document layout, language, or scan quality
Native Excel types — numbers, dates, currencies
Files encrypted and auto-deleted within 24 hours
Continue Reading