Weryfikacja VAT UE w VIES i odwrotne obciążenie B2B
Instalacja i konfiguracja weryfikacji VIES, odwrotnego obciążenia zależnego od kraju dostawy oraz niezmiennego dziennika dowodów.
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.euz 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
- W panelu administracyjnym otwórz Moduły > Menedżer modułów > Załaduj moduł.
- Wybierz plik ZIP i uruchom instalację.
- Kliknij Konfiguruj.
Instalacja tworzy dziennik zapytań i zakładkę Dziennik VIES B2B w menu Zamówienia.

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.

Konfiguracja

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.



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.

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.

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.

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.