Anular o rectificar
Cuatro operaciones parecen «deshacer una factura» y solo una es correcta en cada caso — eliminar, cancelar, anular y rectificar. Si eliges mal, pierdes un documento fiscal o presentas una declaración que no pretendías.
Una factura emitida no se puede editar. Todo lo que parece editarla es en realidad una de cuatro operaciones distintas, cada una con sus condiciones previas y su propia consecuencia ante la Administración tributaria. Esta página es la tabla de decisión, y el motivo de cada rama.
Cuándo aplica
Siempre que algo esté mal en una factura y necesites deshacerlo. El estado actual de la factura acota las operaciones legales; cuando hay más de una legal, decide tu intención. La gravedad del error nunca entra en juego.
| Estado de la factura | ¿Número asignado? | Operación | Consecuencia |
|---|---|---|---|
draft, y no hay nada que merezca conservarse | No | Eliminar — DELETE /v1/invoices/{id} | El registro desaparece. Nunca fue fiscal. |
draft, pero quieres dejar constancia del intento | No | Cancelar — cambiar el estado a cancelled | El borrador se retira pero se conserva. |
sent, overdue — la factura nunca debió emitirse | Sí | Anular — POST /v1/invoices/{id}/annul | La factura deja de ser cobrable y se declara una anulación a la AEAT. |
sent, paid — la factura debía existir, su contenido está mal | Sí | Rectificar — POST /v1/invoices/{id}/corrective | Un documento fiscal nuevo que referencia al original. |
sent, pero solo estaba mal la marca de entrega | Sí | Deshacer la entrega — POST /v1/invoices/{id}/unsend | Se limpia la marca de entrega. La factura sigue emitida. |
Tres reglas hacen inequívoca la tabla:
Una factura numerada nunca se elimina físicamente. Eliminar exige estado
draft (o un cancelled que venga de un borrador) y un número que siga
siendo el provisional del borrador. Toda factura que consumió un número de su
serie queda protegida por el soft-delete fiscal; la vía para retirarla es la
anulación (BR-INV-002, art. 29.4 de la Ley General Tributaria
sobre el deber de conservar los documentos con trascendencia tributaria).
Una factura pagada está cerrada. paid es terminal: su IVA repercutido se ha
declarado o se declarará en el periodo y el cobro está identificado, de modo que
anularla rompería la trazabilidad y distorsionaría las declaraciones de IVA. El
camino canónico es una rectificativa (BR-INV-023).
En sent las dos son legales — así que pregúntate qué falló. Una
rectificativa se admite sobre sent o paid (BR-INV-001) y
una anulación sobre sent u overdue (BR-INV-003): sent es
el único estado en el que la API acepta cualquiera de las dos. El estado no
puede decidir por ti; la pregunta sí:
- La factura nunca debió existir — se canceló el pedido, fue al cliente equivocado, duplica a otra → anular.
- La factura debía emitirse pero su contenido está mal — importe erróneo, tipo de IVA incorrecto, datos del destinatario mal, una devolución parcial → rectificativa.
Si anulas por un simple error de importe, declaras una ANULACION a la AEAT y
quemas el número para nada; la rectificativa era el camino limpio y sigue
disponible en sent.
Cancelar no es anular
Son actos distintos, y el dominio los mantiene separados a propósito.
Cancelar retira un borrador — un documento que todavía no obliga
fiscalmente. Solo está disponible desde draft, y cancelled es terminal: un
borrador cancelado no se puede revivir, se crea uno nuevo
(BR-INV-012).
Anular retira una factura emitida. Solo está disponible desde sent u
overdue. No es una eliminación: la factura permanece en el libro registro, en
estado annulled, y si la empresa está adherida a VeriFactu la anulación se
declara a su vez.
Intentar cancelar una factura emitida, o anular un borrador, responde 422 con
un error de transición inválida. Ese código es deliberado: se trata de una
violación de regla de negocio, no de un problema de permisos.
Las rectificativas no se anulan
Una factura rectificativa no se anula nunca. Si la propia rectificativa está mal,
emites una nueva rectificativa de la factura original
(BR-INV-003). Intentarlo responde 422.
El razonamiento es que todo el sentido de una rectificativa es «este documento modifica aquel». Anular la modificación dejaría el original en un estado ambiguo ante la Administración tributaria, donde ambos documentos ya están registrados.
unsend deshace una marca de entrega, no una emisión
unsend existe para un error concreto: marcar como entregada una factura que no
lo estaba. Limpia la marca de entrega y mantiene el estado en sent. El
número de serie, el alta en la AEAT y los snapshots congelados quedan intactos,
porque una factura emitida es inmutable (BR-INV-030,
RD 1007/2023).
Dos propiedades importan para las integraciones:
- Es idempotente. Volver a llamarla cuando la marca ya está limpia es un
no-op controlado, nunca un
500. - Está estrictamente acotada a
sent. Sobre una facturapaid,annulled,cancelledo programada responde422— nunca403.
La matriz de transiciones de estado no contiene ningún camino de vuelta de sent
a draft por ninguna ruta, incluido el endpoint genérico de cambio de estado. No
existe la «desemisión».
Qué envía la API
Comprueba primero.
GET /v1/invoices/{id}/can-annul
(scope invoices:read) te da la respuesta antes de comprometerte, incluido si la
anulación producirá un registro VeriFactu adicional:
curl https://api.factuarea.com/v1/invoices/0197a2a8-4cf0-7a31-9a5e-3f2b8c1d6e42/can-annul \
-H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW"{
"data": {
"can_annul": false,
"reasons": ["La factura está pagada."],
"will_create_verifactu": false,
"info": []
}
}Después anula.
POST /v1/invoices/{id}/annul
(scope invoices:void) deja constancia del motivo:
curl -X POST https://api.factuarea.com/v1/invoices/0197a2a8-4cf0-7a31-9a5e-3f2b8c1d6e42/annul \
-H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW" \
-H "Content-Type: application/json" \
-d '{"reason": "El cliente cancela el pedido tras la emisión"}'POST /v1/invoices/{id}/void llega a la misma operación de dominio bajo el
nombre externo que el contrato de la API usa para el estado (voided). Prefiere
annul cuando quieras dejar constancia del motivo; una segunda llamada sobre
una factura ya anulada responde 422 en cualquiera de los dos casos.
Para el camino de la rectificativa —payload, códigos de rectificación, herencia de líneas— ver Facturas rectificativas.
Qué sale en el PDF
La anulación no reescribe el documento original. La factura conserva su número, sus datos congelados de destinatario y emisor y su bloque QR; lo que cambia es su estado en el libro registro y el hecho de que ahora existe una segunda declaración ante la AEAT.
Eliminar un borrador retira el documento por completo — pero un borrador nunca tuvo número definitivo, ni snapshot congelado, ni QR, que es exactamente por lo que eliminar es seguro ahí y en ningún otro sitio.
unsend no cambia nada del documento impreso. Solo limpia una marca de entrega;
la factura no vuelve a ser editable (BR-INV-030).
Qué llega a la AEAT
La anulación de una factura de una empresa adherida a VeriFactu produce un
segundo registro de facturación de clase ANULACION, encadenado al último
registro de la empresa y referido al alta original
(BR-VFC-014). Se crea de forma asíncrona, después de que la
transacción confirme, así que la factura llega a annulled en tu base de datos
antes de que se transmita la declaración. Consulta el registro si necesitas
confirmar que la AEAT la aceptó — ver
Estados de envío VeriFactu.
Hay un matiz con consecuencias reales. Si el alta original nunca se aceptó
—está rechazada, con error, o todavía pendiente—, la anulación debe declarar
explícitamente que no existe registro previo en la AEAT. El sistema deriva esa
marca del estado del alta en el momento en que se crea la anulación y la persiste
como snapshot, de modo que un cambio posterior del estado del original no
desincroniza el XML ya transmitido. Sin esa marca, la AEAT rechaza la anulación
de plano con «el registro de facturación no existe»
(BR-VFC-026).
Cancelar y eliminar un borrador no llegan a la AEAT de ninguna manera: un borrador nunca se declaró.
Las rectificativas son documentos fiscales ordinarios y producen su propia alta, exactamente igual que cualquier otra factura.
Si la empresa no está adherida a VeriFactu, la anulación funciona igualmente y simplemente no produce declaración.
Trazabilidad
Derivado de las reglas de dominio del backend de Factuarea:
BR-INV-001— una rectificativa exige un original ensentopaid; ese solape con la anulación ensentes la razón de que ahí decida la intención y no el estado.BR-INV-002— soft-delete fiscal: una factura numerada nunca se elimina físicamente.BR-INV-003— la anulación se limita a facturas emitidas; las rectificativas no se anulan nunca.BR-INV-012— la cancelación se limita a borradores y es terminal.BR-INV-023—paides un estado cerrado; se corrige con una rectificativa, nunca con una anulación.BR-INV-030—unsendlimpia la marca de entrega, mantiene la factura emitida, es idempotente y responde422en lugar de403.BR-VFC-014— la clase de registro de anulación y la cadena a la que pertenece.BR-VFC-026— la marca de «sin registro previo» en la anulación de un alta que nunca se aceptó.
Derivado también de la máquina de estados de factura documentada junto a esas reglas, que es la fuente de verdad de las transiciones citadas en Cuándo aplica.