Anular Factura
Anula una factura electrónica, o una nota de crédito o débito de factura, mediante una Comunicación de Baja (RA). Facturalo envía la comunicación a SUNAT en la misma petición y consulta su ticket de inmediato.
POSThttps://api.facturalo.pe/api/v3/documentos/anular
SUNAT acepta la comunicación de baja hasta 7 días calendario después de la fecha de emisión. Pasado ese plazo, emite una nota de crédito.
Parámetros del body
Campo
Descripción
documentoobjectrequerido
Datos del comprobante a anular.
tipoComprobantestringrequerido
01 para factura, o 07 / 08 para una nota de crédito o débito de factura.seriestringrequerido
Serie de la factura.Ej:
F001correlativostringrequerido
Número correlativo (máximo 8 dígitos).Ej:
1motivostringrequerido
Razón de la anulación.Ej:
Error en los datos del clienteCómo leer la respuesta
| data.estado | sunat.procesada | Qué significa |
|---|---|---|
ANULADA | true | SUNAT aceptó la baja (sunat.codigo = "0"). Se envía el webhook documento.anulado. |
EN_PROCESO | false | SUNAT recibió la baja pero aún no terminó de procesar el ticket (sunat.codigo = null). El documento ya figura como anulado en Facturalo; confirma el resultado con GET /documentos/{id}. |
RECHAZADA | true | SUNAT rechazó la baja; el documento sigue vigente. El motivo está en sunat.codigo y sunat.mensaje. |
NO_ENVIADA | false | No se pudo enviar la baja a SUNAT; el documento sigue vigente. Vuelve a intentarlo. |
| Campo | Descripción |
|---|---|
sunat.ticket | Ticket que SUNAT asignó al resumen. |
sunat.nombreArchivo | Nombre del resumen enviado (RUC-tipo-fecha-número). |
sunat.hash | Hash del XML firmado del resumen. |
sunat.procesada | true cuando SUNAT ya devolvió el resultado final del ticket. |
Cuando SUNAT recibe la baja (ANULADA o EN_PROCESO), el documento queda anulado en Facturalo, GET /documentos/{id} lo devuelve con el bloque anulacion y se envía el evento documento.anulado a los webhooks suscritos.
Language
Credentials
Header
Authorization
Ejemplos con el SDK oficial en Node, PHP y Python
API Request
$ npm install @facturalo-pe/node
import { FacturaloClient } from "@facturalo-pe/node";
const facturalo = new FacturaloClient({ token: process.env.FACTURALO_TOKEN! });
const result = await facturalo.documentos.anular({
tipoComprobante: "01",
serie: "F001",
correlativo: "1",
motivo: "Error en los datos del cliente"
});
console.log(result.estado, result.sunat.ticket);SDK oficial @facturalo-pe/node · guía en /sdks
Response
Elige un ejemplo de respuesta:
application/json
200Anulada
{
"success": true,
"message": "La Comunicacion de baja RA-20261030-1, ha sido aceptada",
"data": {
"estado": "ANULADA",
"documento": {
"id": "83ad82a0-680e-11f1-8e35-2d93ac0f2c84",
"tipo": "FACTURA",
"serie": "F001",
"correlativo": "00000001"
},
"sunat": {
"codigo": "0",
"mensaje": "La Comunicacion de baja RA-20261030-1, ha sido aceptada",
"notas": [],
"ticket": "1781234567890",
"hash": "kq1tB7d0n3Wf0yV2oQe9cM4sXaY=",
"nombreArchivo": "20601476551-RA-20261030-1",
"procesada": true
}
}
}