VIES è il sistema live dell'UE per la convalida delle partite IVA; il campo IVA nativo di PrestaShop viene salvato, ma non viene mai verificato tramite VIES. Le regole di inversione contabile qui sotto riflettono l'IVA UE in vigore nel 2026, l'autorità fiscale e il commercialista restano responsabili nel determinare se una specifica vendita sia esente. I percorsi riguardano PrestaShop 1.6, 1.7, 8 e 9.

Ecco cosa si aspetta un cliente B2B con partita IVA in un altro Paese dell'UE quando arriva sul tuo negozio PrestaShop: inserisce la propria partita IVA, il prezzo passa al netto e la fattura che scarica riporta "inversione contabile" invece di addebitargli un'imposta che dovrebbe poi recuperare. Se funziona correttamente, hai una vendita B2B transfrontaliera senza attriti. Se sbagli, addebitando IVA quando non dovresti, oppure esentando un numero che poi risulta non valido, rischi di perdere il cliente o di accollarti tu la responsabilità fiscale. Questa guida riguarda nello specifico l'automazione della verifica: come PrestaShop controlla una partita IVA tramite il sistema VIES dell'UE, dove avviene davvero questo controllo nel codice e come trasformare un numero valido in un ordine esente senza interventi manuali.

Questa è una parte di una configurazione B2B più ampia. Decidere quali clienti vedono i prezzi netti, come cambia la visualizzazione dell'imposta e come valutare una richiesta di conto commerciale sono attività distinte, trattate negli articoli correlati linkati lungo il testo. Qui ci concentriamo su una sola domanda: far scattare l'esenzione IVA in modo automatico e corretto.

La regola che stai automatizzando: inversione contabile intra-UE

La logica fiscale è specifica e vale la pena formularla con precisione, perché l'automazione è affidabile solo quanto le condizioni che controlla. Quando un'azienda con partita IVA vende beni o servizi a un'altra azienda con partita IVA in uno Stato membro UE diverso, il venditore non addebita l'IVA. L'acquirente la assolve nella propria dichiarazione, la "inversione contabile", evitando così di dover recuperare l'IVA estera. Perché l'esenzione sia legittima, devono valere tutte queste condizioni:

  • Entrambe le parti sono aziende con partita IVA.
  • Si trovano in Stati membri UE diversi (un venditore tedesco e un acquirente B2B tedesco pagano comunque l'IVA tedesca).
  • La partita IVA dell'acquirente è valida: confermata tramite VIES, non solo formalmente corretta.
  • La fornitura attraversa realmente il confine.

Se manca anche una sola di queste condizioni, si applica l'IVA normale. Ecco perché un controllo di formato ("sembra una partita IVA francese?") non basta da solo, ed ecco perché l'automazione deve dialogare con VIES.

VIES: l'unico controllo autorevole

VIES (VAT Information Exchange System) è il servizio ufficiale della Commissione europea per confermare che una partita IVA sia reale e attiva. Gli invii un codice Paese e un numero; lui risponde valido o non valido e, a seconda dello Stato membro, restituisce il nome e l'indirizzo dell'azienda registrata. Non esiste un sostituto. Una regex che conferma che il numero abbia lunghezza e prefisso nazionale corretti non dice nulla sul fatto che quel numero sia effettivamente registrato, che è l'unico punto rilevante per un'esenzione che potresti dover difendere in caso di controllo.

Il limite pratico è l'affidabilità. VIES è un accesso in tempo reale ai singoli database fiscali nazionali: può essere fermo per manutenzione, alcuni Stati membri possono risultare temporaneamente offline e le risposte possono arrivare in ritardo. Che cosa significa quindi per la tua procedura d'acquisto? L'automazione non deve mai lasciare che un timeout di VIES blocchi una vendita. Il comportamento corretto quando VIES non è raggiungibile è accettare l'ordine, addebitare l'IVA normalmente (l'impostazione predefinita sicura) e contrassegnare l'ordine per una revisione manuale o una nuova verifica: non lasciare il cliente fermo davanti a un validatore che gira. Un'esenzione può essere applicata retroattivamente dopo una nuova verifica riuscita; un carrello abbandonato no.

