# Weryfikacja VAT UE w VIES i odwrotne obciążenie B2B

> Ten moduł weryfikuje numery VAT UE w bazie VIES Komisji Europejskiej, stosuje odwrotne obciążenie (faktura z 0% VAT) do sprzedaży B2B dostarczanej do innego państwa członkowskiego i prowadzi dziennik dowodów…

- Strona: <https://www.datafirefly.com/pl/documentation/validation-tva-intracommunautaire-vies/>
- Język: pl
- Zaktualizowano: 2026-10-28
- Inne języki: [fr](https://www.datafirefly.com/documentation/validation-tva-intracommunautaire-vies/index.md), [en](https://www.datafirefly.com/en/documentation/validation-tva-intracommunautaire-vies/index.md), [es](https://www.datafirefly.com/es/documentation/validation-tva-intracommunautaire-vies/index.md), [de](https://www.datafirefly.com/de/documentation/validation-tva-intracommunautaire-vies/index.md), [it](https://www.datafirefly.com/it/documentation/validation-tva-intracommunautaire-vies/index.md), [pt](https://www.datafirefly.com/pt/documentation/validation-tva-intracommunautaire-vies/index.md), [nl](https://www.datafirefly.com/nl/documentation/validation-tva-intracommunautaire-vies/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

Ten moduł weryfikuje numery VAT UE w bazie **VIES** Komisji Europejskiej, stosuje **odwrotne obciążenie** (faktura z 0% VAT) do sprzedaży B2B dostarczanej do innego państwa członkowskiego i prowadzi **dziennik dowodów z sygnaturą czasową**: dokument, którego urząd skarbowy żąda podczas kontroli.

Najważniejsze ustawienie to **Twój własny numer VAT**. Bez niego VIES nie wydaje oficjalnego numeru zapytania, najmocniejszego dowodu podczas kontroli.

## Wymagania

- PrestaShop 8.0 do 9.x, jeden sklep lub multistore.
- PHP 7.4 do 8.3 (PrestaShop 9 wymaga PHP 8.1 lub nowszego). Zalecane jest rozszerzenie SOAP; bez niego moduł korzysta z API REST VIES.
- Wychodzący dostęp HTTPS do `ec.europa.eu` z Twojego serwera.
- Pole **Numer VAT** musi być w formacie adresu krajów UE, do których wysyłasz. Strona konfiguracji pokazuje kraje, w których go brakuje.

## Instalacja

1. W panelu administracyjnym otwórz **Moduły > Menedżer modułów > Załaduj moduł**.
2. Wybierz plik ZIP i uruchom instalację.
3. Kliknij **Konfiguruj**.

Instalacja tworzy dziennik zapytań i zakładkę **Dziennik VIES B2B** w menu Zamówienia.

![Moduł PrestaShop do weryfikacji VAT UE w VIES: statystyki zapytań, diagnostyka i adres URL crona](https://www.datafirefly.com/wp-content/uploads/2026/10/dziennik-vies-diagnostyka-statystyki-prestashop-dfviesb2b-pl.webp)

Góra strony konfiguracji: statystyki z ostatnich 30 dni, diagnostyka i adres URL crona.

### Aktualizacja z wersji 1.1.0

Załaduj plik ZIP 1.1.1 na poprzedni. Ta wersja naprawia błąd, przez który odwrotne obciążenie nie było stosowane w PrestaShop 8 i 9: skrypt aktualizacji podłącza moduł do właściwego hooka obliczania podatków (`actionTaxManager`). Ustawienia i dziennik zostają zachowane. Jeśli używasz wersji 1.1.0, zaktualizuj ją od razu: w tych wersjach PrestaShop wewnątrzwspólnotowe zamówienia B2B były nadal fakturowane z VAT.

### Aktualizacja z wersji 1.0.0

Załaduj nowy plik ZIP na stary. Skrypt aktualizacji dodaje nowe kolumny dziennika, rejestruje nowe hooki i zastępuje domyślne adnotacje na fakturze, chyba że je zmieniłeś. Istniejący dziennik zostaje zachowany.

## Jak moduł decyduje o zwolnieniu

Zamówienie przechodzi na 0% VAT tylko wtedy, gdy spełnione są wszystkie warunki:

- zwolnienie jest włączone w konfiguracji;
- klient ma numer VAT z **innego państwa członkowskiego** niż Twoje;
- towar jest **dostarczany do innego państwa członkowskiego** niż Twoje;
- VIES potwierdził numer w ciągu wybranego **okresu ważności**.

Przykład: Twój sklep działa w Polsce, klient ma niemiecki numer VAT, ale odbiera towar w Krakowie. Sprzedaż nadal podlega polskiemu VAT.

Używany jest numer VAT z adresu, od którego sklep nalicza podatki (ustawienie PrestaShop, domyślnie adres dostawy). Jeśli ten adres nie ma numeru, używany jest numer z adresu do faktury tego samego zamówienia. Kraj dostawy jest zawsze sprawdzany, nawet gdy sklep nalicza podatki od adresu do faktury.

Dla Irlandii Północnej, zapisanej w PrestaShop jako Wielka Brytania, numer XI jest akceptowany dla adresu z kodem pocztowym zaczynającym się od BT.

![Proces zamówienia B2B: VAT 0 € dzięki wewnątrzwspólnotowemu odwrotnemu obciążeniu](https://www.datafirefly.com/wp-content/uploads/2026/10/koszyk-b2b-odwrotne-obciazenie-vat-0-prestashop-dfviesb2b-pl.webp)

Klient z Włoch z numerem zweryfikowanym w VIES i dostawą do Włoch: koszyk bez VAT.

## Konfiguracja

![Ustawienia modułu: numer VAT sprzedawcy, automatyczne zwolnienie (odwrotne obciążenie), blokowanie nieprawidłowych numerów, grupa B2B](https://www.datafirefly.com/wp-content/uploads/2026/10/ustawienia-weryfikacja-vat-ue-odwrotne-obciazenie-prestashop-dfviesb2b-pl.webp)

Wszystkie ustawienia modułu, opisane poniżej.

### Numer VAT sprzedawcy

Wpisz numer VAT swojej firmy z prefiksem kraju. Każda weryfikacja odpytuje wtedy VIES z identyfikatorem wnioskodawcy i otrzymuje **oficjalny numer zapytania** z sygnaturą czasową. Jeśli VIES odrzuci Twój numer, klienci nadal są weryfikowani bez oficjalnego numeru, a czerwony komunikat Cię o tym informuje.

### Kraj sprzedawcy

Twoje państwo członkowskie. Numer VAT z tego kraju ani dostawa do tego kraju nigdy nie dają prawa do zwolnienia.

### Automatyczne zwolnienie

Po wyłączeniu weryfikacja i dziennik działają dalej, ale podatek nigdy nie jest zmieniany. Przydatne w okresie obserwacji.

### Blokuj nieprawidłowe numery VAT

Po włączeniu formularz adresu lub rejestracji jest odrzucany, gdy VIES uzna numer za nieprawidłowy lub format jest błędny.

### Gdy VIES jest niedostępny

- **Akceptuj** (domyślnie): adres zostaje zapisany bez zwolnienia, dopóki VIES go nie potwierdzi.
- **Blokuj**: formularz zostaje odrzucony.

W obu przypadkach klient, którego dowód mieści się jeszcze w okresie ważności, zachowuje zwolnienie podczas awarii.

### Weryfikacja na żywo i pole rejestracji

Weryfikacja na żywo pokazuje oznaczenie pod polem VAT podczas wpisywania. Pole rejestracji dodaje opcjonalny numer VAT przy zakładaniu konta i na stronie danych osobowych. Numer jest zapisywany w profilu i wstępnie wpisywany w nowych adresach klienta.

![Formularz rejestracji: numer VAT UE zweryfikowany w VIES w czasie rzeczywistym](https://www.datafirefly.com/wp-content/uploads/2026/10/rejestracja-numer-vat-zweryfikowany-vies-w-czasie-rzeczywistym-prestashop-dfviesb2b-pl.webp)

Rejestracja: VIES weryfikuje numer już podczas wpisywania i podaje nazwę firmy.

![Formularz rejestracji: numer VAT nierozpoznany przez VIES, zgłoszony klientowi](https://www.datafirefly.com/wp-content/uploads/2026/10/rejestracja-numer-vat-nierozpoznany-przez-vies-prestashop-dfviesb2b-pl.webp)

Numer nierozpoznany przez VIES jest od razu sygnalizowany klientowi.

![Adres klienta z numerem VAT UE zweryfikowanym w VIES](https://www.datafirefly.com/wp-content/uploads/2026/10/adres-klienta-numer-vat-ue-zweryfikowany-prestashop-dfviesb2b-pl.webp)

To samo oznaczenie w formularzu adresu na koncie klienta.

### Grupa klientów B2B

Opcjonalnie: klienci z numerem potwierdzonym w VIES są automatycznie dodawani do tej grupy.

### Pamięć podręczna, ważność i ponowna weryfikacja

- **Pamięć podręczna zapytań** (domyślnie 72 h): numer niedawno potwierdzony jako ważny nie jest ponownie sprawdzany. Odpowiedź negatywna jest sprawdzana ponownie po godzinie, ponieważ świeżo nadany numer może pojawić się w VIES dopiero po kilku dniach. Pamięć podręczna nigdy nie przekracza okresu ważności.
- **Okres ważności** (domyślnie 90 dni): po nim zwolnienie przestaje działać do nowej weryfikacji. Moduł sprawdza automatycznie ponownie przy otwarciu zamówienia.
- **Odstęp ponownej weryfikacji** (domyślnie 30 dni): wiek, od którego cron ponownie sprawdza numer.
- **Limit weryfikacji na żywo** (20 na godzinę i IP): chroni VIES i sklep przed nadużyciami.

### Adnotacja prawna na fakturze

Tekst do edycji dla każdego języka, ze zmiennymi `%vat%` (numer klienta), `%date%` (data zapytania VIES w formacie języka klienta), `%consultation%` (oficjalny numer zapytania) i `%name%` (nazwa firmy). Puste pole przejmuje pierwszy wpisany tekst.

![Faktura PDF bez VAT z adnotacją o odwrotnym obciążeniu (art. 138 i 196) i numerem zapytania VIES](https://www.datafirefly.com/wp-content/uploads/2026/10/faktura-pdf-adnotacja-odwrotne-obciazenie-artykul-138-prestashop-dfviesb2b-pl.webp)

Adnotacja pod sumami faktury bez VAT, z datą i numerem zapytania VIES.

## Dziennik dowodów

Każde zapytanie widać w **Zamówienia > Dziennik VIES B2B**: data, kraj, numer, wynik, status, źródło (adres, zamówienie, rejestracja, weryfikacja na żywo, dowód zamówienia, ręcznie, cron), nazwa firmy, numer zapytania, zamówienie, kolumna Bez VAT, klient i IP.

Dziennik jest **tylko do odczytu**. Usuwanie i edycja są blokowane po stronie serwera, a tabela **jest zachowywana po odinstalowaniu**.

![Dziennik zapytań VIES ze znacznikiem czasu i oficjalnym numerem zapytania, dowód na wypadek kontroli podatkowej](https://www.datafirefly.com/wp-content/uploads/2026/10/dziennik-dowodow-zapytan-vies-kontrola-podatkowa-prestashop-dfviesb2b-pl.webp)

Dziennik VIES B2B: każde zapytanie, jego źródło, oficjalny numer i zamówienia bez VAT.

### Dowód zamówienia

Przy zatwierdzeniu każdego zamówienia wewnątrzwspólnotowego dodawany jest wiersz Dowód zamówienia. Wskazuje on zapytanie VIES, na którym opiera się zwolnienie, i informuje, czy zamówienie zafakturowano bez VAT. Ten wiersz nigdy nie liczy się jako nowe zapytanie. Panel VIES na karcie zamówienia pokazuje datę zapytania, nazwę firmy i oficjalny numer.

![Zamówienie B2B zafakturowane bez VAT (odwrotne obciążenie) z dowodem VIES zapisanym w panelu PrestaShop](https://www.datafirefly.com/wp-content/uploads/2026/10/zamowienie-b2b-bez-vat-dowod-vies-prestashop-dfviesb2b-pl.webp)

Panel VIES w zamówieniu: zweryfikowany numer, oficjalny numer zapytania i faktura bez VAT.

### Eksport CSV

Przycisk eksportu tworzy plik CSV ze wszystkimi kolumnami, w tym datą zapytania VIES, adresem firmy, kodem błędu i ID zapytania źródłowego.

## Automatyczna ponowna weryfikacja (cron)

Strona konfiguracji pokazuje adres URL cron zabezpieczony tokenem. Wywołuj go raz dziennie. Każde uruchomienie obsługuje do 25 numerów: tych ze starą odpowiedzią VIES i tych, na które VIES nie odpowiedział. Gdy VIES nie działa, uruchomienie kończy się bez błędów.

```
0 4 * * * curl -s "https://twoj-sklep/index.php?fc=module&module=dfviesb2b&controller=cron&token=TWOJ_TOKEN" > /dev/null
```

## Awarie VIES

Każde wywołanie jest ograniczone do 8 sekund. Gdy SOAP nie odpowiada, moduł próbuje API REST. Po awarii przez pięć minut nie odpytuje VIES, aby nie spowalniać zamówienia. Zatwierdzenie zamówienia wywołuje VIES tylko dla numeru nigdy niesprawdzonego.

## RODO

Z modułem psgdpr klient może wyeksportować swoje zapytania. Żądanie usunięcia kasuje numer zapisany w profilu i adresy IP klienta z dziennika. Same dowody podatkowe są zachowywane, na co pozwala art. 17 ust. 3 lit. b RODO w przypadku obowiązków prawnych.

## Rozwiązywanie problemów

### Nie pojawia się numer zapytania

Sprawdź, czy numer VAT sprzedawcy jest wpisany i czy żaden czerwony komunikat nie informuje o odrzuceniu przez VIES.

### Klient nie może wpisać numeru VAT

Pole brakuje w formacie adresu jego kraju. Dodaj `vat_number` w **Międzynarodowe > Lokalizacje > Kraje**.

### Zwolnienie nie jest stosowane

Sprawdź cztery warunki opisane wyżej, zwłaszcza kraj dostawy, i obejrzyj ostatni wiersz dziennika dla tego numeru.

### Oznaczenie pozostaje na VIES niedostępny

VIES miewa awarie. Sprawdź też, czy serwer łączy się z `ec.europa.eu` przez HTTPS. Cron nadrobi niesprawdzone numery.

Ten moduł automatyzuje weryfikację, zwolnienie i gromadzenie dowodów. Nie zastępuje księgowego: odpowiedzialność za obowiązki podatkowe pozostaje po Twojej stronie.
