Saltar para o conteúdo principal
VeriFactu

Erros de VeriFactu com o formato do envio: XML ilegível, UTF-8 e pedidos vazios

Antes de verificar qualquer fatura, a AEAT tem de conseguir ler o que lhe chega: um XML bem formado, em UTF-8, pelo método correto e com os nós que espera. Se algo disso falhar, não há fatura que valha. Estes oito códigos são os dessa primeira porta, e quase todos rejeitam o pedido completo.

FlexigoTech · Responsável: Víctor Gómez · Atualizado em 4 de novembro de 2026

O essencial

Módulo
VeriFactu
Versões
Odoo 17, 18, 19 e 20
Verificado
no código do módulo, versão 20.0 · nas fontes indicadas no fim
Leitura
3 min

O que a AEAT não consegue ler

CódigoTexto da AEAT
4103Se ha producido un error inesperado al parsear el XML.
4119Error al informar caracteres cuya codificación no es UTF-8.
4135Esta URL no puede ser utilizada mediante GET.
4136No se ha enviado el nodo RegistroAlta o el anterior al nodo RegistroAlta no es correcto.
4137No se ha enviado el nodo RegistroAnulacion o el anterior al nodo RegistroAnulacion no es correcto.
4138Petición vacía en el XML o encoding incorrecto.

Os seis estão na secção da lista que rejeita o envio completo. Os outros dois códigos desta página rejeitam apenas um registo: o 1100, Valor o tipo incorrecto del campo., o mais genérico da lista, e o 1251, para um IDVersion incorreto.

Cartão dos códigos de formato do envio de VeriFactu
A vermelho, os seis que rejeitam o pedido inteiro; a âmbar, o 1100 e o 1251, que rejeitam um registo.

Como o Odoo envia cada pedido

O módulo envia cada pedido como um POST SOAP 1.1 através de TLS mútuo, com o certificado digital da empresa. O corpo é XML em UTF-8, com a respetiva declaração de codificação, e o cabeçalho HTTP anuncia-o como text/xml em UTF-8. Os textos são normalizados para a forma NFC, para que uma mesma letra acentuada chegue sempre com os mesmos bytes. Cada registo leva IDVersion 1.0 e, antes de sair, passa pela validação contra o esquema oficial que o módulo inclui.

Com esta forma de enviar, as falhas desta página não deveriam aparecer: não há GET, não há pedidos vazios e a codificação é sempre a mesma.

O caso do GET

O 4135 é o único desta página que se vê com frequência, e tem uma explicação muito simples: alguém abriu o endereço do serviço da AEAT num navegador. Um navegador pede as páginas com GET, e o serviço só aceita POST. Se o vir ao testar o endereço manualmente, não indica nenhum problema com os seus envios: a fila do Odoo nunca pede com GET.

Fila de envio à AEAT agrupada por estado
A fila de envio no Odoo agrupada por estado: as rejeições do pedido completo ficam em Failed. Captura do Odoo 20 com dados de demonstração; as respostas da AEAT são simuladas.

O que fazer

  • Com um 4103, 4119 ou 4138 num envio do módulo, guarde a resposta do campo Raw Response e escreva para comercial@flexigobe.com: queremos ver que fatura seguia nesse envio.
  • Com um 4136 ou 4137, o mesmo. O módulo constrói esses nós para cada registo de alta e cada anulação.
  • Com um 1100, a mensagem não indica o campo: a resposta completa costuma deixar ver a que registo diz respeito.

Quando soubermos a causa, os envios em Failed reenviam-se a partir de Envío a AEAT › Errores AEAT com Reintentar Selección. Os do 1100 e do 1251 a fila já os repete, mas com os mesmos dados.

Os códigos desta página, com o texto da AEAT

Cada código com o seu texto literal, tal como o dá a lista de erros da AEAT:

CódigoTexto da AEAT
4103Se ha producido un error inesperado al parsear el XML.
4119Error al informar caracteres cuya codificación no es UTF-8.
4135Esta URL no puede ser utilizada mediante GET.
4136No se ha enviado el nodo RegistroAlta o el anterior al nodo RegistroAlta no es correcto.
4137No se ha enviado el nodo RegistroAnulacion o el anterior al nodo RegistroAnulacion no es correcto.
4138Petición vacía en el XML o encoding incorrecto.
1100Valor o tipo incorrecto del campo.
1251El valor del campo IdVersion tiene un valor incorrecto

Os erros de esquema, quando falta um campo obrigatório, têm página própria: o erro 4102.

Continue a ler

Erro 4102 do VeriFactu: «El XML no cumple el esquema. Falta informar campo obligatorio»O erro 4102 do VeriFactu rejeita o envio inteiro porque falta um campo obrigatório. Como o Odoo 17, 18, 19 e 20 o trava antes e o que fazer se a AEAT o devolver.Erros 4113 e 4114 do VeriFactu: demasiados registos no mesmo envioOs erros 4113 e 4114 do VeriFactu: demasiados registos num envio. O limite de 1000 por pedido, o de cada bloco e como o Odoo 17 a 20 o respeita.Erros técnicos do VeriFactu: quando o problema está nos sistemas da AEATErros técnicos do VeriFactu do lado da AEAT (4108, 4110, 4111, 4118, 4128, 3500, 3501, 1129, 1256, 1288): quais o Odoo volta a tentar e quais reenvia o utilizador.
Verificado no código do módulo (versão 20.0) e nas fontes indicadas

Fontes