PrestaShop-tutorials

Hoe verifieert u automatisch een VIES btw-nummer in de PrestaShop-checkout?

De verificatie van een intracommunautair btw-nummer bij de Europese VIES-dienst is op papier eenvoudig: een aanroep, een antwoord geldig of ongeldig. In productie botst ze op een dienst waarvan de beschikbaarheid per lidstaat verschilt, op heterogene nummerformaten, en op een klant die op een antwoord wacht terwijl de pagina draait.

Dit artikel behandelt de implementatie. De fiscale voorwaarden van de vrijstelling zijn een ander onderwerp, en de verificatie is er maar één van de vier.

Waar het veld te plaatsen

Twee mogelijke locaties, met verschillende gevolgen.

Bij de registratie, in het formulier voor het aanmaken van een zakelijk account. De verificatie gebeurt één keer, het resultaat wordt bij de klant opgeslagen, en de checkout blijft vlot. De aanbevolen aanpak zodra u zakelijke accounts valideert.

In de checkout, in het formulier van het factuuradres. Flexibeler voor klanten die zonder account bestellen, maar de verificatie komt op het slechtste moment: traagheid of een fout in deze stap kost een bestelling.

In beide gevallen hoort het veld bij het factuuradres, nooit bij het leveradres. Het nummer behoort toe aan de entiteit die koopt, niet aan de plaats waar het pakket aankomt.

De formaten, eerste faalbron

Een intracommunautair btw-nummer begint met een landcode van twee letters, gevolgd door een reeks waarvan de lengte en samenstelling per lidstaat verschillen. Nederland gebruikt negen cijfers gevolgd door de letter B en twee cijfers, Duitsland negen cijfers, Spanje een combinatie van letters en cijfers, Ierland aanvaardt meerdere historische formaten.

Drie bewerkingen vóór elke aanroep.

  1. De invoer normaliseren. Spaties, punten en streepjes verwijderen en naar hoofdletters omzetten. Eén klant op drie voert zijn nummer met scheidingstekens in.
  2. De landcode van de rest scheiden. De dienst verwacht beide apart, en de klant voert vaak alles in één blok in.
  3. De vorm valideren vóór de aanroep. Een formaatcontrole per land vermijdt de dienst te bevragen voor een duidelijk foute invoer, en laat een onmiddellijk bericht toe.

Let op het geval Griekenland, waarvan de btw-landcode verschilt van de ISO-landcode, en op Noord-Ierland, dat sinds het vertrek van het Verenigd Koninkrijk een aparte prefix heeft.

Validatie Intracommunautaire btw via VIES & B2B-verleggingIntracommunautaire btw gecontroleerd, verlegging automatisch, getijdstempelde auditbewijzen.79,00

De aanroep van de dienst

De Europese dienst bevraagt voor elke aanvraag de nationale database van de betrokken lidstaat. Twee directe gevolgen.

De latentie varieert sterk naargelang het bevraagde land. Een Duitse verificatie antwoordt doorgaans snel, andere administraties zijn duidelijk trager.

De beschikbaarheid is per lidstaat onafhankelijk. De dienst kan werken voor België en op hetzelfde moment onbeschikbaar zijn voor Italië. Een geslaagde test garandeert dus niet dat alle verificaties zullen slagen.

Stel een maximale wachttijd in, vijf tot tien seconden, waarna u de dienst als onbeschikbaar beschouwt. Een aanroep zonder tijdslimiet blokkeert de pagina.

Het gedrag bij storing

Dit is het punt dat een bruikbare implementatie onderscheidt van een fragiele. Drie toestanden om te onderscheiden, geen twee.

Geldig nummer. U registreert het resultaat en de tijdstempel, en past uw fiscale regels toe.

Ongeldig nummer. Duidelijk bericht aan de klant, met de mogelijkheid te corrigeren. Blokkeer de bestelling niet: de klant kan met btw kopen en achteraf regulariseren.

Dienst onbeschikbaar. Het slechtst behandelde geval. De bestelling moet doorgaan, met toegepaste btw, en de verificatie moet in een wachtrij komen voor een nieuwe poging. Onbeschikbaarheid als ongeldigheid behandelen kost bestellingen; ze als geldigheid behandelen stelt u fiscaal bloot.

Een herverificatiewachtrij die niet-geverifieerde nummers enkele uren later automatisch opnieuw doorloopt, lost dit geval op zonder tussenkomst.

De berichten aan de klant

Ze tellen evenveel als de mechaniek. Drie formuleringen om voor te bereiden.

Bij een ongeldig nummer: leg uit wat de weigering kan verklaren: een recent nummer dat nog niet in de Europese database is geregistreerd, een niet btw-plichtige onderneming, of een invoerfout. Een kaal “ongeldig nummer” laat de klant zonder uitweg.

Bij onbeschikbaarheid: zeg de waarheid: de verificatie kon niet worden afgerond, de bestelling kan met btw worden geplaatst, en u komt erop terug. Dat stelt meer gerust dan een technische foutmelding.

Bij succes: bevestig visueel, met de bedrijfsnaam die de dienst teruggeeft wanneer die beschikbaar is. Die bevestiging vermindert invoerfouten met een nummer dat aan een ander bedrijf toebehoort.

Het bewijs bewaren

De Europese dienst levert voor elke aanvraag een raadplegingsnummer. Registreer het, met de datum, het uur, het geteste nummer en het volledige antwoord.

Dat spoor laat u toe om twee jaar later aan te tonen dat het nummer geldig was op het moment van de verkoop. Zonder dat spoor kunt u een vrijstelling niet verantwoorden, zelfs als de verificatie wel degelijk heeft plaatsgevonden.

Koppel dit bewijs aan de bestelling, niet alleen aan de klant: een klant kan van nummer veranderen, en het is de toestand op het moment van de transactie die telt.

Cache en herverificatie

Twee complementaire instellingen.

Roep de dienst niet bij elke pagina opnieuw aan. Een geslaagde verificatie kan zonder risico enkele dagen worden bewaard, wat vermijdt dat de dienst bij elke herlading van de winkelwagen wordt bevraagd.

Herverifieer periodiek de terugkerende klanten. Een nummer dat in de loop van het jaar wordt ingetrokken blijft geldig in uw database als niemand het opnieuw controleert. Een maandelijkse herverificatie van de actieve accounts volstaat.

De Intracommunautaire Btw-validatie VIES module verzorgt deze keten op PrestaShop 8 en 9: normalisatie en formaatcontrole per land, aanroep van de dienst met maximale wachttijd, storingsgedrag met herverificatiewachtrij, bewaring van het raadplegingsnummer en periodieke herverificatie van de accounts.

Lees verder

Gerelateerde artikelen