Documentación de Integración API REST SUNAT Versión 1.0.0 (Java 17 Spring Boot)

Nuestra API REST te permite integrar la emisión de Facturas, Boletas, Notas de Crédito y Notas de Débito electrónicas desde cualquier lenguaje (PHP, Node.js, Python, C#, Laravel, React, etc.).

Autenticación mediante Header Token

Todas las peticiones a la API REST pueden incluir el Token API de tu empresa en los encabezados HTTP:

Authorization: Bearer 
Content-Type: application/json
GET
/api/v1/companies

Obtiene la lista de todas las empresas emisoras registradas con sus credenciales SOL y estado del certificado digital.

Ejemplo cURL:
curl -X GET http://localhost:8080/api/v1/companies \
  -H "Accept: application/json"
Respuesta exitosa JSON (200 OK):
{
  "success": true,
  "message": null,
  "data": [
    {
      "id": 1,
      "ruc": "20600000001",
      "razonSocial": "CORPORACION ORTEGA S.A.C.",
      "direccion": "AV. PRINCIPAL 123 - LIMA",
      "mode": "BETA",
      "certUploaded": true
    }
  ]
}
POST
/api/v1/companies

Crea o actualiza una empresa emisora con sus credenciales SOL de SUNAT.

Ejemplo Body JSON Payload:
{
  "ruc": "20600000001",
  "razonSocial": "CORPORACION ORTEGA S.A.C.",
  "nombreComercial": "CORPORACION ORTEGA",
  "direccion": "AV. PRINCIPAL 123 - LIMA",
  "solUser": "MODDATOS",
  "solPass": "MODDATOS",
  "mode": "BETA"
}
POST
/api/v1/invoices

Construye el UBL 2.1, lo firma con el certificado digital .p12, lo envía a SUNAT en tiempo real y genera los PDFs (Ticket/A4).

Ejemplo Body JSON Payload:
{
  "company_id": 1,
  "serie": "F001",
  "moneda": "PEN",
  "cliente": {
    "tipo_doc": "6",
    "num_doc": "20123456789",
    "rzn_social": "EMPRESA CLIENTE DEMO S.A.C."
  },
  "items": [
    {
      "descripcion": "DESARROLLO DE SOFTWARE",
      "cantidad": 1,
      "precio_unitario": 118.00
    }
  ]
}
Respuesta exitosa de SUNAT JSON (200 OK):
{
  "success": true,
  "message": "La Factura numero F001-00000001, ha sido aceptada",
  "data": {
    "id": 1,
    "tipo_documento": "01",
    "serie": "F001",
    "numero": 1,
    "estado_sunat": "ACEPTADO",
    "hash_xml": "aB3kL9pQrs...",
    "xml_url": "/api/v1/documents/1/download/xml",
    "cdr_url": "/api/v1/documents/1/download/cdr",
    "pdf_ticket_url": "/api/v1/documents/1/download/ticket",
    "pdf_a4_url": "/api/v1/documents/1/download/a4"
  }
}
GET
/api/v1/documents/{id}/download/{type}

Permite descargar los archivos generados. Los valores posibles para {type} son:

  • ticket: PDF en formato Ticket de 80mm para POS.
  • a4: PDF en formato A4 institucional.
  • xml: XML UBL 2.1 firmado con certificado digital.
  • cdr: ZIP con la respuesta oficial de SUNAT (CDR).
curl -O http://localhost:8080/api/v1/documents/1/download/ticket