Saltar al contenido
26 endpoints · versión v2

API para emitir desde tu sistema

Si ya tienes un software, mándanos cantidad y precio: nosotros calculamos el IGV, firmamos, enviamos a SUNAT y te devolvemos el CDR. Sin cambiar cómo vendes.

01 Lo básico

Antes de la primera llamada

URL base
https://backend.misventas.pe/api/v2/public

Todas las rutas cuelgan de acá. Solo HTTPS.

Autenticación
Authorization: Bearer TU_CREDENCIAL

La credencial se crea desde tu cuenta y ya dice de qué empresa es: no hay cabecera de negocio. Se revoca cuando quieras.

Permisos
comprobantes.emitir · productos.leer · …

Cada credencial lleva solo los permisos que le des. Una integración que factura no necesita poder anular.

Formato
application/json

Peticiones y respuestas en JSON, con acentos en UTF-8.

La credencial emite comprobantes con tu RUC. Guárdala en el servidor, en una variable de entorno, y nunca en el código del navegador ni en un repositorio. Solo se muestra entera al crearla.

02 Un ejemplo

Emitir un comprobante

Mandas el cliente y los ítems con cantidad y precio. El IGV y los totales los calcula el servidor; el XML se firma, va a SUNAT y vuelve el resultado.

Petición
curl -X POST https://backend.misventas.pe/api/v2/public/comprobantes \
  -H "Authorization: Bearer TU_CREDENCIAL" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo": "boleta",
    "cliente": {
      "tipo_documento": "1",
      "numero_documento": "45678912",
      "razon_social": "Rosa Quispe"
    },
    "items": [
      { "codigo_interno": "ARZ5", "cantidad": 2, "precio_unitario": 24.90 },
      { "codigo_interno": "ACE1", "cantidad": 1, "precio_unitario": 9.50 }
    ]
  }'
Respuesta
{
  "success": true,
  "data": {
    "id": "a1b2c3d4-…",
    "tipo": "boleta",
    "numero_completo": "B001-4821",
    "fecha_emision": "2026-09-15",
    "moneda": "PEN",
    "cliente": { "numero_documento": "45678912", "razon_social": "Rosa Quispe" },
    "totales": { "gravado": 50.25, "igv": 9.05, "total": 59.30 },
    "estado": "aceptado",
    "sunat": { "enviado": true, "aceptado": true, "hash": "k9Lm…" },
    "enlaces": {
      "pdf": "https://…/pdf",
      "xml": "https://…/xml",
      "cdr": "https://…/cdr"
    }
  }
}

precio_unitario es con IGV; si tienes el valor sin IGV mandavalor_unitario y te ahorras un redondeo. Sin seriese usa la del local. La respuesta trae el estado ante SUNAT y los enlaces al XML, el PDF y el CDR. El cuerpo completo de cada ruta está en la documentación.

03 Referencia

Endpoints disponibles

Todos cuelgan de https://backend.misventas.pe/api/v2/public. Cada ruta pide un permiso y la credencial tiene que tenerlo.

Empresa

Con quién estás hablando. Es la primera llamada de toda integración: si responde, la credencial sirve.

  • GET/empresaDatos de la empresa de la credencial. No pide permiso.

04 Cuando algo falla

Errores que vas a ver

  • 401

    Credencial inválida

    La credencial no existe, se revocó o no se mandó. Revisa la cabecera Authorization.

  • 403

    Sin permiso

    La credencial no tiene el permiso que pide esa ruta, o la empresa no tiene contratado el módulo API. El mensaje dice cuál de las dos.

  • 422

    Datos incompletos

    Falta un campo obligatorio o tiene un formato que SUNAT no acepta. La respuesta dice cuál y en qué ítem.

  • 429

    Demasiadas peticiones

    Superaste el límite por minuto de tu empresa. Espera y reintenta; el límite se ve en la cabecera de la respuesta.

¿Vas a integrar?

Crea la credencial desde tu cuenta y empieza con GET /empresa. El cuerpo exacto de cada ruta está en la documentación completa. Si te trabas, hablas con quien mantiene la API.

Escríbenos