Ir al contenido
Facturalo

Boleta cobrada en caja

La emisión de siempre con dos campos más: `caja` (id de la caja) y `pagos`. Este ejemplo cobra una boleta con pago mixto: S/ 10 por Yape y el resto en efectivo, con vuelto.

POSThttps://api.facturalo.pe/api/v3/documentos/enviar

Parámetros del body

Campo
Descripción
caja
stringopcional
Id de la caja (GET /cajas). Debe tener turno abierto, salvo nivel sin_turnos.
pagos[].medio
stringopcional
Id del medio de pago o su nombre ("efectivo", "Yape").
pagos[].monto
numberopcional
Monto cobrado con ese medio. La suma debería ser el total del comprobante.
pagos[].recibido
numberopcional
Solo efectivo: lo que entregó el cliente (calcula el vuelto).
notaVenta
stringopcional
Id de la nota de venta que este comprobante reemplaza: no vuelve a mover stock ni a cobrarse.

Language

Credentials

Header

Authorization

Ejemplos con el SDK oficial en Node, PHP y Python

Idempotencia

Header

Idempotency-Key

Misma clave + mismo cuerpo = misma respuesta (24 h). Ver /idempotencia.

API Request
$ npm install @facturalo-pe/node
import { FacturaloClient } from "@facturalo-pe/node";

const facturalo = new FacturaloClient({ token: process.env.FACTURALO_TOKEN! });

const envio = await facturalo.documentos.enviar({
  sunatTransaccion: "0101",
  tipoComprobante: "03",
  serie: "B001",
  correlativo: "152",
  fechaEmision: "2026-11-10",
  moneda: "PEN",
  formaPago: "CONTADO",
  cliente: {
    tipoDocumento: "0",
    numeroDocumento: "00000000",
    denominacion: "CLIENTES VARIOS"
  },
  items: [
    {
      productoId: "POLO-AZ-M",
      cantidad: 1,
      precioUnitario: 18.5,
      tipoIgv: "10"
    }
  ]
}, {
  idempotencyKey: "orden-1042"
});
console.log(envio.estado, envio.sunat?.mensaje, envio.enlaces.pdf);
SDK oficial @facturalo-pe/node · guía en /sdks
Response

Elige un ejemplo de respuesta:

application/json
200OK
{
  "success": true,
  "data": {
    "estado": "ACEPTADA",
    "documento": {
      "serie": "B001",
      "correlativo": "152"
    }
  }
}