VIES espone un servizio web SOAP, che è l'endpoint chiamato dietro le quinte da qualsiasi modulo PrestaShop per la convalida IVA. Una chiamata PHP essenziale ha questo aspetto: è utile sapere esattamente che cosa fa un modulo per tuo conto e che cosa significa davvero un timeout:

// VIES SOAP check – country code + number, returned valid/invalid (+name/address where the state shares it).
// Wrap in try/catch: a SoapFault here = VIES unreachable, NOT an invalid number.
try {
    $client = new SoapClient(
        'https://ec.europa.eu/taxation_customs/vies/services/checkVatService.wsdl',
        array('connection_timeout' => 10)   // never hang the checkout on a slow gateway
    );
    $res = $client->checkVat(array(
        'countryCode' => 'FR',              // ISO country code (use XI for Northern Ireland)
        'vatNumber'   => '12345678901',     // digits only, no country prefix
    ));
    // $res->valid === true|false; $res->name / $res->address where the member state returns them.
} catch (SoapFault $e) {
    // VIES down or timed out -> take the order WITH VAT, flag for manual re-check. Do not block.
}

Nota le due modalità di errore distinte: $res->valid === false significa che VIES ha risposto e che il numero non è registrato (rifiuta l'esenzione); un SoapFault significa che VIES non ha risposto affatto (addebitare l'IVA, contrassegnare l'ordine, ricontrollare più tardi). Confonderle è il bug classico: un disservizio governativo non dovrebbe mai far sembrare non valido un cliente.

Che cosa fa PrestaShop in modo nativo, e dove si ferma

PrestaShop include più elementi di quanto molti commercianti immaginino, ma non arriva all'automazione completa. Le parti native sono:

  • Un campo partita IVA negli indirizzi. Il campo vat_number vive sull'oggetto Address (salvato nella tabella ps_address; lo vedrai nel modulo indirizzo durante la procedura d'acquisto e quando modifichi un indirizzo in Clienti → Indirizzi). La sua visualizzazione è gestita per Paese da Internazionale → Località → Paesi → [Paese] → "È necessario un numero di identificazione fiscale?", mentre i campi azienda/IVA vengono mostrati abilitando la modalità B2B (sotto), non esiste un interruttore globale separato per "mostra campo IVA".
  • Un interruttore "modalità B2B". Parametri negozio → Impostazioni cliente → Abilita modalità B2B (il valore di configurazione PS_B2B_ENABLE) espone i campi azienda/IVA e i dati cliente orientati al B2B.
  • L'imposta deriva dalle regole fiscali e dagli indirizzi, non da un controllo VIES. Questa è la limitazione decisiva. PrestaShop addebita le imposte in base alle regole fiscali associate ai prodotti insieme all'indirizzo del cliente (Paese/stato/zona), non in base a un controllo VIES live e non in base all'appartenenza a un gruppo. Un gruppo cliente controlla il metodo di visualizzazione dei prezzi (visualizzazione IVA inclusa o IVA esclusa) e gli sconti, ma non azzera nativamente l'IVA addebitata. Il campo nativo vat_number viene salvato e stampato in fattura, e il core può applicare una validazione di base del campo, ma non va considerato una convalida IVA autorevole: il core di PrestaShop non chiama VIES e non azzera automaticamente l'imposta perché è stato inserito un numero.

