Ir al contenido
Facturalo

Anular Boleta

Anula una boleta electrónica, o una nota de crédito o débito de boleta, mediante un Resumen Diario (RC) con estado de baja. Facturalo envía el resumen a SUNAT en la misma petición y consulta su ticket de inmediato.

POSThttps://api.facturalo.pe/api/v3/documentos/anular
La respuesta es síncrona. Si SUNAT todavía no terminó de procesar el ticket, recibes estado: EN_PROCESO; confirma el resultado final con GET /documentos/{id}.

Parámetros del body

Campo
Descripción
documento
objectrequerido
Datos del comprobante a anular.
tipoComprobante
stringrequerido
03 para boleta, o 07 / 08 para una nota de crédito o débito de boleta.
serie
stringrequerido
Serie de la boleta.Ej: B001
correlativo
stringrequerido
Número correlativo (máximo 8 dígitos).Ej: 1
motivo
stringrequerido
Razón de la anulación.Ej: Error en los datos del cliente

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, 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: "03",
  serie: "B001",
  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": "El Resumen diario RC-20261030-1, ha sido aceptado",
  "data": {
    "estado": "ANULADA",
    "documento": {
      "id": "83ad82a0-680e-11f1-8e35-2d93ac0f2c84",
      "tipo": "BOLETA",
      "serie": "B001",
      "correlativo": "00000001"
    },
    "sunat": {
      "codigo": "0",
      "mensaje": "El Resumen diario RC-20261030-1, ha sido aceptado",
      "notas": [],
      "ticket": "1781234567890",
      "hash": "kq1tB7d0n3Wf0yV2oQe9cM4sXaY=",
      "nombreArchivo": "20601476551-RC-20261030-1",
      "procesada": true
    }
  }
}