«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.
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.
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.
# 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.
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.
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.
Olvidar el recargo en la cuota total
CuotaTotal incluye el recargo de equivalencia. Sumar solo las cuotas de IVA da otro importe. Detalle.
Usar coma flotante para los importes
Un double produce valores que al formatear no siempre dan lo mismo. Decimal exacto o céntimos enteros.
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.
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.
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.
Y avisa por webhook, no por informe mensual
registro.aceptado_con_errores existe justo para esto. Los eventos.
Subsanacion=S, que conserva la terna del original y por eso no duplica nada. Cómo se subsana un registro.¿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