In altre parole, con l'installazione standard puoi raccogliere una partita IVA e puoi creare un gruppo clienti che mostra prezzi netti, ma non esiste un "gruppo esente da imposte" nativo che rimuova l'IVA. I gruppi sono utili per la visualizzazione netto/lordo e per la visibilità dei prezzi; l'esenzione IVA effettiva richiede una logica corretta di regole fiscali e indirizzi, oppure un modulo/gestore fiscale personalizzato. Il collegamento tra "questo numero è valido su VIES" e "quindi questo cliente è esente" è la parte che devi aggiungere. Come si costruisce un gruppo con prezzi netti e come i prezzi passano al netto per quel gruppo è materia degli articoli correlati: vedi prezzi netti e prezzi lordi: cambio della visualizzazione fiscale per la meccanica di visualizzazione e gruppi clienti in PrestaShop per la configurazione del gruppo.

Dove scatta davvero l'esenzione in PrestaShop

Impostazioni di amministrazione del verificatore IVA UE con validazione VIES e assegnazione a un gruppo clienti esente da imposta
Il verificatore IVA UE convalida il numero tramite VIES e assegna gli acquirenti B2B validi a un gruppo clienti esente da imposta.

Per automatizzare questo processo in modo pulito, conviene sapere quale leva sposta l'imposta. Esistono due strade corrette, e si comportano in modo diverso:

MeccanismoCome viene rimossa l'impostaQuando si applicaCompromesso
Gruppo clienti con prezzi nettiIl price_display_method del gruppo controlla solo la visualizzazione IVA inclusa o IVA esclusa: impostalo su IVA esclusa perché il cliente veda i prezzi netti. L'aliquota effettivamente addebitata deriva comunque dalla regola fiscale di ogni prodotto più le regole dell'indirizzo (Paese/stato/zona), non dal gruppoIl cliente vede i prezzi netti in tutto il negozio dal momento in cui entra nel gruppoLa visualizzazione netta è legata all'appartenenza al gruppo, ma la visualizzazione non è l'esenzione: il gruppo non azzera l'IVA addebitata, quindi lo 0% legale deve comunque derivare dalla logica fiscale/indirizzo
Esenzione fiscale a livello di indirizzoIl livello Tax / TaxManager determina l'aliquota in base al Paese dell'indirizzo di consegna e al gruppo di regole fiscali. PrestaShop nativo non tratta automaticamente una partita IVA intra-UE valida come attivatore dell'inversione contabile; il modulo o la logica personalizzata deve convalidare la partita IVA e modificare il calcolo dell'imposta oppure selezionare un percorso di regole fiscali appropriato che produca lo 0%Per ordine, in base all'indirizzo usato nella procedura d'acquistoPiù vicino alla vera regola legale (conta la fornitura transfrontaliera), ma richiede logica personalizzata per leggere VIES e rettificare l'imposta del carrello

Dietro le quinte, l'imposta viene calcolata tramite TaxManagerFactory / TaxCalculator quando viene costruito il totale del carrello, leggendo il gruppo di regole fiscali di ogni prodotto e la zona dell'indirizzo cliente. Un'automazione può (a) spostare un cliente verificato via VIES in un gruppo con prezzi netti e applicare un percorso fiscale conforme allo 0% per quell'ordine, oppure (b) agganciarsi direttamente alla risoluzione fiscale del carrello/ordine. Il punto fondamentale da tenere chiaro è che il gruppo cambia solo la visualizzazione netto/lordo: usare il motore prezzi di PrestaShop per la visualizzazione è solido (niente calcoli fiscali duplicati, niente sorprese al momento della fattura, compatibilità con gli aggiornamenti), ma l'IVA legale allo 0% deve comunque essere applicata tramite una logica fiscale collegata all'indirizzo di consegna/fatturazione, al Paese del venditore, alla convalida IVA e alle regole della fornitura. Quindi il passaggio di verifica deve codificare "numero valido su VIES E Stato membro diverso" prima di promuovere il cliente alla visualizzazione netta e attivare l'esenzione.

Il flusso automatizzato, dall'inizio alla fine

