API v3
Facturalo API
API REST para emisión de comprobantes electrónicos ante SUNAT (Perú). Soporta Facturas, Boletas, Notas de Crédito/Débito y Guías de Remisión. Los cálculos de IGV, subtotales y totales son automáticos — solo envía el precioUnitario y el tipoIgv.
Emitir factura
POST /documentos/enviarEmitir boleta
POST /documentos/enviarEmitir guía
POST /guias/enviarSIRE — Ventas
Registro de Ventas e Ingresos (RVIE)
SIRE — Compras
Registro de Compras Electrónico (RCE)
Autenticación
Hay dos tipos de token, ambos se envían en el header Authorization. El entorno (demo / producción) se detecta automáticamente del prefijo del token.
user_sk_...Token de usuario
Crear y gestionar empresas y establecimientos.
sk_test_...Token de empresa — Demo
Emitir documentos en entorno de pruebas SUNAT.
sk_live_...Token de empresa — Producción
Emitir documentos en producción SUNAT.
Headers de autenticaciónhttp
// Token de empresa — documentos y guías
Authorization: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Token de usuario — gestión de empresas y establecimientos
Authorization: user_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxEjemplo rápido
cURL — Factura normalbash
curl -X POST https://api.facturalo.pe/api/v3/documentos/enviar \
-H "Authorization: sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"webhook": false,
"documento": {
"sunatTransaccion": "0101",
"tipoComprobante": "01",
"serie": "F001",
"correlativo": "1",
"fechaEmision": "2026-06-13",
"moneda": "PEN",
"formaPago": "CONTADO",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20000000001",
"denominacion": "EMPRESA S.A.C.",
"direccion": "AV. LIMA 123 - LIMA - LIMA - LIMA"
},
"items": [{
"unidadMedida": "NIU",
"descripcion": "SERVICIO DE CONSULTORÍA",
"cantidad": 1,
"precioUnitario": 590,
"tipoIgv": "10"
}]
}
}'Respuesta — 200 OKjson
{
"success": true,
"message": "La Factura número F001-00000001, ha sido aceptada.",
"data": {
"estado": "ACEPTADA",
"entorno": "demo",
"documento": {
"id": "83ad82a0-680e-11f1-8e35-2d93ac0f2c84",
"estado": "ACEPTADA",
"serie": "F001",
"correlativo": "1",
"tipo": "FACTURA",
"tipoCodigo": "01",
"fechaEmision": "2026-06-13",
"fechaVencimiento": "2026-06-14",
"moneda": "PEN",
"formaPago": "CONTADO",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20000000001",
"denominacion": "EMPRESA S.A.C.",
"direccion": "AV. LIMA 123 - LIMA - LIMA - LIMA"
},
"totales": {
"gravada": 4000,
"exonerada": 0,
"inafecta": 0,
"exportacion": 0,
"gratuita": 0,
"descuento": 0,
"anticipo": 0,
"isc": 0,
"igv": 720,
"impuestoBolsa": 0,
"otrosCargos": 0,
"total": 4720
},
"items": [
{
"codigo": "",
"descripcion": "SERVICIO DE CONSULTORÍA",
"unidad": "NIU",
"cantidad": 2,
"valorUnitario": 500,
"precioUnitario": 590,
"descuento": 0,
"subtotal": 1000,
"tipoIgv": "10",
"tipoIgvDescripcion": "GRAVADO - OPERACIÓN ONEROSA",
"igv": 180,
"total": 1180
},
{
"codigo": "",
"descripcion": "LAPTOP DELL INSPIRON",
"unidad": "NIU",
"cantidad": 1,
"valorUnitario": 3000,
"precioUnitario": 3540,
"descuento": 0,
"subtotal": 3000,
"tipoIgv": "10",
"tipoIgvDescripcion": "GRAVADO - OPERACIÓN ONEROSA",
"igv": 540,
"total": 3540
}
],
"guias": [],
"cuotas": []
},
"sunat": {
"estado": "ACEPTADA",
"codigo": "0",
"mensaje": "La Factura numero F001-00000001 ha sido aceptada",
"notas": []
},
"enlaces": {
"pdf": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-680e-11f1-8e35-2d93ac0f2c84.pdf",
"pdfTicket": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-680e-11f1-8e35-2d93ac0f2c84.ticket.pdf",
"xml": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-680e-11f1-8e35-2d93ac0f2c84.xml",
"cdr": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-680e-11f1-8e35-2d93ac0f2c84.cdr"
},
"hash": "xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"cadenaQr": "20601476551 | 01 | F001 | 00000001 | 13/06/2026 | 20609753413 | 4720.00 | xvQpVbLssRc8FlD8/0LuSYeIPo8= |",
"codigoBarras": "20601476551 | 01 | F001 | 00000001 | 13/06/2026 | 20609753413 | 4720.00 | xvQpVbLssRc8FlD8/0LuSYeIPo8= |"
}
}Características clave
Cálculos automáticosSolo envía precioUnitario y tipoIgv por ítem. La API calcula IGV, subtotales y totales automáticamente.
Entorno por tokenEl entorno (demo / producción) se detecta del token. sk_test_ = demo, sk_live_ = producción. No existe parámetro de entorno.
Síncrono o asíncronoCon "webhook": false (default) la respuesta incluye el resultado SUNAT. Con "webhook": true retorna EN_PROCESO y el resultado llega al webhook.
Archivos públicosLos endpoints /{id}.pdf, /{id}.xml y /{id}.cdr no requieren autenticación — son links compartibles directamente con el cliente.
Respuesta estructuradaTodas las respuestas exitosas siguen el mismo esquema: success, message, data. Dentro de data: estado, entorno, documento, sunat.notas, enlaces.
Códigos de respuesta HTTP
200OKPetición exitosa
201CreatedRecurso creado (empresa, establecimiento)
400Bad RequestCuerpo de la petición mal formado o JSON inválido
401UnauthorizedToken inválido o ausente
403ForbiddenEl token no tiene permisos para este recurso
404Not FoundRecurso no encontrado
422Unprocessable EntityErrores de validación — revisa el campo errors
429Too Many RequestsLímite de peticiones alcanzado — reintenta más tarde
500Internal Server ErrorError interno del servidor