Biała lista VAT w n8n: sprawdzanie kontrahentów z arkusza przed przelewem
Lista kontrahentów w Google Sheets, a przed każdym przelewem ktoś ręcznie wkleja NIP-y do wyszukiwarki Ministerstwa Finansów. Ten workflow n8n robi to sam: waliduje NIP, pyta API białej listy, porównuje numer rachunku i zwraca prosty werdykt.
Autor
- Adrian HuniaWspółzałożyciel SEVENEDGE
- Opublikowano:
- Ostatnia weryfikacja:
- Wersja n8n:
- 2.8.4
W skrócie
Co robi
- Czyta kontrahentów z Google Sheets ręcznie albo w dni robocze o 7:00
- Normalizuje NIP i sprawdza sumę kontrolną lokalnie
- Pyta API wykazu podatników VAT Ministerstwa Finansów o status na dziś
- Porównuje numer rachunku z arkusza z rachunkami z wykazu
- Zwraca werdykt ACTIVE, NOT_ACTIVE, NOT_FOUND albo INVALID_NIP
Czego nie robi
- Nie zapisuje wyników z powrotem do arkusza
- Nie przechowuje identyfikatora zapytania jako dowodu weryfikacji
- Nie obejdzie limitu 100 zapytań dziennie
- Nie jest poradą podatkową
Czego wymaga
- n8n (sprawdzone na 2.8.4)
- Konto Google z dostępem do arkusza
- Kolumny: NIP, nazwa firmy, opcjonalnie numer rachunku
Biała lista VAT w n8n: sprawdzanie kontrahentów z arkusza przed przelewem
Każdy, kto płaci faktury powyżej 15 tysięcy złotych, powinien przed przelewem sprawdzić, czy rachunek kontrahenta jest w wykazie podatników VAT, czyli na tak zwanej białej liście. W małych firmach wygląda to zwykle tak samo: arkusz z kontrahentami i ktoś, kto wkleja NIP-y jeden po drugim do wyszukiwarki Ministerstwa Finansów.
Ten workflow n8n robi tę pracę za człowieka. Czyta arkusz, odsiewa błędne NIP-y, pyta oficjalne API i zwraca jeden z czterech werdyktów dla każdego wiersza.