Un flusso di esenzione fiscale correttamente automatizzato su PrestaShop si presenta così:

  • Raccogli il numero in anticipo. Acquisisci la partita IVA in fase di registrazione, non nascosta alla fine della procedura d'acquisto, così il cliente vede prezzi corretti (netti) fin dal primo caricamento di una pagina dopo l'accesso, invece di una sorpresa fiscale che si ribalta all'ultimo passaggio.
  • Convalida tramite VIES in tempo reale. All'invio, chiama VIES (codice Paese + numero) e dai al cliente un riscontro visivo immediato: una conferma verde con il nome azienda restituito, oppure un rifiuto chiaro. Fai prima un controllo di formato per evitare una chiamata VIES inutile su un inserimento palesemente malformato, poi esegui la chiamata autorevole.
  • Controlla la condizione del Paese. Conferma che il Paese del cliente sia diverso da quello del tuo negozio. Un acquirente B2B dello stesso Paese è verificato ma non esente: un passaggio che le automazioni ingenue saltano e i revisori fiscali no.
  • Promuovi in caso di successo. Assegna il cliente verificato al gruppo con prezzi netti, così il motore prezzi di PrestaShop mostra i prezzi netti: questo gestisce la visualizzazione. Separatamente, applica lo 0% IVA tramite una logica fiscale conforme collegata all'indirizzo di consegna/fatturazione, al Paese del venditore, alla convalida IVA e alle regole della fornitura, così l'ordine porta davvero l'esenzione e non mostra soltanto importi netti.
  • Annota la fattura. La fattura generata deve mostrare la dicitura di inversione contabile (sotto): automaticamente, nel momento in cui l'IVA viene esentata.
  • Degrada in sicurezza. In caso di timeout di VIES, non bloccare: accetta l'ordine con IVA addebitata e contrassegnalo per una nuova verifica manuale.

Verificare che un numero sia valido non equivale a decidere che il richiedente sia un vero cliente commerciale a cui vuoi concedere prezzi netti e conti aziendali: quella valutazione (prove aziendali, approvazione manuale, controllo frodi) è un'attività a parte, trattata in richieste di conto commerciale: verificare i clienti aziendali prima di concedere l'accesso.

Requisiti della fattura quando applichi l'esenzione

