VIES — błąd komunikacji: jak rozwiązać
„Błąd komunikacji z VIES” lub „Request not processed” to najczęstszy problem przy weryfikacji. Wyjaśniamy, co oznaczają poszczególne kody błędów i jak postępować.
MS_UNAVAILABLE — rejestr krajowy niedostępny
MS_UNAVAILABLE (Member State Unavailable) to najczęstszy błąd — występuje, gdy rejestr konkretnego kraju nie odpowiada na zapytanie VIES w wyznaczonym czasie (30 sekund). Powody: awarie techniczne kraju, okna serwisowe, przeciążenie. Najczęściej dotyka Niemcy (BZSt), Włochy (Agenzia delle Entrate) i Hiszpanię (AEAT). Typowy czas trwania: 15–60 minut. Strategia: poczekaj 15 minut i ponów próbę. Jeśli błąd utrzymuje się ponad 4 godziny — sprawdź stronę statusu TAXUD KE.
INVALID_INPUT — błędny format zapytania
INVALID_INPUT zwracane jest przed wysłaniem zapytania do kraju — gdy KE wykryje błąd formatu. Najczęstsze przyczyny: (1) niepoprawny kod kraju (np. „GB” — UK już nie w VIES); (2) prefiks kraju włączony do numeru („DE123456789” zamiast „123456789”); (3) niepoprawna długość — np. niemiecki 8 zamiast 9 cyfr; (4) niedozwolone znaki — spacje, myślniki (większość interfejsów je usuwa, ale niektóre nie). Rozwiązanie: zweryfikuj format zgodnie z [Krajami UE](/kraje-ue/) i ponów.
TIMEOUT — przekroczony czas oczekiwania
TIMEOUT to wariant MS_UNAVAILABLE — rejestr krajowy zaczął odpowiadać, ale nie zdążył w 30 sekund. Często występuje w godzinach szczytu (9:00–12:00 CET) lub w pierwszych dniach miesiąca, gdy rejestry mają większy ruch. Strategia: poczekaj 5 minut i ponów. Jeśli ponawia się — zwiększ timeout w SDK do 60 sekund (jeśli framework pozwala). Dla integracji produkcyjnych nasze API stosuje adaptive timeout zależny od historii odpowiedzi danego kraju.
SERVICE_UNAVAILABLE — cały VIES niedostępny
SERVICE_UNAVAILABLE to rzadszy błąd — oznacza, że sam VIES KE jest niedostępny, nie pojedynczy kraj. Występuje 1–3 razy w roku, zwykle w weekendy lub w nocy (okno serwisowe KE). Zwykle trwa 30 minut – 4 godziny. Strategia: poczekaj, KE rzadko komunikuje plany serwisowe, ale można sprawdzić stronę statusu TAXUD. Dla integracji krytycznych: nasze API automatycznie kolejkuje zapytania na czas awarii i wykonuje je po przywróceniu serwisu.
INVALID_REQUESTER_INFO — błędne dane requestera
Występuje wyłącznie w trybie kwalifikowanym (checkVatApprox), gdy podajesz własny numer VAT jako requester. Najczęstsze przyczyny: (1) Twój numer VAT nie jest aktywny w VIES (sprawdź swoją rejestrację VAT-UE); (2) niepoprawny format Twojego numeru; (3) kraj requestera ≠ kraj Twojego numeru (np. polski numer z requesterMemberStateCode=DE). Rozwiązanie: zweryfikuj swój własny status w VIES, popraw dane requestera w SDK lub formularzu, ponów próbę.
VAT_BLOCKED — numer zablokowany
Bardzo rzadki błąd — oznacza, że numer kontrahenta został zablokowany w bazie z powodu wykrycia nadużycia (karuzela VAT, oszustwo). Występuje ok. 0,01% zapytań. To poważny sygnał ostrzegawczy — pod żadnym pozorem nie wystawiaj faktury z 0% VAT temu kontrahentowi. Zgłoś sprawę polskiemu urzędowi skarbowemu. KE wprowadziła tę funkcjonalność w 2022 jako element pakietu antyfraudowego.
Strategia produkcyjna — handling błędów
Profesjonalna integracja powinna implementować: (1) klasyfikację błędów (recoverable vs. permanent); (2) exponential backoff dla MS_UNAVAILABLE/TIMEOUT (1 min, 5 min, 15 min, 60 min); (3) circuit breaker dla SERVICE_UNAVAILABLE (po 5 błędach pauza 30 min); (4) alerting dla VAT_BLOCKED (natychmiast powiadom księgowość); (5) natychmiastowe zwrócenie błędu dla INVALID_INPUT (poprawiać dane, nie ponawiać); (6) logowanie wszystkich błędów z stack trace dla diagnostyki. Nasze [API ViesVAT](/api/) ma to wbudowane.
Tabela wszystkich kodów błędów VIES — pełna referencja
Pełna lista kodów błędów zwracanych przez VIES z ich znaczeniem i strategią. INVALID_INPUT — niepoprawny format kraju lub numeru. Akcja: walidacja danych po stronie klienta, korekta. Nie ponawiaj. INVALID_REQUESTER_INFO — niepoprawne dane requestera (przy zapytaniu kwalifikowanym). Akcja: sprawdź własny numer VAT, popraw. SERVICE_UNAVAILABLE — sam VIES KE niedostępny. Akcja: czekaj 30–60 min, ponów. MS_UNAVAILABLE — rejestr konkretnego kraju niedostępny. Akcja: czekaj 15–60 min, ponów (najczęściej Niemcy, Włochy, Hiszpania). MS_MAX_CONCURRENT_REQ — kraj odrzucił zapytanie z powodu przeciążenia. Akcja: czekaj 1 min, ponów z mniejszą liczbą równoczesnych zapytań. TIMEOUT — przekroczony czas oczekiwania (30s). Akcja: ponów po 5 min. VAT_BLOCKED — numer zablokowany przez KE jako zaangażowany w nadużycia. Akcja: NIE wystawiaj faktury z 0% VAT, zgłoś do urzędu skarbowego. VAT_JOINED_LATER — kraj członkowski opóźniony w dołączeniu do VIES dla tego konkretnego numeru. Akcja: poczekaj kilka dni i ponów. IP_BLOCKED — Twoje IP zostało zablokowane za przekroczenie limitów. Akcja: skontaktuj się z DG TAXUD lub użyj komercyjnego API z odpowiednim rate-limitem. GLOBAL_MAX_CONCURRENT_REQ — VIES jako całość przeciążony. Akcja: czekaj 2–5 min, ponów.
Analiza statystyk awarii — co się psuje najczęściej
Na podstawie naszych pomiarów (ponad 5 mln zapytań rocznie, 2025), statystyka awarii VIES wygląda następująco. MS_UNAVAILABLE dla konkretnych krajów: Niemcy ~50% wszystkich awarii (BZSt jest najmniej stabilnym rejestrem w UE), Włochy ~25% (Agenzia delle Entrate), Hiszpania ~15% (AEAT), pozostałe kraje ~10% wspólnie. Średni czas trwania awarii: 15–60 minut. Czas trwania powyżej 4h: <1% przypadków. SERVICE_UNAVAILABLE (cały VIES): średnio 1–3 razy w roku, czas 30 min – 4 h, łącznie <8h/rok = dostępność >99,9%. Wzorce czasowe awarii. Najczęstsze pory: piątek wieczór (okna serwisowe Niemcy, Francja), poniedziałek rano 8:00–10:00 CET (przeciążenie po weekendzie), pierwsze dni miesiąca (przeciążenie po deklaracjach VAT). Najrzadsze pory: środa-czwartek po południu (14:00–17:00 CET), weekendy poza piątkiem wieczorem. Sezonowość: styczeń-luty intensywne (deklaracje roczne), lipiec-sierpień spokojne (urlopy), wrzesień-październik intensywne. Strategia retry naszego API uwzględnia te wzorce — ponawia agresywniej w środę po południu, łagodniej w piątek wieczór.
Strategia retry w produkcji — kod przykładowy
Implementacja produkcyjnej strategii retry w PHP: function checkVatWithRetry($country, $vat, $maxAttempts = 4) { $delays = [1, 5, 15, 60]; // sekundy * 60 = minuty; for ($i = 0; $i < $maxAttempts; $i++) { try { return checkVat($country, $vat); } catch (SoapFault $e) { if ($e->faultstring === 'INVALID_INPUT' || $e->faultstring === 'VAT_BLOCKED') throw $e; // permanent, no retry; if ($i === $maxAttempts - 1) throw $e; // last attempt; sleep($delays[$i] * 60); } } }. Strategia exponential backoff jest standardem przemysłowym dla idempotentnych operacji jak weryfikacja VIES. Każda kolejna próba czeka dłużej, by nie spam'ować awariowanego rejestru i zwiększyć szansę, że problem zostanie naprawiony. Dla zapytań krytycznych (np. weryfikacja przy wystawianiu faktury) zalecamy circuit breaker — po 5 nieudanych próbach w 5 minutach przerwij wszystkie zapytania do tego kraju na 30 minut. To chroni Twój system przed przeciążeniem przy długotrwałej awarii rejestru krajowego. Nasze SDK wszystkich języków implementuje tę logikę domyślnie — wystarczy konfiguracja parametrów (max attempts, base delay, max delay), reszta dzieje się automatycznie.
Co robić, gdy musisz wystawić fakturę a VIES jest down
Pilna sytuacja: kontrahent czeka na fakturę WDT, VIES odpowiada MS_UNAVAILABLE dla potrzebnego kraju od godziny. Trzy opcje. Opcja 1: czekaj i powiadom kontrahenta. „Verification system is temporarily unavailable, invoice will be issued within 24 hours”. Profesjonalnie i bezpiecznie — kontrahent zwykle akceptuje. Opcja 2: wystaw fakturę z 0% VAT z dokumentacją prób weryfikacji. Zrobisz to, jeśli udało Ci się zachować zrzuty ekranu z błędem MS_UNAVAILABLE z minimum 3 prób, w odstępie godziny, z różnych narzędzi (oficjalny VIES + nasze API + ewentualnie sprawdzenie w lokalnym rejestrze handlowym). W razie kontroli urząd zwykle akceptuje dowody należytej próby weryfikacji jako element należytej staranności. Opcja 3: wystaw fakturę z 23% VAT polskim. Kontrahent UE może odzyskać przez procedurę zwrotu zagranicznego (trwa 4–8 miesięcy, ale jest pewny). To opcja najmniej bolesna prawnie dla Ciebie. Wybór zależy od pilności i wartości transakcji. Dla małych transakcji (<10 000 EUR) zwykle wybiera się opcja 1 (czekaj). Dla dużych (>50 000 EUR) — opcja 2 lub 3 z konsultacją z doradcą podatkowym.
Eskalacja problemów do KE — jak zgłosić błąd
Jeśli zaobserwowałeś trwałą awarię lub niewytłumaczalny błąd VIES, możesz zgłosić to do DG TAXUD KE. Procedura. Krok 1: zbierz dowody — dokładny timestamp, kraj docelowy, sprawdzany numer (zanonimizowany), kod błędu zwrócony przez VIES, request ID jeśli widoczny. Krok 2: skontaktuj się z DG TAXUD przez stronę kontaktu na taxation-customs.ec.europa.eu — formularz dla problemów technicznych VIES. Krok 3: opisz problem po angielsku (KE nie udziela wsparcia po polsku w obszarze IT). Krok 4: poczekaj na odpowiedź — typowo 5–10 dni roboczych. Standardowa procedura: KE odpowiada potwierdzeniem otrzymania, następnie przekazuje do odpowiedniego kraju członkowskiego (jeśli problem dotyczy rejestru krajowego), informuje Cię o postępie. W praktyce zgłoszenia podatników indywidualnych są obsługiwane wolniej niż zgłoszenia z administracji krajowych. Dla pilnych problemów lepsze są nasze kanały — ViesVAT jako klient KE z dużym wolumenem ma szybsze ścieżki eskalacji. Jeśli jesteś naszym klientem Plan Business, możemy zgłosić Twój problem do KE w Twoim imieniu z priorytetem komercyjnym.
Raport błędów KE — co realnie zgłaszają firmy
DG TAXUD KE publikuje roczne raporty problemów z VIES zgłoszonych przez podatników i administracje. Top 10 najczęściej zgłaszanych problemów 2024. 1. MS_UNAVAILABLE dla Niemiec (długie awarie BZSt) — 35% wszystkich zgłoszeń. 2. MS_UNAVAILABLE dla Włoch — 22%. 3. TIMEOUT dla Hiszpanii — 14%. 4. Nieprawidłowy wynik (firma istnieje, ale VIES zwraca nieaktywny) — 8%. 5. Wolne odpowiedzi (powyżej 5 sekund regularnie) dla Francji — 6%. 6. Brak zwracanych danych (status OK, ale puste nazwa i adres) dla Niemiec i Hiszpanii — 5%. 7. Niezgodność danych między VIES a krajowym rejestrem — 4%. 8. Niedostępność trybu kwalifikowanego (checkVatApprox) — 3%. 9. Problemy z certyfikatem SSL po stronie KE — 2%. 10. Inne — 1%. Działania KE w odpowiedzi. 2024: dodatkowa redundancja BZSt (planowany rollout 2026). Modernizacja włoskiej infrastruktury (rollout 2027). Standardowy format zwracanych danych — projekt w fazie pilotażu, decyzja krajów członkowskich pending. Te wszystkie ulepszenia są częścią szerszego programu modernizacji VIES w ramach ViDA. Praktyczne implikacje dla podatników: spodziewaj się stopniowej poprawy jakości VIES w 2026–2028, ale problemy z Niemcami i Włochami będą się utrzymywać krótkoterminowo.
Logging błędów po stronie klienta — dobre praktyki
Profesjonalna integracja VIES powinna logować każde zapytanie z pełnym kontekstem. Co logować: timestamp, request_id (Twój wewnętrzny), country_code, vat_number (zhashowany dla RODO), response (status, błąd), latency_ms, retry_count. Format: structured logging (JSON), nie plain text. Narzędzia: ELK Stack (Elasticsearch + Logstash + Kibana), Datadog, New Relic, Splunk dla enterprise. Loki + Grafana dla cost-effective. CloudWatch Logs dla AWS, Stackdriver dla GCP. Storage: minimum 90 dni dla diagnostyki, 1 rok dla compliance, 5 lat dla audit (zalecenie KE). Alerts: error rate > 1% dla danego kraju przez 5 min → alert. Latency p95 > 3s przez 10 min → alert. Backup: szyfrowane backupy logów w drugim regionie UE dla disaster recovery. Te wszystkie praktyki to standard branżowy dla SaaS B2B. ViesVAT dla planu Business udostępnia surowe logi przez API klienta — możesz je integrować z własnym systemem observability (ELK, Datadog, etc.). Dla planu Enterprise oferujemy export do Twojego SIEM (Splunk, Sentinel) w czasie rzeczywistym.
Komunikacja z biznesem przy awarii VIES
Awaria VIES nie jest tylko problemem technicznym — wpływa bezpośrednio na biznes (fakturowanie, dostawy). Dobre praktyki komunikacji wewnętrznej. Pierwsza: alerty proaktywne. Jeśli Twój system wykrywa, że VIES jest niedostępny przez >15 minut dla krajów, w których masz aktywnych klientów — natychmiast powiadamiaj księgowość. Druga: instrukcje awaryjne. Każdy księgowy powinien wiedzieć, co robić: ponowić za 15 min, eskalować po godzinie, kontakt z IT po 2 godzinach. Trzecia: komunikacja z klientem. Jeśli musisz opóźnić fakturę z powodu VIES, poinformuj kontrahenta profesjonalnie: „Verification system temporarily unavailable, invoice will be issued within 24 hours”. Większość klientów akceptuje. Czwarta: dokumentacja prób. Zrzuty błędów, czas próby, podpis osoby próbującej — wszystko przydatne w razie późniejszej kontroli. ViesVAT dla planu Pro/Business udostępnia status page (status.viesvat.com) który w czasie rzeczywistym pokazuje status VIES KE i krajów członkowskich. Możesz osadzić go na intranecie firmy — księgowi widzą, czy problem jest po stronie ViesVAT, KE, czy konkretnego kraju.
Awarie sieci CCN/CSI — bardzo rzadkie, ale zdarzają się
Sieć CCN/CSI (Common Communication Network), łącząca KE z administracjami krajowymi, jest niezwykle stabilna. Awarie ogólne zdarzają się raz na 2-3 lata. Ostatnia poważna: marzec 2021 (4 godziny, atak DDoS), sierpień 2014 (6 godzin, błąd konfiguracji), kwiecień 2009 (2 godziny, problemy z routerami). Awarie częściowe (jeden lub dwa kraje odcięte od CCN): kilka razy w roku, krótkie (15-45 min). Powody: konserwacja krajowych łączy, awarie sprzętowe routerów. Wpływ na VIES: dla użytkownika publicznego identyczny z MS_UNAVAILABLE — nie rozróżniasz, czy awaria jest po stronie kraju, czy sieci CCN. Z naszej perspektywy jako klienta API KE: SOAP zwraca specyficzny kod CCN_NETWORK_ERROR — ale rzadko widoczny dla użytkownika końcowego, bo zwykle KE przekazuje go jako MS_UNAVAILABLE. Praktyczna implikacja: strategia retry jest taka sama dla awarii CCN i krajowych — exponential backoff z 4 próbami. KE pracuje nad CCN/CSI Next Generation, planowany 2028 — z architekturą zero-downtime (redundancja na poziomie sieciowym, automatyczne fail-over). Po wdrożeniu awarie CCN powinny zniknąć.
Najczęściej zadawane pytania
Co znaczy 'Numer NIP-VAT nieaktywny'?
To wynik zwykły (valid: false), nie błąd komunikacji. Numer istnieje, ale nie jest zarejestrowany do VAT-UE.
Jak długo czekać na ustąpienie MS_UNAVAILABLE?
Typowo 15–60 minut. W skrajnych przypadkach 2–4 godziny.
Czy podczas awarii rejestru można wystawiać faktury WDT?
Lepiej poczekać i zweryfikować. Jeśli musisz pilnie — udokumentuj próby weryfikacji (zrzuty błędu z datą).
Czy mogę zgłosić błąd do KE?
Tak — przez stronę DG TAXUD. Zwykle nieskuteczne dla pojedynczych zgłoszeń (KE polega na zgłoszeniach z administracji krajowych).
Który kraj psuje się najczęściej?
Statystycznie: Niemcy (BZSt) — ok. 50% zgłoszeń. Włochy ok. 25%. Reszta po kilka procent.