Najpierw suma kontrolna, potem API
NIP ma cyfrę kontrolną. Literówka w arkuszu da się wykryć bez pytania kogokolwiek, więc pierwszy krok to normalizacja (usuwamy myślniki i spacje) i sprawdzenie wag.
function checksumOk(nip) {
if (!/^\d{10}$/.test(nip)) return false;
const w = [6, 5, 7, 2, 3, 4, 5, 6, 7];
const sum = w.reduce((acc, weight, i) => acc + weight * Number(nip[i]), 0);
return sum % 11 === Number(nip[9]);
}
NIP, który nie przechodzi tej kontroli, dostaje werdykt INVALID_NIP niezależnie od tego, co odpowie API.
Cztery werdykty zamiast surowej odpowiedzi
API zwraca obiekt result.subject z polem statusVat. Czynny podatnik ma tam wartość „Czynny”. Workflow sprowadza to do czterech stanów, które da się przeczytać bez znajomości API:
| Werdykt | Znaczenie |
|---|---|
ACTIVE | czynny podatnik VAT na dzień sprawdzenia |
NOT_ACTIVE | jest w wykazie, ale ze statusem innym niż czynny |
NOT_FOUND | wykaz nie zna tego NIP-u na ten dzień |
INVALID_NIP | numer nie przeszedł sumy kontrolnej |
Jeśli w arkuszu jest kolumna z numerem rachunku, workflow porównuje go z listą accountNumbers z wykazu (po usunięciu spacji). Pole account_on_white_list przyjmuje wtedy wartość prawda albo fałsz. Gdy kolumny nie ma, zostaje puste, bo brak danych to nie to samo co negatywny wynik.
Na początku wyniku pojawia się podsumowanie w rodzaju „3 z 40 kontrahentów wymaga uwagi przed płatnością”. To jest jedyna liczba, którą ktoś przegląda codziennie rano.
Limit API
Przy dłuższej liście trzeba przejść na zapytania zbiorcze (do 30 NIP-ów naraz) albo dzielić arkusz na dni.
Konfiguracja
| Parametr | Domyślnie | Po co |
|---|---|---|
whiteListApi | https://wl-api.mf.gov.pl/api/search/nip/ | adres metody wyszukiwania po NIP |
nipColumn | NIP | nazwa kolumny z NIP-em w arkuszu |
nameColumn | Company | kolumna z nazwą, gdy wykaz jej nie zwróci |
accountColumn | Bank account | kolumna z rachunkiem do porównania |
Harmonogram to dni robocze o 7, przed tym, jak ktoś zacznie robić przelewy.
Ograniczenia
Wynik zostaje w wykonaniu n8n. Szablon nie zapisuje werdyktów do arkusza ani nie wysyła alertu, więc przy uruchamianiu z harmonogramu trzeba dopiąć jeden z tych kroków. Bez tego poranny przebieg nikogo nie informuje.
NIP odrzucony przez sumę kontrolną i tak trafia do node'a HTTP, który kończy się błędem i jest pomijany. Przy limicie 100 zapytań dziennie lepiej odfiltrować takie wiersze przed zapytaniem.
Odpowiedź API zawiera identyfikator zapytania, który może służyć jako dowód, że rachunek był sprawdzony. Szablon go nie zapisuje.
Sprawdzenie dotyczy dnia uruchomienia, a nie dnia przelewu. Jeśli płatność idzie kilka dni później, warto sprawdzić jeszcze raz.
Kiedy to nie ma sensu
Przy kilku stałych kontrahentach ręczne sprawdzenie zajmuje minutę. Część banków sprawdza też rachunek w wykazie przy zlecaniu przelewu. Workflow ma sens, gdy kontrahentów są dziesiątki, a lista płatności powstaje w arkuszu, zanim trafi do banku. Jeśli to samo powinno dziać się w systemie księgowym albo w panelu dla zespołu, to już zadanie dla automatyzacji procesów w konkretnej firmie, a do danych rejestrowych przyda się też wzbogacanie firm po NIP z KRS.
Weź to do siebie
Jak to zacytować
Adrian Hunia (2026). Biała lista VAT w n8n: sprawdzanie kontrahentów z arkusza przed przelewem. SEVENEDGE. https://sevenedge.pl/pl/workflows/biala-lista-vat-weryfikacja-kontrahentow (dostęp: 5 listopada 2026)
Źródła
- Ministerstwo Finansów — Jak korzystać z wykazu podatników VATdokumentacja API
- n8n docs — Google Sheetsdokumentacja n8n
- n8n docs — HTTP Requestdokumentacja n8n
Kto za tym stoi
Adrian Hunia
Współzałożyciel SEVENEDGE
Współzałożyciel SEVENEDGE. Projektuje i wdraża systemy biznesowe dla małych firm — od zarządzania produkcją po rejestrację czasu pracy. Pracuje na Next.js, FastAPI i PostgreSQL. SEVENEDGE działa bez podwykonawców: kod piszą dwaj właściciele.
Powiązane dokumenty
Inne przepływy, które opisaliśmy tak samo dokładnie.
- Obsługa zgłoszeń z trzema agentami AI: triage, dokumentacja, odpowiedź i bramka człowiekaJeden agent klasyfikuje zgłoszenie, drugi szuka odpowiedzi we własnej dokumentacji, trzeci pisze odpowiedź. Sama wychodzi tylko odpowiedź, która przeszła trzy warunki naraz. Resztę widzi człowiek, a każde pytanie bez pokrycia w dokumentacji staje się zadaniem do dopisania.
- Agent pisarz i agent krytyk: pętla w n8n, która kończy się na rubryce, a nie na zmęczeniuJeden agent pisze, drugi ocenia według rubryki i reguł domu, a pętla wraca do pisarza, dopóki tekst nie przejdzie progu. Najważniejsze w tym workflow nie są prompty, tylko trzy warunki stopu i to, że krytyk nie ma prawa podbijać oceny, żeby pętla się skończyła.


