API REST v3 · JSON
API de facturación electrónica SUNAT, en JSON
Integra la emisión de comprobantes en tu ERP, POS, e-commerce o SaaS. Envías JSON; Facturalo se encarga del XML UBL 2.1, la firma digital, SUNAT y el CDR.
curl -X POST https://api.facturalo.pe/api/v3/documentos/enviar \
-H "Authorization: sk_test_••••••••" \
-H "Content-Type: application/json" \
-d '{
"documento": {
"sunatTransaccion": "0101",
"tipoComprobante": "01",
"serie": "F001",
"correlativo": "1",
"fechaEmision": "2026-10-30",
"moneda": "PEN",
"formaPago": "CONTADO",
"cliente": {
"tipoDocumento": "6",
"numeroDocumento": "20100070970",
"denominacion": "EMPRESA CLIENTE S.A.C.",
"direccion": "AV. LIMA 123 - LIMA"
},
"items": [{
"unidadMedida": "NIU",
"descripcion": "Servicio de consultoría",
"cantidad": 1,
"precioUnitario": 118,
"tipoIgv": "10"
}]
}
}'Por qué Facturalo
La capa SUNAT, resuelta
XML UBL 2.1, certificados, web services SOAP y CDR quedan de nuestro lado. Tú trabajas con REST y JSON.
JSON de entrada y salida
Un endpoint para enviar comprobantes y respuestas JSON con el estado, el código de SUNAT y los enlaces a PDF, XML y CDR.
Respuesta en segundos
Facturas y notas se envían en línea: el estado ACEPTADA o RECHAZADA llega en la misma respuesta.
Demo y producción, misma URL
sk_test_ = demo (facturas a SUNAT Beta; guías en el simulador GRE de Facturalo, con validación XSD/XSL real). sk_live_ = producción. El entorno se detecta del token; no cambias la URL.
Webhooks firmados
Recibe eventos cuando SUNAT procesa un documento, una baja o una guía. Firma HMAC-SHA256 y hasta 5 reintentos automáticos si tu servidor no responde.
Multiempresa
Crea empresas emisoras por API con tu token de usuario. Cada una tiene sus propios tokens, series y establecimientos.
SDKs PHP y Node.js
npm i @facturalo-pe/node o composer require facturalo-pe/facturalo-php, con verificación de webhooks incluida. Con otro lenguaje, la API funciona con cualquier cliente HTTP.
Referencia
Endpoints principales
La referencia completa, con todos los campos y errores, está en docs.facturalo.pe.
Cuenta y empresas
Integración
- Webhooks
- Idempotencia
- Guías de remisión
- SIRE
- Consultas RUC y DNI
- Plugin WooCommerce (gratis)
- Estado del servicio
- llms.txt para agentes IA
Así se ve
Respuesta y webhook
La respuesta trae el estado de SUNAT y los enlaces. Si configuras un webhook, también te avisamos en tu servidor.
{
"success": true,
"message": "La Factura numero F001-00000001 ha sido aceptada",
"data": {
"estado": "ACEPTADA",
"entorno": "demo",
"documento": {
"id": "83ad82a0-680e-11f1-8e35-2d93ac0f2c84",
"estado": "ACEPTADA",
"serie": "F001",
"correlativo": "00000001",
"tipo": "FACTURA"
},
"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-….pdf",
"pdfTicket": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-….ticket.pdf",
"xml": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-….xml",
"cdr": "https://api.facturalo.pe/api/v3/documentos/83ad82a0-….cdr"
},
"hash": "xvQpVbLssRc8FlD8/0LuSYeIPo8=",
"cadenaQr": "20601476551 | 01 | F001 | 00000001 | 18.00 | 118.00 | 30/10/2026 | 6 | 20100070970 | xvQp… |"
}
}POST https://tu-servidor.pe/webhooks/facturalo
X-Facturalo-Firma: •••••••• (HMAC-SHA256 del body)
{
"id": "0d9f6c2e-6a1b-4f43-9a7e-3c5b8d2e1f00",
"evento": "documento.sunat.respuesta",
"timestamp": "2026-10-30T10:30:00-05:00",
"entorno": "demo",
"documento": {
"id": "83ad82a0-680e-11f1-8e35-2d93ac0f2c84",
"estado": "ACEPTADA",
"serie": "F001",
"correlativo": "00000001",
"tipo": "FACTURA"
},
"sunat": { "estado": "ACEPTADA", "codigo": "0", "mensaje": "…", "notas": [] },
"enlaces": { "pdf": "…", "pdfTicket": "…", "xml": "…", "cdr": "…" }
}SDKs oficiales
Node.js y PHP, listos para instalar
Los mismos métodos en los dos lenguajes: enviar, consultar, anular, guías, consultas y verificación de webhooks. Código abierto con licencia MIT.
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(documento);
if (envio.estado === "ACEPTADA") {
console.log(envio.enlaces.pdf);
}composer require facturalo-pe/facturalo-php
use Facturalo\FacturaloClient;
$facturalo = new FacturaloClient(getenv('FACTURALO_TOKEN'));
$envio = $facturalo->documentos->enviar($documento);
if ($envio['estado'] === 'ACEPTADA') {
echo $envio['enlaces']['pdf'];
}Packagist · GitHub · PHP 8.1 o superior, funciona con Laravel.
Tu primera factura por API en cuatro pasos
- 01
Crea tu cuenta
Regístrate en la consola y obtén tu token de usuario (user_sk_).
- 02
Crea la empresa
Desde la consola o con POST /empresas. Recibes sk_test_ y sk_live_.
- 03
Emite en demo
Envía tu primer comprobante con sk_test_ y revisa data.estado.
- 04
Sal a producción
Configura tu certificado y Clave SOL, y cambia a sk_live_. Mismo código.
Emite tu primer comprobante hoy
Crea tu cuenta, registra tu empresa y prueba en el entorno demo sin afectar SUNAT.
