Ir al contenido
Facturalo

Anular documento

Anula un comprobante electrónico. El tipo de baja se elige solo según el comprobante: facturas y sus notas van por Comunicación de Baja (RA); boletas y sus notas, por Resumen Diario (RC).

POSThttps://api.facturalo.pe/api/v3/documentos/anular
Factura y boleta responden con el mismo formato. Las diferencias de cada una están en Anular factura y Anular boleta.

Parámetros del body

Campo
Descripción
documento
objectrequerido
Datos del comprobante a anular.
tipoComprobante
stringrequerido
01 factura, 03 boleta, 07 nota de crédito, 08 nota de débito.
serie
stringrequerido
Serie del comprobante.Ej: F001
correlativo
stringrequerido
Número correlativo.Ej: 1
motivo
stringrequerido
Razón de la anulación.Ej: Error en los datos del cliente
tipoComprobanteComprobanteCómo se anula
01FacturaComunicación de Baja (RA)
03BoletaResumen Diario (RC)
07 / 08Nota de crédito / débitoSegún el comprobante que modifica: de factura → RA; de boleta → RC

Cómo leer la respuesta

data.estadosunat.procesadaQué significa
ANULADAtrueSUNAT aceptó la baja (sunat.codigo = "0"). Se envía el webhook documento.anulado.
EN_PROCESOfalseSUNAT 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}.
RECHAZADAtrueSUNAT rechazó la baja; el documento sigue vigente. El motivo está en sunat.codigo y sunat.mensaje.
NO_ENVIADAfalseNo se pudo enviar la baja a SUNAT; el documento sigue vigente. Vuelve a intentarlo.
CampoDescripción
sunat.ticketTicket que SUNAT asignó al resumen.
sunat.nombreArchivoNombre del resumen enviado (RUC-tipo-fecha-número).
sunat.hashHash del XML firmado del resumen.
sunat.procesadatrue 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 y PHP

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
    }
  }
}