Una fattura esente non è semplicemente "la stessa fattura con €0 di imposta". Secondo la Direttiva IVA dell'UE deve contenere informazioni specifiche, altrimenti l'esenzione non è documentata correttamente:

  • La tua partita IVA.
  • La partita IVA del cliente (quella che hai verificato).
  • Una nota esplicita di inversione contabile, ad esempio "Inversione contabile, IVA a carico del destinatario, articolo 196, Direttiva del Consiglio 2006/112/CE" (usa l'equivalente nella lingua locale dove richiesto).
  • Il totale indicato senza IVA.

In PrestaShop la fattura viene generata dall'oggetto OrderInvoice e renderizzata tramite la classe HTMLTemplateInvoice; il modo più pulito per aggiungere una riga condizionale di inversione contabile è tramite il template fattura / un hook, non modificando manualmente i PDF a posteriori. L'annotazione manuale su decine di ordini è esattamente il punto in cui si insinuano gli errori di conformità.

Casi limite che rompono le automazioni ingenue

Vendite nello stesso Paese. Una partita IVA valida di un cliente nel tuo stesso Paese resta una vendita nazionale: addebita l'IVA normale. L'inversione contabile è strettamente intra-UE transfrontaliera. Qualsiasi automazione che esenta solo perché il numero è "valido" è sbagliata in questo caso.

Irlanda del Nord (numeri XI). Dopo la Brexit, l'Irlanda del Nord resta dentro il sistema IVA UE per i beni e usa partite IVA con prefisso XI, che VIES convalida. Il resto della Gran Bretagna (GB) è un Paese terzo e resta completamente fuori da questo meccanismo. La tua convalida deve trattare XI come incluso e GB come escluso.

Nuovi Stati membri e variazioni di formato. Quando un Paese entra nell'UE, il suo formato IVA deve essere riconosciuto dalla tua validazione. Affidati a VIES come fonte di verità invece che a una tabella regex cablata che finirai per dimenticare di aggiornare.

Frode d'identità. Un truffatore determinato inserisce una partita IVA autentica appartenente a un'altra azienda per evitare l'IVA. VIES dice "valida", ma il nome e l'indirizzo restituiti non corrispondono all'ordine. Quando VIES restituisce i dati dell'azienda registrata, confrontali con l'azienda e l'indirizzo dell'ordine prima di applicare l'esenzione. Una mancata corrispondenza è un segnale da revisionare, non un'esenzione automatica.

Comunicazione Intrastat/elenchi riepilogativi. Le vendite in inversione contabile devono essere comunicate alla tua autorità fiscale negli elenchi riepilogativi delle operazioni intracomunitarie (di solito con cadenza trimestrale). Questo significa tracciare quali ordini sono stati esentati e a favore di chi: un buon motivo per conservare la decisione di esenzione come dato strutturato dell'ordine, non come nota libera.

Conservazione dei registri: dimostra di aver controllato

L'esenzione è difendibile solo se puoi dimostrare di aver verificato il numero al momento della vendita. Per ogni ordine esentato, conserva: partita IVA, timestamp della convalida, risposta VIES grezza (valido/non valido più eventuali nome/indirizzo restituiti) e ordine a cui si riferisce. I requisiti di conservazione variano per Stato membro, spesso diversi anni, in molti casi fino a dieci, quindi verifica la regola locale e conserva il registro per tutto il periodo necessario. Se un'automazione esenta l'imposta ma non registra nulla, hai automatizzato un problema da audit.

Domande frequenti

PrestaShop convalida le partite IVA tramite VIES già di serie?

No. Il core salva il vat_number sull'indirizzo e può applicare controlli di formato leggeri, ma non chiama mai VIES e non azzera mai l'IVA perché è stato inserito un numero. Quel collegamento, convalida VIES live più esenzione che ne deriva, è il vuoto che un modulo come Automatic EU VAT Checker serve a colmare. Senza, un numero inserito è solo testo stampato sulla fattura.

VIES non era disponibile quando il mio cliente ha completato l'ordine: che cosa dovrebbe succedere?

L'ordine deve passare con IVA addebitata, essere contrassegnato per una nuova verifica manuale e non essere mai bloccato. Un'interruzione di VIES (un SoapFault nel codice sopra) è un problema lato amministrazione pubblica, non un cliente non valido; trattarla come "rifiutato" ti fa perdere una vendita legittima. Quando VIES torna disponibile, riconvalidi e, se il numero risulta corretto, applichi l'esenzione retroattivamente. Regola pratica: un'esenzione recuperabile vale più di un carrello abbandonato, sempre.

Un cliente del mio stesso Paese ha inserito una partita IVA valida: devo esentarlo?

No. L'inversione contabile è strettamente intra-UE transfrontaliera. Un'azienda tedesca che acquista da un negozio tedesco paga l'IVA tedesca completa anche con una partita IVA perfettamente valida. Qualsiasi automazione che esenta solo sulla base di "valido" è sbagliata: il controllo della differenza tra Paesi è una seconda condizione obbligatoria, ed è proprio quella che le configurazioni ingenue saltano.

E le partite IVA del Regno Unito e dell'Irlanda del Nord?

L'Irlanda del Nord (numeri con prefisso XI) resta dentro il sistema IVA UE per i beni e viene convalidata tramite VIES: tratta XI come incluso. Il resto della Gran Bretagna (numeri GB) è un Paese terzo e resta completamente fuori dal meccanismo di inversione contabile; VIES non convalida un numero GB per questo scopo. La tua convalida deve distinguere i due casi, cosa che una tabella regex cablata di solito finisce per sbagliare nel tempo.

Posso semplicemente mettere i clienti esenti IVA in un gruppo con prezzi netti e considerare il lavoro finito?

Questo gestisce la visualizzazione: il cliente vede prezzi netti, ma un gruppo non azzera l'IVA effettivamente addebitata. PrestaShop calcola l'imposta dalla regola fiscale del prodotto più l'indirizzo di consegna, non dall'appartenenza al gruppo. Quindi servono entrambe le cose: il gruppo per la visualizzazione netta e un percorso fiscale conforme allo 0% collegato all'indirizzo e al numero verificato per l'esenzione legale. Confondere "mostra il netto" con "è esente" è l'errore di configurazione più comune su tutto questo tema.

Come si inserisce mypresta.rocks

Il vuoto lasciato da PrestaShop, un campo IVA salvato che nessuno verifica tramite VIES, è esattamente il tipo di problema che un modulo mirato risolve senza modificare il motore fiscale o il tema. Automatic EU VAT Checker convalida durante la registrazione e la procedura d'acquisto, codifica la condizione transfrontaliera (così non esenta mai un acquirente dello stesso Paese), degrada in sicurezza quando VIES non è disponibile e conserva il registro di convalida richiesto in caso di audit. Il beneficio che acquisti è doppio: il cliente percepisce una conferma immediata quando il numero risulta valido e prezzi netti che compaiono subito invece di ribaltarsi all'ultimo passaggio; tu ottieni esenzioni che scattano automaticamente sul record VIES live, una riga di inversione contabile che arriva in fattura senza modifiche manuali e un registro di convalida pronto se l'autorità fiscale dovesse chiederlo. Poiché la giusta implementazione promuove i clienti verificati in un gruppo B2B/dedicato ai verificati IVA per visualizzazione netta e accesso, e aggiunge logica di modulo per l'esenzione legale, invece di riscrivere i calcoli fiscali, sfrutta il motore prezzi della piattaforma per la visualizzazione e resiste agli aggiornamenti. Se stai costruendo il B2B da zero, parti dalla panoramica su vendere B2B su PrestaShop, poi collega prezzi netti, assegnazione ai gruppi e, se offri conti cliente, termini di pagamento differito sopra la base di clienti verificati che questa automazione ti fornisce.

Il principio alla base di tutto è questo: una partita IVA non è una casella da spuntare, è una dichiarazione sulla quale stai scegliendo di agire legalmente. Automatizzare l'esenzione vale la pena proprio perché la versione manuale, controllare numeri a occhio, modificare fatture a mano, ricordarsi la regola dello stesso Paese alle 18 di venerdì, è dove nascono gli errori costosi. Lascia che VIES sia l'autorità, lascia che il motore gruppi di PrestaShop gestisca i prezzi e conserva il registro che dimostra che hai fatto tutto correttamente.

David Miller

David Miller

Fondatore, mypresta.rocks
Informazioni sull’autore

David Miller è uno specialista PrestaShop con oltre dieci anni di esperienza sul campo e fondatore di mypresta.rocks, uno studio di sviluppo con sede a Tychy, in Polonia. Progetta e mantiene un catalogo di 159 moduli PrestaShop, tra cui 21 suite « Revolution » dedicate a SEO, checkout, sicurezza, performance, marketing, ricerca, supporto e gestione del magazzino, che ogni giorno migliorano negozi reali, testati su PrestaShop 1.7.8, 8.x e 9.x. Si occupa inoltre della gestione di negozi in produzione, perciò il suo lavoro si misura sulle vendite reali, non sulle demo. La sua esperienza abbraccia l'intero e-commerce, performance, sicurezza, SEO e marketing, e va oltre PrestaShop, fino a WooCommerce, Shopify e sistemi su misura. Sul blog scrive del lato tecnico di PrestaShop: cosa fa davvero la piattaforma, cosa si rompe in produzione e quali soluzioni reggono nel tempo.

Condividi questo articolo:

Commenti

Ancora nessun commento. Sii il primo!

Ti è piaciuto questo articolo?

Ricevi i nostri ultimi consigli, guide e aggiornamenti dei moduli nella tua casella di posta.

Puoi annullare l'iscrizione in qualsiasi momento. Trovi i nostri contatti nelle note legali.

Caricamento...
Torna su