Saltar al contenido
Tarifa anual desde S/ 37 al mes + IGV. Pide tu demo sin costo. Reserva tu demo
Sistema Facturación Perú
Menú del portal

Guías por comprobante

Boleta de venta electrónica por API

JSON mínimo para emitir una boleta de venta electrónica por API, cuándo pedir el DNI del comprador y cómo la informa el resumen diario a SUNAT.

Actualizado el

La boleta (tipo 03) es para vender al consumidor final. A diferencia de la factura, no viaja sola a SUNAT: el sistema la informa en el resumen diario. Por eso la respuesta trae registrado y el estado cambia a aceptado cuando SUNAT procesa el resumen.

  • Endpoint: POST /comprobantes · alcance comprobantes.emitir.
  • Serie: una de boleta de tu local (B001…).

JSON mínimo

{
  "serie_documento": "B001",
  "numero_documento": "#",
  "fecha_de_emision": "2026-11-04",
  "hora_de_emision": "10:15:00",
  "codigo_tipo_operacion": "0101",
  "codigo_tipo_documento": "03",
  "codigo_tipo_moneda": "PEN",
  "datos_del_cliente_o_receptor": {
    "codigo_tipo_documento_identidad": "1",
    "numero_documento": "70123456",
    "apellidos_y_nombres_o_razon_social": "Ana Pérez",
    "codigo_pais": "PE"
  },
  "totales": {
    "total_operaciones_gravadas": 50.85,
    "total_igv": 9.15,
    "total_impuestos": 9.15,
    "total_valor": 50.85,
    "total_venta": 60
  },
  "items": [{
    "codigo_interno": "POLO-01",
    "descripcion": "Polo azul talla M",
    "unidad_de_medida": "NIU",
    "cantidad": 2,
    "valor_unitario": 25.42,
    "codigo_tipo_precio": "01",
    "precio_unitario": 30,
    "codigo_tipo_afectacion_igv": "10",
    "total_base_igv": 50.85,
    "porcentaje_igv": 18,
    "total_igv": 9.15,
    "total_impuestos": 9.15,
    "total_valor_item": 50.85,
    "total_item": 60
  }],
  "pagos": [{ "codigo_metodo_pago": "01", "codigo_destino_pago": "cash", "monto": 60 }]
}

El paso a paso con cURL, PHP, Node.js y Python está en el inicio rápido.

El comprador

Documento codigo_tipo_documento_identidad
DNI 1
Carné de extranjería 4
RUC 6
Pasaporte 7
Otros (sin documento) 0
  • Si el total pasa de S/ 700, SUNAT exige identificar al comprador con su documento.
  • Para una venta menor sin datos del comprador, usa el tipo 0 y el mismo cliente genérico que usa tu empresa en la web.
  • Un DNI que no tiene 8 dígitos lo rechaza SUNAT (2801). Puedes validarlo antes con GET /consultas/dni/{numero}.

Ticket o A4

El PDF sale en el formato que pidas: GET /comprobantes/{id}/pdf?formato=ticket, ticket_58, ticket_50, a5 o a4 (el de siempre). La respuesta de la emisión ya trae enlaces.pdf_ticket.

Cuándo queda aceptada

  1. Emites: registrado.
  2. El sistema envía el resumen diario con las boletas de los días anteriores y consulta su ticket: el resumen queda enviado.
  3. SUNAT lo procesa: cada boleta pasa a aceptado (o rechazado) y te llegan los webhooks resumen.procesado y comprobante.aceptado.

No necesitas llamar a nada para que esto pase. Si consultas una boleta con GET /comprobantes/{id} verás su estado al momento.

Anular una boleta

POST /comprobantes/{id}/anular con un motivo: el sistema arma el resumen de anulación (no la comunicación de baja, que es para facturas). Solo se anulan boletas aceptadas u observadas. Detalle en Anular.

Portal para desarrolladores · ¿Algo no está claro o te falta un ejemplo? Escríbenos y lo mejoramos.