Sandbox sobre la preproducción de la AEAT · sin tarjeta · Primera factura en 5 minutos
verifactu.co

Estado · Aceptado con errores

«Aceptado con errores»: el fallo silencioso

El estado más peligroso del reglamento, porque empieza por «aceptado». No bloquea nada, no avisa a nadie y se acumula factura a factura.

¿Qué significa que la AEAT acepte un registro «con errores»?

Que Hacienda ha aceptado el registro de facturación pero ha detectado una incoherencia, habitualmente que la huella que recalcula desde el XML no coincide con la que declaraste.

La causa casi siempre es de formato: importes escritos con distinto número de decimales en la huella y en el XML, o una marca de tiempo regenerada al remitir en lugar de conservada. No bloquea la emisión, y por eso se acumula sin que nadie lo note.

Fuente: Orden HAC/1177/2024, de 17 de octubre

01 Qué significa Aceptado, pero

La AEAT devuelve EstadoEnvio con tres valores posibles: Correcto, Incorrecto y el que casi nadie mira, AceptadoConErrores. Significa que Hacienda se ha quedado el registro pero ha detectado algo que no cuadra.

Es el estado más peligroso del reglamento precisamente porque no bloquea nada. La factura sale, el cliente la recibe, el QR funciona y tu software no reporta ningún fallo. Se acumula factura a factura hasta que alguien mira — y para entonces el histórico ya está remitido.
02 La causa habitual La huella recalculada

La AEAT no se fía de tu huella: la recalcula desde tu XML.

Y ahí está la trampa. Si el formato con el que calculaste la huella no es el mismo con el que el XML escribe los importes, las dos huellas difieren. Hacienda lo nota, lo registra como error, y acepta igual.

Cómo se produce
# Tú calculas la huella sobre esto:
...&CuotaTotal=12&ImporteTotal=112&...
                        ↓ SHA-256
        huella = 7A3F…B2   ← la que declaras

# Pero el XML que remites escribe los importes así:
<sf:CuotaTotal>12.00</sf:CuotaTotal>
<sf:ImporteTotal>112.00</sf:ImporteTotal>

# La AEAT recalcula la huella DESDE EL XML:
...&CuotaTotal=12.00&ImporteTotal=112.00&...
                        ↓ SHA-256
        huella = C41D…9E   ← la que le sale a ella

# No coinciden. Y aun así: registro ACEPTADO.
# Con errores. Sin bloquear. Sin avisar a nadie.
01

Recortar los ceros decimales

«12» en la huella y 12.00 en el XML. Es la causa número uno, y la que nos costó un histórico entero. Los formatos.

02

Regenerar la marca de tiempo al remitir

FechaHoraHusoGenRegistro tiene que ser el mismo instante que entró en la huella. Si se recalcula al montar el XML, aunque sean dos segundos después, ya no cuadra.

03

Olvidar el recargo en la cuota total

CuotaTotal incluye el recargo de equivalencia. Sumar solo las cuotas de IVA da otro importe. Detalle.

04

Usar coma flotante para los importes

Un double produce valores que al formatear no siempre dan lo mismo. Decimal exacto o céntimos enteros.

03 Cómo detectarlo Antes de que se acumule
01

Trata «aceptado con errores» como una alarma, no como un éxito

Es lo contrario de lo que hace la mayoría del software: como el estado empieza por «aceptado», se pinta en verde y nadie vuelve a mirarlo.

02

Compara tu cadena con la que produce el XML

Es la comprobación que lo caza en el acto. Nosotros exponemos las dos: GET /v1/registros/{id}/cadena y /xml.

03

Contrasta contra los ejemplos oficiales antes de emitir nada real

La AEAT publica tres casos resueltos. Si tu motor reproduce los tres byte a byte, el formato es correcto. El laboratorio los calcula en tu navegador.

04

Y avisa por webhook, no por informe mensual

registro.aceptado_con_errores existe justo para esto. Los eventos.

Lo que no arregla nada: reintentar tal cual. El registro se aceptó, así que un reenvío normal crea un duplicado en vez de corregir el original. Lo primero es arreglar el formato, para que los siguientes salgan bien. Lo ya remitido se corrige con un alta marcada Subsanacion=S, que conserva la terna del original y por eso no duplica nada. Cómo se subsana un registro.
FAQ Preguntas Respuestas directas
¿Qué significa «aceptado con errores» en VeriFactu?

Que la AEAT se ha quedado el registro de facturación pero ha detectado algo que no cuadra. No bloquea la emisión ni devuelve un rechazo, así que pasa desapercibido con facilidad.

¿Por qué la AEAT dice que la huella no coincide si yo la he calculado bien?

Porque la AEAT recalcula la huella a partir del XML que le remites. Si el formato con el que la calculaste difiere del que usa el XML —típicamente los decimales de los importes o la marca de tiempo— las dos huellas no coinciden.

¿Se puede corregir un registro aceptado con errores?

Sí, pero no reenviándolo sin más: un reenvío normal crearía un duplicado. Se corrige con un alta de subsanación, marcada Subsanacion=S, que conserva el mismo NIF, número y fecha de expedición que el registro original. Lo primero, en todo caso, es arreglar el formato para que los siguientes salgan bien.

¿Es grave que un registro quede aceptado con errores?

No bloquea la facturación, pero significa que la integridad declarada del registro no es verificable por la AEAT. Y como se acumula en silencio, lo habitual es descubrir cientos o miles a la vez.

¿Cómo lo detecto antes de que se acumule?

Comparando la cadena literal que sometes a SHA-256 con la que produce tu XML, y contrastando tu motor contra los tres ejemplos resueltos que publica la AEAT antes de emitir nada real.

Última revisión normativa: Especificaciones de huella AEAT v0.1.2 Revisado por el equipo técnico de verifactu.co