F/ DOCS
Documentación pública

API de facturación
electrónica.

Interfaz pública para emitir y consultar comprobantes de una empresa registrada.

REST + JSONToken empresarialSUNAT Perú

00 / Acceso

Autenticación empresarial

El token identifica automáticamente a la empresa. No envíes empresa_id: cualquier valor recibido será reemplazado por la empresa asociada al token.
  • 01GET: ?token=TU_TOKEN.
  • 02POST: campo "token": "TU_TOKEN" en el JSON.
  • 03JWT y cookies del dashboard no autentican esta API.
  • 04Un token solo accede a comprobantes de su propia empresa.
  • 05El destino SUNAT se toma de empresas_facturacion.entorno: beta usa el servicio de pruebas y produccion usa los servicios productivos.

01 / Operación

Flujo de emisión

  1. 1

    POST /comprobantes reserva el correlativo y crea un registro pendiente.

  2. 2

    POST /comprobantes/{id}/procesar genera XML, firma, envía a SUNAT y genera los PDF.

02 / Respuestas

Errores

{
  "success": false,
  "error": { "code": "UNAUTHORIZED", "message": "Token empresarial inválido o inactivo" }
}
HTTPCódigoSignificado
400VALIDATION_ERRORJSON, campos o estado no válidos.
401UNAUTHORIZEDToken ausente, inválido o inactivo.
403ACCOUNT_SUSPENDEDLa empresa está suspendida y no puede usar ningún endpoint de comprobantes.
404NOT_FOUNDComprobante inexistente/ajeno o archivo no disponible.
422SUNAT_ERRORError o rechazo devuelto por SUNAT.
500INTERNAL_ERRORError interno sin detalles técnicos.

03 / Referencia

Endpoints públicos

GET/api/facturacion/comprobantes#01

Lista comprobantes propios. Filtros opcionales: estado y tipo_comprobante.

GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes?token=TU_TOKEN&estado=aceptado&tipo_comprobante=03

200: {"success":true,"data":[...]}

GET/api/facturacion/comprobantes/{id}#02

Devuelve datos, detalles y URLs de descarga de un comprobante propio.

GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes/12?token=TU_TOKEN

200: objeto del comprobante. 404: ID inexistente o ajeno.

POST/api/facturacion/comprobantes#03

Crea el comprobante y reserva su correlativo; todavía no lo envía a SUNAT. La serie debe existir previamente en la empresa autenticada y corresponder al tipo enviado.

CódigoComprobanteSerie habitualCliente
01FacturaF001RUC (tipo 6)
03Boleta de ventaB001DNI (tipo 1)
07Nota de créditoFC01Según comprobante afectado
08Nota de débitoFD01Según comprobante afectado

Factura electrónica · tipo 01

Ejemplo con cliente identificado mediante RUC y dos conceptos gravados.

{
  "token": "TU_TOKEN",
  "tipo_comprobante": "01",
  "serie": "F001",
  "moneda": "PEN",
  "fecha_emision": "2026-09-17",
  "cliente": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "nombre": "COMERCIAL ANDINA S.A.C.",
    "direccion": "Av. Javier Prado 1234, Lima"
  },
  "items": [
    {
      "codigo": "SERV-001",
      "descripcion": "Servicio de consultoría",
      "unidad": "ZZ",
      "cantidad": 1,
      "precio_unitario": 1180.00,
      "afectacion_igv": "10"
    },
    {
      "codigo": "P001",
      "descripcion": "Licencia mensual",
      "unidad": "NIU",
      "cantidad": 2,
      "precio_unitario": 59.00,
      "afectacion_igv": "10"
    }
  ]
}

Boleta de venta electrónica · tipo 03

Ejemplo con cliente identificado mediante DNI.

{
  "token": "TU_TOKEN",
  "tipo_comprobante": "03",
  "serie": "B001",
  "moneda": "PEN",
  "fecha_emision": "2026-09-16",
  "cliente": {
    "tipo_documento": "1", "numero_documento": "12345678",
    "nombre": "Juan Perez", "direccion": "Av. Lima 123"
  },
  "items": [{
    "codigo": "P001", "descripcion": "Producto de prueba", "unidad": "NIU",
    "cantidad": 1, "precio_unitario": 118.00, "afectacion_igv": "10"
  }]
}

