/ Comprobantes
Boletas
Emite boletas de venta electrónicas (tipo 03) para consumidores finales, con o sin DNI.
Crear boleta
POST/boletas
Funciona igual que la factura, con tres diferencias: la serie empieza con B, el cliente puede ser una persona con DNI o «sin documento», y las boletas suelen enviarse a SUNAT mediante un resumen diario.
Tipos de documento del cliente
| tipo_doc | Documento |
|---|---|
| 0 | Sin documento (ventas menores, usa num_doc: "-") |
| 1 | DNI (8 dígitos) |
| 4 | Carnet de extranjería |
| 6 | RUC (11 dígitos) |
| 7 | Pasaporte |
Los campos de la raíz y de los ítems son los mismos que en facturas.
curl -X POST "https://apifact.gavi-cloud.com/api/v1/boletas" \
-H "X-Api-Key: TU_API_KEY" \
-H "X-Api-Secret: TU_API_SECRET" \
-H "Content-Type: application/json" \
-d '{
"serie": "B001",
"fecha_emision": "2026-10-02",
"cliente": {
"tipo_doc": "1",
"num_doc": "12345678",
"razon_social": "JUAN PEREZ LOPEZ"
},
"items": [
{
"descripcion": "PRODUCTO A",
"unidad": "NIU",
"cantidad": 1,
"precio_unitario": 50
}
],
"pagos": [
{
"metodo": "efectivo",
"monto": 50
}
]
}'{
"estado": "exito",
"mensaje": "Boleta creada.",
"datos": {
"id": 88,
"tipo_documento": "03",
"numero_completo": "B001-88",
"mto_imp_venta": "50.00",
"sunat_status": "pendiente"
}
}Venta sin identificar al cliente
Para ventas menores no necesitas datos del cliente. Usa tipo_doc: "0" y razon_social: "CLIENTES VARIOS".
{
"cliente": {
"tipo_doc": "0",
"num_doc": "-",
"razon_social": "CLIENTES VARIOS"
}
}Listar boletas
GET/boletas
Devuelve los comprobantes de tu empresa, paginados y filtrables.
Parámetros de consulta
searchstring- Búsqueda libre: razón social, documento, serie o correlativo.
seriestring- Serie exacta (
F001) o con comodín (F0%). client_num_docstring- RUC o DNI exacto del cliente.
sunat_statusstringpendiente,enviado,aceptado,rechazadooanulado. Acepta varios separados por coma.fecha_desdedate- Fecha de emisión mínima (
yyyy-mm-dd). fecha_hastadate- Fecha de emisión máxima.
monto_minnumber- Total mínimo.
monto_maxnumber- Total máximo.
sucursal_idinteger- Filtra por sucursal.
constring- Relaciones a incluir:
items,payments. ordenar_porstringfecha_emision,correlativo,mto_imp_venta,created_at(por defecto).ordenstringdesc(por defecto) oasc.por_paginainteger- Por defecto 15, máximo 100.
curl "https://apifact.gavi-cloud.com/api/v1/boletas?sunat_status=aceptado&fecha_desde=2026-10-01&fecha_hasta=2026-10-31" \
-H "X-Api-Key: TU_API_KEY" \
-H "X-Api-Secret: TU_API_SECRET"{
"estado": "exito",
"datos": {
"datos": [
"..."
],
"paginacion": {
"pagina_actual": 1,
"ultima_pagina": 8,
"por_pagina": 15,
"total": 112
}
}
}Ver boleta
GET/boletas/{id}
Devuelve el comprobante con sus ítems, pagos, estado SUNAT y, si ya fue rechazado, el código y descripción del error.
curl "https://apifact.gavi-cloud.com/api/v1/boletas/123" \
-H "X-Api-Key: TU_API_KEY" \
-H "X-Api-Secret: TU_API_SECRET"Eliminar boleta
DELETE/boletas/{id}
Borra localmente una boleta que todavía no fue enviada a SUNAT. Una boleta ya aceptada se anula con un resumen diario en modo anulación.
curl -X DELETE "https://apifact.gavi-cloud.com/api/v1/boletas/88" \
-H "X-Api-Key: TU_API_KEY" \
-H "X-Api-Secret: TU_API_SECRET"XML, CDR y PDF
Con el id de la boleta descargas cada archivo. El PDF admite formato A4, A5 o ticket. El CDR está disponible cuando SUNAT aceptó el comprobante.
| Método | Ruta | Devuelve |
|---|---|---|
| GET | /boletas/{id}/xml | XML firmado |
| GET | /boletas/{id}/cdr | CDR de SUNAT |
| GET | /boletas/{id}/pdf | Representación impresa |
| POST | /boletas/{id}/reenviar | Reenvía a SUNAT un comprobante pendiente o rechazado |
curl "https://apifact.gavi-cloud.com/api/v1/boletas/123/pdf" \
-H "X-Api-Key: TU_API_KEY" \
-H "X-Api-Secret: TU_API_SECRET"