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
cajastringopcional
Id de la caja (
GET /cajas). Debe tener turno abierto, salvo nivel sin_turnos.pagos[].mediostringopcional
Id del medio de pago o su nombre ("efectivo", "Yape").
pagos[].montonumberopcional
Monto cobrado con ese medio. La suma debería ser el total del comprobante.
pagos[].recibidonumberopcional
Solo efectivo: lo que entregó el cliente (calcula el vuelto).
notaVentastringopcional
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"
}
}
}