Skip to main content
VeriFactu

VeriFactu errors 4120 to 4133: the header of voluntary submissions and of AEAT requests

There are two ways of sending records to the AEAT, the Spanish tax agency: on your own initiative, as a VERI*FACTU system, or when the AEAT asks for them in a formal request («requerimiento»), as a No VERI*FACTU system. Each one has its own fields in the submission header and they cannot be mixed. Ten codes guard that border, and all of them reject the whole request.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 4 November 2026

Key facts

Module
VeriFactu
Versions
Odoo 17, 18, 19 and 20
Checked
in the module's source code, version 20.0 · against the sources linked at the end
Reading time
3 min

The fields of each mode

The AEAT validation document splits the header fields like this:

FechaFinVeriFactu
Only in systems that issue verifiable invoices. From 1 January 2027 it must have the format 31-12-20XX, with the year equal to that of the AEAT system or the year before.
Incidencia
Only in systems that issue verifiable invoices.
RefRequerimiento
Only in systems that issue non-verifiable invoices, and mandatory in them. The reference must exist at the AEAT.

The difference is not only about fields. In a submission under request, according to section 4.3.2 of the AEAT document, business errors are not corrected: records are sent as they were kept in the system when they were generated, and those errors are flagged as admissible, except the ones about identifying the tax ID or IDOtro.

As with anything that fails in the header, any of these errors rejects the whole submission: no invoice gets in.

Card for the VeriFactu header codes by mode
The ten header codes by mode, in red: they all reject the whole request.

The ten codes

CodeWhat the AEAT says, in short
4120Wrong FechaFinVeriFactu: it must be 31-12-20XX, of the current year or the year before.
4121Wrong value in Incidencia.
4122Wrong value in RefRequerimiento.
4125In a submission under request, RefRequerimiento is mandatory.
4126RefRequerimiento only goes in submissions answering a request.
4127Voluntary submission is only reported in VERI*FACTU systems.
4129FinRequerimiento is mandatory.
4130FinRequerimiento only goes in No VERI*FACTU systems.
4131Wrong value in FinRequerimiento.
4133RefRequerimiento is not alphanumeric.

What header our module sends

The header built by the module carries only two things: the party obliged to issue, with the company's name and tax ID, and the Representante when a tax adviser submits. It has no voluntary submission block or request block, and none of the fields above. That is why these ten codes cannot come from one of its submissions.

The module knows both modes: each invoice series has its own, and in the software data it declares that it is not used only as VERI*FACTU. What it sends to the AEAT are the registrations and cancellations of the voluntary submission.

VeriFactu invoice series in Odoo with their mode
A company's VeriFactu invoice series, each with its prefix, its mode and its AEAT environment. Odoo 20 screenshot with demo data.

What to do if you get one

If you see one of these codes, the submission did not come from our module as published: either someone changed how the header is built, or another program is sending with your tax ID. In both cases:

  1. Look in AEAT Submission › AEAT Errors at which submissions carry the code and which company they belong to.
  2. Keep the full answer of the submission, the Raw Response field of the queue.
  3. Write to comercial@flexigobe.com before resending anything.

The codes on this page, with the AEAT's text

Each code with its literal text, in Spanish, as the AEAT's error list gives it:

CodeAEAT text (Spanish)
4120Error en la cabecera: el valor del campo FechaFinVeriFactu es incorrecto, debe ser 31-12-20XX, donde XX corresponde con el año actual o el anterior.
4121Error en la cabecera: el valor del campo Incidencia es incorrecto.
4122Error en la cabecera: el valor del campo RefRequerimiento es incorrecto.
4125Error en la cabecera: Si el envío es por requerimiento el campo RefRequerimiento es obligatorio.
4126Error en la cabecera: el campo RefRequerimiento solo debe informarse en sistemas en remisiones al endpoint del servicio a usar para la contestación a requerimientos de registros de facturación.
4127Error en la cabecera: la remisión voluntaria solo debe informarse en sistemas VERIFACTU.
4129Error en la cabecera: el campo FinRequerimiento es obligatorio.
4130Error en la cabecera: el campo FinRequerimiento solo debe informarse en sistemas No VERIFACTU.
4131Error en la cabecera: el valor del campo FinRequerimiento es incorrecto.
4133Error en la cabecera: el valor del campo RefRequerimiento no es alfanumérico.

And if the AEAT sends me a request?

The published module does not answer requests on its own, because it does not build the request header. If you receive one, write to us and we will look at how to handle it with you.

Keep reading

VeriFactu errors with your company tax ID: 4104, 4107, 4109, 4115, 4116 and the IDEmisorFactura familyVeriFactu errors on the issuer tax ID (4104, 4107, 4109, 4115, 4116, 1108, 1215…): what the AEAT checks, which Odoo field it comes from and how to resend the submission.VeriFactu errors 4105, 4117, 4123 and 4124: when your tax adviser submits for youVeriFactu errors in the Representante block (4105, 4117, 4123, 4124), when your tax adviser submits for you: what the AEAT checks and which Odoo fields fill that block.VeriFactu error 4134: «Servicio no activo», what happens to your invoices and how to resend themWhat VeriFactu error 4134 from the Spanish tax agency means, why it rejects the whole submission and how to resend your invoices from Odoo 17, 18, 19 and 20.
Checked in the module's source code (version 20.0) and the linked sources

Sources