Ir al contenido

Anular un comprobante

Anular es pedir a SUNAT que deje sin efecto un comprobante que ya aceptó. Es una sola llamada para cualquier tipo; Emitay elige el mecanismo que SUNAT exige para cada uno.

Ventana de terminal
curl https://api.emitay.com/v1/documents/doc_…/void \
-H "Authorization: Bearer $EMITAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reason": "Error en el RUC del cliente"
}'

reason es el motivo que se informa a SUNAT, de 3 a 100 caracteres.

La respuesta es el comprobante, con su status sin cambiar y la anulación en curso:

{
"id": "doc_…",
"status": "accepted",
"void": {
"status": "pending",
"reason": "Error en el RUC del cliente",
"requested_at": "2026-10-08T22:41:07.000Z",
"sunat": null
}
}

SUNAT responde después, y llega como evento:

Evento Cómo queda el comprobante
document.voided status: "voided" y void.status: "accepted"
document.void_failed Como estaba, con void.status: "rejected" y el código y mensaje de SUNAT en void.sunat

Una anulación que SUNAT rechazó se puede volver a pedir.

No cambia tu código, pero explica los tiempos: una baja o un resumen los procesa SUNAT por lotes y pueden tardar más que una emisión.

Comprobante Mecanismo de SUNAT
Factura y sus notas Comunicación de baja
Boleta y sus notas Resumen diario
Retención y percepción Resumen de reversión
Guía de remisión No se anula por la API (ver abajo)

Toda negativa es un 409 conflict con el motivo en detail:

  • Solo un comprobante aceptado (accepted u observed). Uno pending aún no tiene respuesta, uno rejected no tiene nada que anular y uno voided ya lo está.
  • Dentro del plazo. Facturas, boletas y sus notas, hasta el sétimo día calendario posterior a su fecha de emisión. Pasado ese día, corresponde una nota de crédito, y el mensaje lo dice.
  • Sin otra anulación en curso para ese comprobante.

SUNAT no ofrece un servicio para anular guías: la baja se registra en SUNAT Operaciones en Línea, antes de iniciar el traslado o, ya iniciado, si cambia el destinatario. La API responde 409 y lo explica. La guía corregida es una guía nueva, con otro número.

La anulación acepta Idempotency-Key: repetir la llamada con la misma llave devuelve el comprobante como está ahora, en lugar de un 409 por «anulación en curso». El SDK pone una por su cuenta.