Documentacion de la API
Referencia completa de todos los endpoints. Parametros, ejemplos de request y response, codigos de error.
Autenticacion
Todos los endpoints requieren tu API Key en el header X-API-Key.
Obtenla desde el Dashboard despues de registrarte.
// En cada request HTTP X-API-Key: tu_api_key_aqui
curl -X POST https://www.contasire.com/api/cpe \ -H "X-API-Key: tu_api_key" \ -H "Content-Type: application/json" \ -d '{"document_type":"01","serie":"F001", "number":"001172","issue_date":"2026-03-30", "total":"48.50"}'
Validar comprobante CPE
Valida un comprobante de pago electronico (CPE) contra SUNAT. Retorna el estado oficial del comprobante.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| document_type | string | req | 01=Factura, 03=Boleta, 07=NC, 08=ND |
| serie | string | req | Serie (ej: F001, B001, E001) |
| number | string | req | Numero del comprobante |
| issue_date | string | req | Fecha emision YYYY-MM-DD |
| total | string | req | Monto total |
{
"document_type": "01",
"serie": "F001",
"number": "001172",
"issue_date": "2026-03-30",
"total": "48.50"
}
{
"success": true,
"message": "ACEPTADO",
"data": {
"ruc": "20610488227",
"voucher": "F001-001172",
"sunat_response": true,
"status": "ACEPTADO",
"status_code": 1
}
}
Validacion masiva CPE
Valida hasta 1000 comprobantes simultaneamente. 50 conexiones concurrentes, 1 reintento automatico, connection pooling.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| vouchers | array | req | Array de comprobantes (ruc, document_type, serie, number, issue_date, total) |
| timeout | int | opc | Timeout por comprobante en segundos (default: 10) |
{
"timeout": 10,
"vouchers": [
{
"ruc": "20610488227",
"document_type": "01",
"serie": "F001",
"number": "001172",
"issue_date": "2026-03-30",
"total": "48.50"
}
]
}
{
"success": true,
"data": {
"total": 2,
"validated": 2,
"failed": 0,
"elapsed_seconds": 1.23,
"results": [
{
"ruc": "20610488227",
"voucher": "F001-001172",
"status": "ACEPTADO",
"status_code": 1
}
]
}
}
Descargar comprobante electronico
Descarga un comprobante electronico desde SUNAT en formato JSON (parseado con items, IGV, retenciones, detracciones), XML o PDF.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| supplier_ruc | string | req | RUC del emisor (11 digitos) |
| document_type | string | req | 01=Factura, 03=Boleta, 07=NC, 08=ND |
| serie | string | req | Serie del comprobante |
| number | string | req | Numero del comprobante |
| output | string | opc | json (default), xml, pdf |
{
"supplier_ruc": "20610488227",
"document_type": "01",
"serie": "F001",
"number": "001172",
"output": "json"
}
{
"success": true,
"data": {
"header": {
"voucher": "F001-001172",
"issue_date": "2026-03-30",
"currency": "PEN",
"supplier": {"ruc":"20610488227"},
"customer": {"ruc":"20100066603"},
"taxable_amount": 41.1,
"igv": 7.4,
"total": 48.5,
"retention": null,
"detraction": null
},
"items": [{
"description": "SERVICIO X",
"quantity": 1.0,
"unit_value": 41.1,
"tax": 7.4,
"total": 48.5
}]
}
}
{
"success": true,
"data": {
"file_name": "F001-001172.pdf",
"content_base64": "JVBERi0x..."
}
}
Reporte gerencial tributario
Reporte mensual consolidado: compras, ventas, calculo IGV, tipo de cambio, agentes de retencion. JSON o PDF profesional.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| period | string | req | Periodo tributario yyyymm |
| output | string | opc | json (default) o pdf |
{
"period": "202603",
"output": "json"
}
{
"success": true,
"data": {
"period": "202603",
"ruc": "20610488227",
"purchases": {
"total_vouchers": 45,
"taxable_amount": 125000.00,
"igv": 22500.00,
"total": 147500.00
},
"sales": {
"total_vouchers": 120,
"igv": 45000.00,
"total": 295000.00
},
"igv_balance": {
"igv_to_pay": 22500.00
},
"retentions": {
"suppliers_with_retention": 5
},
"exchange_rate": {
"average_buy": 3.718,
"average_sell": 3.725
},
"elapsed_seconds": 8.5
}
}
SIRE Compras - Propuesta
Descarga la propuesta completa de compras del SIRE. Combina ticket + polling + descarga en un solo request.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| period | string | req | Periodo yyyymm |
| output | string | opc | raw (ZIP), json, excel |
| timeout | int | opc | Timeout en segundos (default: 60) |
| document_type | string | opc | Filtrar por tipo doc |
| supplier_ruc | string | opc | Filtrar por RUC proveedor |
| date_from | string | opc | Fecha desde YYYY-MM-DD |
| date_to | string | opc | Fecha hasta YYYY-MM-DD |
| amount_from | float | opc | Monto minimo |
| amount_to | float | opc | Monto maximo |
{
"period": "202603",
"output": "json"
}
{
"period": "202603",
"output": "excel",
"supplier_ruc": "20100066603",
"date_from": "2026-03-01",
"date_to": "2026-03-31",
"amount_from": 100.00,
"amount_to": 5000.00
}
{
"success": true,
"data": {
"period": "202603",
"total_vouchers": 45,
"elapsed_seconds": 12.5,
"vouchers": [{
"ruc": "20610488227",
"supplier_name": "PROVEEDOR SAC",
"document_type": "01",
"serie": "E001",
"taxable_base_dg": 252.2,
"igv_dg": 45.4,
"total": 297.6,
"currency": "PEN"
}]
}
}
SIRE Compras - Resumen
Resumen consolidado del registro de compras de un periodo.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| period | string | req | Periodo yyyymm |
| summary_type | int | opc | 1=Propuesta, 2=Preliminar, 3=Excluidos, 4=Registro, 5=Registrados, 6=Ajustes, 7=No domiciliados |
| file_type | int | opc | 0=Default |
{
"period": "202603",
"summary_type": 1,
"file_type": 0
}
{
"success": true,
"data": { // Resumen SUNAT del periodo }
}
SIRE Compras - Periodos
Retorna los periodos tributarios disponibles para el registro de compras (RCE). No requiere body.
// POST /api/sire/purchases/periods // No body required
{
"success": true,
"data": [
"202601", "202602", "202603"
]
}
SIRE Ventas - Propuesta
Descarga la propuesta completa de ventas del SIRE. Mismos parametros y formatos que purchases/proposal.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| period | string | req | Periodo yyyymm |
| output | string | opc | raw, json, excel |
| timeout | int | opc | Timeout (default: 60) |
| document_type | string | opc | Filtrar por tipo doc |
| date_from / date_to | string | opc | Rango de fechas |
| amount_from / amount_to | float | opc | Rango de montos |
{
"period": "202603",
"output": "json"
}
{
"success": true,
"data": {
"period": "202603",
"total_vouchers": 120,
"elapsed_seconds": 10.2,
"vouchers": [{
"ruc": "20100066603",
"document_type": "01",
"serie": "F001",
"total": 1180.00,
"currency": "PEN"
}]
}
}
SIRE Ventas - Resumen
Resumen consolidado del registro de ventas. Mismos parametros que purchases/summary.
{
"period": "202603",
"summary_type": 1,
"file_type": 0
}
SIRE Ventas - Periodos
Retorna los periodos tributarios disponibles para el registro de ventas (RVIE). No requiere body.
// POST /api/sire/sales/periods // No body required
{
"success": true,
"data": [
"202601", "202602", "202603"
]
}
Estado de ticket SIRE
Consulta el estado de procesamiento de un ticket del SIRE.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| period_from | string | req | Periodo desde yyyymm |
| period_to | string | req | Periodo hasta yyyymm |
| ticket | string | req | Numero de ticket |
{
"period_from": "202603",
"period_to": "202603",
"ticket": "20260300000028"
}
Descargar archivo SIRE
Descarga un archivo procesado de un ticket completado. Retorna contenido en base64.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| file_name | string | req | Nombre del archivo |
| file_type_code | string | req | Codigo tipo (ej: "00") |
| period | string | req | Periodo yyyymm |
| process_code | string | req | Codigo proceso (ej: "10") |
| ticket | string | req | Numero de ticket |
{
"file_name": "20610488227-propuesta.zip",
"file_type_code": "00",
"period": "202603",
"process_code": "10",
"ticket": "20260300000028"
}
{
"success": true,
"data": {
"content_base64": "UEsDBBQA..."
}
}
Consultar RUC
Informacion completa de un contribuyente: razon social, estado, condicion, direccion, actividad economica, agente de retencion.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| number | string | req | RUC (11 digitos) |
{
"success": true,
"data": {
"ruc": "20610488227",
"legal_name": "GRETA NATURAL SAC",
"trade_name": "GRETA NATURAL",
"status": "ACTIVO",
"condition": "HABIDO",
"type": "SOC. ANONIMA CERRADA",
"is_active": true,
"is_habido": true,
"address": "CAL. LOS HALCONES 209...",
"department": "LIMA",
"province": "LIMA",
"district": "SAN ISIDRO",
"ubigeo": "150131",
"economic_activity": "VTA. MAY...",
"is_retention_agent": false,
"registration_date": "19/01/2023"
}
}
Consultar DNI
Consulta nombres y apellidos de una persona por su numero de DNI.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| number | string | req | DNI (8 digitos) |
{
"success": true,
"data": {
"dni": "06256217",
"full_name": "BOLUARTE ZEGARRA, DINA ERCILIA",
"last_name": "BOLUARTE ZEGARRA",
"first_name": "DINA ERCILIA"
}
}
Tipo de cambio SUNAT
Tipo de cambio USD/PEN oficial SUNAT. Soporta hoy, fecha especifica o rango.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| date | string | opc | Fecha YYYY-MM-DD (default: hoy) |
| from | string | opc | Inicio rango YYYY-MM-DD |
| to | string | opc | Fin rango YYYY-MM-DD |
// GET /api/exchange-rate?date=2026-03-30 { "success": true, "data": { "date": "2026-03-30", "buy": 3.715, "sell": 3.722, "source": "SUNAT" } }
// GET /api/exchange-rate?from=2026-03-01&to=2026-03-31 { "success": true, "data": { "from": "2026-03-01", "to": "2026-03-31", "total": 22, "rates": [ {"date":"2026-03-03","buy":3.715,"sell":3.722} ] } }
Agente de retencion
Consulta si un RUC es agente de retencion designado por SUNAT. Permite buscar por nombre.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| ruc | string | * | RUC a consultar |
| search | string | * | Buscar por nombre o RUC |
| limit | int | opc | Max resultados (default: 20) |
// GET /api/retention-agent?ruc=20100119227 { "success": true, "data": { "ruc": "20100119227", "legal_name": "3M PERU S A", "is_retention_agent": true, "resolution": "RS R.S.037-2002", "valid_from": "2002-06-01" } }
{
"success": true,
"data": {
"ruc": "20000000001",
"is_retention_agent": false
}
}
Sincronizar buzon SUNAT
Conecta a SOL, descarga mensajes y notificaciones, guarda en base de datos. No requiere body.
// POST /api/buzon/sync // Header: X-API-Key: tu_api_key // No body required
{
"success": true,
"message": "5 nuevos mensajes sincronizados",
"data": {
"new_count": 5,
"total_notifications": 23,
"total_messages": 12
}
}
Listar mensajes del buzon
Retorna mensajes y notificaciones almacenados con filtros opcionales.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| type | int | opc | 0=ambos, 1=mensajes, 2=notificaciones |
| search | string | opc | Buscar por asunto |
| is_read | bool | opc | Filtrar leido/no leido |
| is_urgent | bool | opc | Filtrar urgente |
| limit | int | opc | Default: 50, max: 200 |
| offset | int | opc | Paginacion |
{
"success": true,
"data": {
"total": 35,
"limit": 50,
"offset": 0,
"items": [{
"id": 1,
"code": 12345,
"type": "notification",
"subject": "Notificacion SUNAT",
"date_sent": "15/03/2026",
"is_read": false,
"is_urgent": true
}]
}
}
Detalle de mensaje
Detalle completo de un mensaje/notificacion. Si ya fue consultado, retorna desde cache. Si no, se conecta a SUNAT SOL. Los adjuntos se suben a S3 automaticamente.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| code | int | req | Codigo del mensaje (de /messages) |
// POST /api/buzon/detail?code=12345 // Header: X-API-Key: tu_api_key
{
"success": true,
"data": {
"code": 12345,
"type": "notification",
"subject": "Notificacion SUNAT",
"sender": "SUNAT",
"text": "Contenido en texto plano...",
"attachments": [
{"name":"doc.pdf", "code":"ATT001"}
],
"attachments_status": "ready",
"attachments_s3": [{
"name": "doc.pdf",
"s3_key": "buzon/1/12345/doc.pdf",
"size": 45678
}]
}
}
Recibos por honorarios
Consulta los recibos por honorarios electronicos (RHE) recibidos por la empresa en un periodo. Descarga el reporte TXT del portal SOL.
| Parametro | Tipo | Descripcion | |
|---|---|---|---|
| period | string | req | Periodo yyyymm (ej: 202604) |
| Campo | Descripcion |
|---|---|
| fecha_emision | Fecha DD/MM/YYYY |
| numero | Numero completo (E001-3) |
| serie / correlativo | Serie y correlativo separados |
| estado | NO ANULADO, ANULADO, REVERTIDO |
| ruc_emisor | RUC del emisor |
| nombre_emisor | Nombre o razon social |
| descripcion | Servicio prestado |
| moneda | SOLES o DOLARES |
| renta_bruta | Monto bruto |
| impuesto_renta | Retencion IR (8%) |
| renta_neta | Monto neto |
| monto_pendiente | Pendiente de pago |
// POST /api/honorarios/query // Header: X-API-Key: tu_api_key { "period": "202604" }
{
"success": true,
"message": "3 recibos encontrados",
"data": {
"total": 3,
"period": "202604",
"items": [{
"fecha_emision": "05/04/2026",
"tipo_doc": "RH",
"numero": "E001-3",
"serie": "E001",
"correlativo": "3",
"estado": "NO ANULADO",
"ruc_emisor": "10456789012",
"nombre_emisor": "GARCIA LOPEZ JUAN",
"tipo_renta": "A",
"gratuito": "NO",
"descripcion": "ASESORIA CONTABLE",
"moneda": "SOLES",
"renta_bruta": "2500.00",
"impuesto_renta": "200.00",
"renta_neta": "2300.00",
"monto_pendiente": "2300.00"
}]
}
}
Codigos de error
Todos los endpoints retornan errores en formato consistente.
| Codigo | Significado | Descripcion |
|---|---|---|
| 400 | Bad Request | Parametros faltantes o invalidos |
| 401 | Unauthorized | Token SUNAT invalido o credenciales SOL incorrectas |
| 402 | Payment Required | Suscripcion expirada |
| 403 | Forbidden | API Key invalida o funcionalidad no disponible en tu plan |
| 404 | Not Found | RUC/DNI no encontrado o recurso inexistente |
| 429 | Rate Limited | Excediste el limite de requests |
| 500 | Server Error | Error interno, contacta soporte si persiste |
{
"success": false,
"message": "Descripcion del error",
"data": null
}
{
"success": false,
"message": "Invalid API key or inactive account",
"data": null
}
{
"success": false,
"message": "Subscription expired",
"data": null
}
{
"success": false,
"message": "Rate limit exceeded",
"data": null
}