Naar hoofdinhoud
VeriFactu

Fout 4102 van VeriFactu: «El XML no cumple el esquema. Falta informar campo obligatorio»

4102 is dé structuurfout: in de XML die de AEAT ontvangt ontbreekt een veld dat het schema verplicht stelt. Omdat het om een structurele fout gaat, wijst de AEAT het hele verzoek af, met alle facturen die erin zaten. Met onze module zie je dit normaal gesproken in Odoo voordat er iets wordt verstuurd, en niet als antwoord van de AEAT.

FlexigoTech · Verantwoordelijk: Víctor Gómez · Bijgewerkt op 4 november 2026

In het kort

Module
VeriFactu
Versies
Odoo 17, 18, 19 en 20
Gecontroleerd
in de broncode van de module, versie 20.0 · in de bronnen onderaan
Leestijd
3 min

Waarom het hele verzoek wordt afgewezen

Het validatiedocument van de AEAT onderscheidt drie soorten controles: structurele, syntactische en bedrijfsregels. De structurele controleren of de XML aan het schema voldoet, met de verplichte tags, en als die falen wordt het hele bericht afgewezen. Die afwijzing komt terug als een SoapFault en er wordt geen enkele factuur van het verzoek geregistreerd, ook de correcte niet.

De officiële lijst zegt het letterlijk: «El XML no cumple el esquema. Falta informar campo obligatorio.» Dat staat in het eerste onderdeel, de codes die het volledige verzoek afwijzen.

Kaart van VeriFactu-code 4102
De 4102 in rood: wijst het volledige verzoek af en zet de verzending in de wachtrij van de module op Failed.

Wat de module doet zodat het niet zover komt

Eén slecht gevormd record zou alle andere records van dezelfde verzending meetrekken. Om dat te voorkomen valideert de module elk record tegen het officiële schema van de AEAT voordat het wordt verstuurd. Het bevat een kopie van dat schema, het bestand SuministroLR.xsd met zijn afhankelijkheden, en het verloop is als volgt:

  1. Bij het boeken van de factuur Wordt het facturatierecord aangemaakt, dat daarna niet meer verandert.
  2. Bij de volgende ronde van de wachtrij Elk wachtend record wordt omgezet naar XML en tegen het schema gevalideerd.
  3. Als een record er niet aan voldoet Wordt het in Odoo als afgewezen gemarkeerd met de melding van het schema, zonder AEAT-code, en gaat het niet naar buiten.
  4. De rest Gaat naar de AEAT in hetzelfde verzoek, zonder het slechte record.

Zo sleept een gebrekkig record de goede facturen die ermee meereizen niet mee.

Hoe je het in Odoo ziet

In de wachtrij voor verzending verschijnt het gestopte record op Failed met de melding van de validator als laatste fout, in plaats van een code van vier cijfers. Die melding noemt het element dat ontbreekt of op de verkeerde plek staat, precies wat je nodig hebt om te weten waar het vandaan komt. In de lijst met facturatierecords is de status «Rechazado AEAT», afgewezen door de AEAT, ook al heeft de AEAT het nooit gezien.

Wachtrij voor verzending naar de AEAT gegroepeerd op status
De wachtrij gegroepeerd op status: de verzendingen op Failed zijn de niet-automatisch-herhaalde. Schermafbeelding van Odoo 20 met demogegevens; de antwoorden van de AEAT zijn gesimuleerd.

Zelfs vóór het schema zijn er gegevens zonder die de module de XML helemaal niet opbouwt, en dat meldt hij met zijn eigen boodschap:

  • Company … has no NIF for Veri*Factu. wanneer het bedrijf geen NIF heeft.
  • Record … has no tax breakdown (Desglose) to declare. wanneer het record geen belastinguitsplitsing heeft.

Als de 4102 van de AEAT komt

Als het antwoord met 4102 van de AEAT zelf komt, is het record de lokale validatie gepasseerd en heeft de AEAT het met zijn eigen schema afgewezen. De redelijke verklaring is dat het schema van de AEAT en de kopie in de module niet meer overeenkomen. In dat geval heeft opnieuw verzenden geen zin: stuur een e-mail naar comercial@flexigobe.com met het volledige antwoord, het veld Raw Response van de wachtrij, zodat we de kopie van het schema kunnen nakijken.

Kan ik het gegeven corrigeren en opnieuw proberen?

Dat hangt af van waar het gegeven staat. De kop wordt bij elke verzending opgebouwd uit de bedrijfsgegevens van dat moment: als de fout in de naam zat, corrigeer die en gebruik Reintentar Selección in Errores AEAT. Zat hij in het NIF, dan is corrigeren niet genoeg, want het NIF is bij het boeken ook in de hash van elke factuur opgenomen en de nieuwe verzending komt terug met de 2000. Staat het gegeven in het record van de factuur, dan stuurt een nieuwe poging hetzelfde en faalt weer. In die twee gevallen: schrijf ons.

Gaat de factuur verloren?

Nee. Het record blijft in Odoo, geketend, en de wachtrij verwerkt het wachtende werk elke 1 minuut zodra het probleem is opgelost.

Lees verder

VeriFactu-fouten met het verzendformaat: onleesbare XML, UTF-8 en lege verzoekenVeriFactu-fouten van het verzendformaat (4103, 4119, 4135 tot 4138, 1100, 1251): onleesbare XML, UTF-8, GET of lege verzoeken, en hoe Odoo verstuurt.Fouten 4113 en 4114 van VeriFactu: te veel records in één verzendingDe VeriFactu-fouten 4113 en 4114: te veel records in één verzending. De limiet van 1000 per verzoek, die per blok en hoe Odoo 17 tot 20 ze respecteert.VeriFactu fout 4134: «Servicio no activo», wat er met je facturen gebeurt en hoe je ze opnieuw verstuurtWat foutcode 4134 van de AEAT in VeriFactu betekent, waarom de hele verzending wordt geweigerd en hoe je de facturen vanuit Odoo 17, 18, 19 en 20 opnieuw verstuurt.
Gecontroleerd in de broncode van de module (versie 20.0) en in de gelinkte bronnen

Bronnen