Saltar al contenido
Facturalo.pe

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.

POST /documentos/enviar
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.

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.

200 OK · respuesta.jsonACEPTADA
{
  "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… |"
  }
}
webhook → tu servidor
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.

Node.js · @facturalo-pe/node
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);
}

npm · GitHub · Node 18 o superior, con tipos de TypeScript.

PHP · facturalo-pe/facturalo-php
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

  1. 01

    Crea tu cuenta

    Regístrate en la consola y obtén tu token de usuario (user_sk_).

  2. 02

    Crea la empresa

    Desde la consola o con POST /empresas. Recibes sk_test_ y sk_live_.

  3. 03

    Emite en demo

    Envía tu primer comprobante con sk_test_ y revisa data.estado.

  4. 04

    Sal a producción

    Configura tu certificado y Clave SOL, y cambia a sk_live_. Mismo código.

Dudas

Preguntas frecuentes

Lo que más nos preguntan antes de empezar.

Escríbenos por WhatsApp

Con el token de la empresa en el header Authorization. El token sk_test_ apunta al entorno demo y el sk_live_ a producción. El entorno se detecta del token: no cambias la URL.

No. Envías un JSON con el documento. Facturalo arma el XML UBL 2.1, lo firma con tu certificado, lo envía a SUNAT y procesa el CDR.

Sí. Tenemos SDKs oficiales para PHP (Laravel) y Node.js, con verificación de webhooks e Idempotency-Key al emitir. Para otros lenguajes, como es una API REST con JSON, funciona desde Python, Java, .NET o cualquier cliente HTTP, y la documentación trae ejemplos en cURL para cada tipo de comprobante.

Usa el header Idempotency-Key (o el mismo serie y correlativo). Facturalo no crea otro comprobante: te devuelve la respuesta ya conocida. Detalle en docs.facturalo.pe/idempotencia.

Sí. Con tu token de usuario creas las empresas emisoras por API, y cada una recibe sus propios tokens de demo y producción. Es el modelo que usan los ERPs y SaaS que facturan por sus clientes.

Emite tu primer comprobante hoy

Crea tu cuenta, registra tu empresa y prueba en el entorno demo sin afectar SUNAT.