Anular una factura
La anulación es un registro nuevo que entra en la misma cadena, con su propia huella y con un algoritmo distinto al del alta. Qué campos lleva, en qué se diferencia de rectificar y por qué el original nunca desaparece.
¿Cómo se anula una factura en VeriFactu?
Emitiendo un registro de anulación: un registro nuevo que se encadena detrás del último del emisor y que identifica a la factura anulada por NIF, número y fecha de expedición.
No borra ni modifica nada: el alta original sigue en la cadena, porque su huella ya entró en el registro siguiente. Y su huella se calcula con un algoritmo propio, de cinco campos, distinto del de ocho campos del alta.
Fuente: Real Decreto 1007/2023, de 5 de diciembre · Orden HAC/1177/2024, de 17 de octubre
La anulación de una factura en VeriFactu es un registro nuevo, del
tipo RegistroAnulacion, que entra en la misma cadena que el alta que deja
sin efecto. El registro original no se toca, no se marca y no desaparece.
El registro anulado sigue en la cadena
Su huella sigue siendo la que entró en el registro siguiente. Borrarlo invalidaría todo lo posterior, y por eso el sistema simplemente no lo permite. Cómo funciona la cadena.
La anulación se encadena como cualquier otro registro
Ocupa su turno detrás del último registro del emisor —sea un alta o sea otra anulación— y calcula su propia huella. El esquema incluso admite que una anulación sea el PrimerRegistro de una cadena.
Anular y rectificar responden a cosas distintas
La anulación deja sin efecto una factura que no debió emitirse. La rectificativa emite una factura nueva que corrige a la anterior. Las rectificativas R1 a R5.
Y ninguna de las dos sirve para arreglar un envío mal hecho
Si el problema es que el registro se remitió con un dato equivocado, lo que corresponde no es anular: es una subsanación.
# CINCO campos. Ni tipo de factura, ni cuota, ni importe. IDEmisorFacturaAnulada=89890001K&NumSerieFacturaAnulada=12345679/G34&FechaExpedicionFacturaAnulada=01-01-2024&Huella=F7B94CFD…&FechaHoraHusoGenRegistro=2024-01-01T19:20:40+01:00 # Frente a los OCHO del alta: # IDEmisorFactura · NumSerieFactura · FechaExpedicionFactura # TipoFactura · CuotaTotal · ImporteTotal · Huella · FechaHoraHusoGenRegistro
<sfLR:RegistroFactura> <sf:RegistroAnulacion> <sf:IDVersion>1.0</sf:IDVersion> <!-- Los tres campos llevan el sufijo «Anulada». --> <sf:IDFactura> <sf:IDEmisorFacturaAnulada>B12345678</sf:IDEmisorFacturaAnulada> <sf:NumSerieFacturaAnulada>A/2026/00412</sf:NumSerieFacturaAnulada> <sf:FechaExpedicionFacturaAnulada>14-01-2026</sf:FechaExpedicionFacturaAnulada> </sf:IDFactura> <!-- Encadena al registro anterior del emisor, sea del tipo --> <!-- que sea. La anulación NO es un caso aparte de la cadena. --> <sf:Encadenamiento> <sf:RegistroAnterior> <sf:IDEmisorFactura>B12345678</sf:IDEmisorFactura> <sf:NumSerieFactura>A/2026/00413</sf:NumSerieFactura> <sf:FechaExpedicionFactura>14-01-2026</sf:FechaExpedicionFactura> <sf:Huella>B4708D20…</sf:Huella> </sf:RegistroAnterior> </sf:Encadenamiento> <sf:FechaHoraHusoGenRegistro>2026-01-15T09:12:04+01:00</sf:FechaHoraHusoGenRegistro> <sf:TipoHuella>01</sf:TipoHuella> <sf:Huella>177547C0D57AC747…</sf:Huella> </sf:RegistroAnulacion> </sfLR:RegistroFactura>
| Campo | Obligatorio | Qué declara |
|---|---|---|
IDEmisorFacturaAnulada | Sí | NIF del obligado de la factura que se anula. |
NumSerieFacturaAnulada | Sí | Serie + número de esa factura, hasta 60 caracteres. |
FechaExpedicionFacturaAnulada | Sí | Su fecha de expedición. |
SinRegistroPrevio | No | S o N. Se anula algo de lo que no consta registro previo. |
RechazoPrevio | No | S o N. Hubo un rechazo anterior de la AEAT sobre esta anulación. |
GeneradoPor | No | E expedidor, D destinatario, T tercero. |
Generador | No | Identifica a ese generador cuando no es el propio expedidor. |
RechazoPrevio en la anulación admite solo S y N. En el alta admite además X, que es otro caso distinto: el del registro que nunca llegó a la AEAT. El caso X./v1/registros/{id}/anulacionEncadena el registro de anulaciónNo necesitas mandarnos la huella
La calculamos con los cinco campos de la anulación y con la huella del último registro de ese emisor, que es un estado que vive en el motor.
Entra en la misma cola serializada
Por emisor. Una anulación no adelanta a las altas pendientes: si lo hiciera, bifurcaría la cadena igual que cualquier otra escritura concurrente.
Y avisamos por webhook
El evento registro.anulado se dispara cuando la AEAT acepta la anulación. Los webhooks.
¿Se puede anular una factura en VeriFactu?
Sí, emitiendo un registro de anulación. Es un registro nuevo que entra en la misma cadena que el alta que deja sin efecto y que tiene su propia huella. El registro original no se borra ni se modifica.
¿Qué diferencia hay entre anular y rectificar una factura?
La anulación deja sin efecto una factura que no debió emitirse. La rectificativa emite una factura nueva que corrige a la anterior, con un tipo R1 a R5. Ninguna de las dos elimina el registro original.
¿La huella de una anulación se calcula igual que la de un alta?
No. La anulación encadena cinco campos —los tres identificadores con sufijo «Anulada», la huella anterior y la marca de tiempo— frente a los ocho del alta, y no incluye ni el tipo de factura ni los importes.
¿Qué es el campo SinRegistroPrevio?
Es la marca S o N con la que la anulación declara que no consta un registro previo de la factura que se anula. Es un campo opcional del registro de anulación.
¿Puede anular una factura alguien que no sea el emisor?
El esquema contempla el campo GeneradoPor con tres valores: E para el expedidor obligado, D para el destinatario y T para un tercero, junto al bloque Generador que lo identifica.
¿Una anulación puede ser el primer registro de una cadena?
Sí. El bloque de encadenamiento del registro de anulación admite tanto PrimerRegistro como RegistroAnterior, igual que el de un alta.
Última revisión normativa: Especificaciones de huella AEAT v0.1.2 Revisado por el equipo técnico de verifactu.co