Nota de crédito electrónica · tipo 07

Usa una serie de nota de crédito configurada para la empresa. Limitación actual: el XML usa internamente el motivo 01 (anulación), el tipo afectado 01 y la referencia fija 0001-00000001; estos valores todavía no se reciben en el JSON.

{
  "token": "TU_TOKEN",
  "tipo_comprobante": "07",
  "serie": "FC01",
  "moneda": "PEN",
  "fecha_emision": "2026-09-17",
  "cliente": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "nombre": "COMERCIAL ANDINA S.A.C.",
    "direccion": "Av. Javier Prado 1234, Lima"
  },
  "items": [{
    "codigo": "P001",
    "descripcion": "Anulación de producto facturado",
    "unidad": "NIU",
    "cantidad": 1,
    "precio_unitario": 118.00,
    "afectacion_igv": "10"
  }]
}

Nota de débito electrónica · tipo 08

Usa una serie de nota de débito configurada para la empresa. Limitación actual: el XML usa internamente el motivo 01, el tipo afectado 01 y la referencia fija 0001-00000001; estos valores todavía no se reciben en el JSON.

{
  "token": "TU_TOKEN",
  "tipo_comprobante": "08",
  "serie": "FD01",
  "moneda": "PEN",
  "fecha_emision": "2026-09-17",
  "cliente": {
    "tipo_documento": "6",
    "numero_documento": "20123456789",
    "nombre": "COMERCIAL ANDINA S.A.C.",
    "direccion": "Av. Javier Prado 1234, Lima"
  },
  "items": [{
    "codigo": "CARGO-001",
    "descripcion": "Cargo adicional por diferencia de precio",
    "unidad": "ZZ",
    "cantidad": 1,
    "precio_unitario": 59.00,
    "afectacion_igv": "10"
  }]
}

Respuesta de creación

{
  "success": true,
  "data": {
    "id": 12, "tipo": "01", "serie": "F001", "correlativo": "00000012",
    "numero": "F001-00000012", "estado": "pendiente", "entorno": "beta",
    "message": "Comprobante creado. Usar POST /procesar para enviar a SUNAT."
  }
}
Campos comunes: monedas PEN y USD; afectaciones IGV 10, 20, 30 y 21. El precio_unitario gravado incluye IGV. No envíes empresa_id: la empresa se obtiene del token.

201 Created. El comprobante queda en estado pendiente y debe procesarse en una segunda solicitud.

POST/api/facturacion/comprobantes/{id}/procesar#04

Genera y firma XML, envía a SUNAT y genera PDF A4 y ticket. Estados admitidos: pendiente, generando y error.

{ "token": "TU_TOKEN" }

200: estado, entorno usado, hash, rutas y mensaje SUNAT. 400: estado no procesable. 404: ID inexistente o ajeno.

GET/api/facturacion/comprobantes/{id}/estado#05

En producción consulta el servicio de estado de SUNAT. En beta devuelve el estado confirmado durante el envío y el CDR almacenado, porque SUNAT no ofrece un servicio beta de consulta de CDR.

GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes/12/estado?token=TU_TOKEN

200: respuesta normalizada; en beta incluye source=local_cdr y cdr_disponible. 422: error o rechazo SUNAT en producción.

GET/api/facturacion/comprobantes/{id}/pdf#06

Devuelve application/pdf. Usa A4 por defecto o formato=ticket.

GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes/12/pdf?token=TU_TOKEN&formato=ticket
GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes/12/pdf?token=TU_TOKEN&formato=ticket&disposicion=inline

disposicion=attachment fuerza la descarga y es el valor predeterminado. disposicion=inline permite mostrar el PDF en una pestaña, visor o iframe.

200: contenido binario del PDF. 400: disposición inválida. 404: comprobante o formato no disponible.

GET/api/facturacion/comprobantes/{id}/xml#07

Descarga el XML firmado como application/xml.

GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes/12/xml?token=TU_TOKEN
GET/api/facturacion/comprobantes/{id}/cdr#08

Descarga la constancia CDR como application/zip.

GET https://apisunat.codemultiall.net.pe/api/facturacion/comprobantes/12/cdr?token=TU_TOKEN
NOTA Login, dashboard y administración de empresas son interfaces internas y no forman parte de esta API pública.