La regla de la AEAT, campo a campo
- TipoRectificativa
- Solo con TipoFactura R1, R2, R3, R4 o R5, y en esos casos es obligatorio. Sin él en una rectificativa, el 1114; con él en una factura normal, el 1115. Un valor que no sea de la lista, el 1107.
- FacturasRectificadas
- El bloque con las facturas que se rectifican. Solo con R1 a R5 y no es obligatorio. En una factura normal, el 1117.
- ImporteRectificacion
- Solo y obligatorio cuando TipoRectificativa es S, rectificación por sustitución. Si falta, el 1118; si sobra, el 1119.
- FacturasSustituidas
- Solo con TipoFactura F3, el canje de simplificadas. En cualquier otra, el 1116.
Los siete códigos rechazan el registro de la factura, no el envío completo.

Cómo envía Odoo un abono
Hoy el módulo no distingue el motivo de la rectificación: todo abono sale como R1, o como R5 si rectifica una factura que se registró como simplificada (F2). R2, R3 y R4 no salen nunca, así que un abono que según la norma tendría que ser uno de ellos se declara como R1. Con ese tipo:
- Envía siempre TipoRectificativa. Ningún código del módulo le da un valor distinto de I, rectificación por diferencias.
- Si el abono tiene factura de origen y esa factura tiene su registro de VeriFactu, la incluye en FacturasRectificadas con tu NIF, su número y su fecha.
- Envía los importes en negativo, como corresponde a una rectificación por diferencias.
Con esa forma de trabajar, la mayoría de estos códigos no deberían aparecer. El 1114 y el 1115 quedan cubiertos porque TipoRectificativa va en todos los R y en ninguna F. El 1117 también, porque FacturasRectificadas solo se añade en un abono. Y como el tipo es siempre I, nunca hace falta el bloque ImporteRectificacion, de modo que el 1118 no tiene cómo darse.

El canje de simplificadas
La F3 es la factura que sustituye a una o varias simplificadas ya emitidas. Es el único tipo que admite FacturasSustituidas, y el módulo solo lo rellena cuando la factura está marcada como canje: con las F2 que sustituye, emitidas en Odoo o fuera, hasta 1000. Antes de publicar un canje, el módulo comprueba que lo sustituido sean simplificadas ya registradas; si no, no deja publicar.
Si aun así te llega uno
Si ves alguno de estos códigos con un envío del módulo, nos interesa: lo más probable es que el abono tenga algo fuera de lo normal. El registro rechazado se reintenta con los mismos datos hasta Dead Letter y el módulo publicado no envía la corrección por sí solo. Escríbenos a comercial@flexigobe.com con el número del abono y lo revisamos.
Los códigos de esta página, con el texto de la AEAT
Cada código con su texto literal, tal como lo da la lista de errores de la AEAT:
| Código | Texto de la AEAT |
|---|---|
| 1107 | El valor del campo TipoRectificativa es incorrecto. |
| 1114 | Si la factura es de tipo rectificativa, el campo TipoRectificativa debe tener valor. |
| 1115 | Si la factura no es de tipo rectificativa, el campo TipoRectificativa no debe tener valor. |
| 1116 | Debe informarse el campo FacturasSustituidas sólo si la factura es de tipo F3. |
| 1117 | Si la factura no es de tipo rectificativa, el bloque FacturasRectificadas no podrá venir informado. |
| 1118 | Si la factura es de tipo rectificativa por sustitución el bloque ImporteRectificacion es obligatorio. |
| 1119 | Si la factura no es de tipo rectificativa por sustitución el bloque ImporteRectificacion no debe tener valor. |
Las rectificativas no se deben confundir con las anulaciones. Cancelar una factura en Odoo genera un registro de anulación, con sus propios códigos de error: están en la página de las anulaciones.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Validacione
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_aeat_client.py
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cadena.py
- Código del módulo: flexigo_spain_verifactu 20.0 (aa2ea3d2): models/verifactu_cola_envio.py
- prewww2.aeat.es/static_files/common/internet/dep/aplicaciones/es/aeat/tikeV1.0/cont/ws/err
