Códigos de error de VeriFactu (AEAT) y cómo resolverlos
· Equipo Factuneo
Qué significan los estados y códigos de error que devuelve la AEAT al enviar un registro VeriFactu (el famoso 1110, censo, XSD, huella, duplicados) y cómo corregirlos y reenviar.
Cómo responde la AEAT a cada factura
Cuando envías un registro VeriFactu, la AEAT devuelve un estado por registro:
- Correcto: aceptado sin incidencias.
- AceptadoConErrores / ParcialmenteCorrecto: aceptado, pero con avisos a revisar.
- Incorrecto: rechazado. No queda registrado: hay que corregir y reenviar.
- Anulada: el registro se anuló con un registro de anulación posterior.
Cuando algo falla, la respuesta trae dos datos clave: el código de error (CodigoErrorRegistro) y su descripción (DescripcionErrorRegistro). Con la API de Factuneo no parseas el SOAP: recibes el estado, el código y la descripción en el estado de la factura y por webhook.
El error más famoso: 1110
El 1110 salta cuando el NIF y el nombre o razón social del emisor no coinciden exactamente con el censo de la AEAT. Es típico al dar de alta el SIF o el primer emisor. Para resolverlo:
- Personas físicas: formato
APELLIDOS NOMBRE, en mayúsculas y sin acentos. - Revisa que el NIF (con su letra) y el titular estén correctos y dados de alta.
Familias de error y cómo atajarlas
La AEAT publica un catálogo de códigos; en la práctica caen en pocas familias:
- Censo (p. ej. 1110): NIF/nombre que no cuadran con Hacienda → revisa los datos del emisor o del representado.
- Estructura / XSD: el registro no valida contra el esquema oficial (campos, formatos, importes que no suman) → la API valida contra los XSD antes de enviar, así que los ves al crear la factura, no en la AEAT.
- Encadenado de huella: la huella no encadena con el registro anterior → no reordenes ni saltes registros; la cadena la lleva la API.
- Duplicado: mismo emisor + serie + número ya registrado → usa idempotencia.
- Certificado / representación: certificado caducado, o emisión en modo Representado sin representación vigente → renueva el certificado o declara la representación.
Reenviar tras un rechazo
VeriFactu no permite borrar. Si un registro salió Incorrecto y lo corriges, al reenviar hay que informar RechazoPrevio=S junto con Subsanacion=S para indicar que subsana un intento anterior. La API lo gestiona al reintentar una factura ya rechazada.
Dónde ves el error en Factuneo
Consulta el estado con GET /api/v1/invoices/:id, o suscríbete a un webhook y recibe el cambio a rechazado con el código y la descripción de la AEAT, sin sondear.
El catálogo completo lo publica la AEAT; Factuneo te pasa el código y la descripción exactos para que sepas qué corregir. Sigue la guía de integración o mira la documentación.