API - Facturación Electrónica para tu negocio
API REST unificada de Facturación Electrónica. Emite facturas, boletas, notas de crédito/débito y guías de remisión directamente a la SUNAT u OSE. Compatible con firmas digitales locales y planes gestionados.
Sistema de Ventas GESCOMWEB 2025
¡El complemento ideal con Facturación Electrónica Ilimitada integrada! Gestiona las ventas, compras, inventario y cuentas de tu negocio de forma rápida y sencilla.
- ✔️ Facturación Electrónica Ilimitada integrada a SUNAT/OSE
- ✔️ Gestión Comercial: Ventas, compras y registro de caja diario
- ✔️ Módulos Financieros: Cuentas por pagar y cuentas por cobrar
- ✔️ Control de Almacén: Inventarios, stock en tiempo real y Kardex valorizado
Características Principales
Facturas y Boletas
Emisión directa en formato XML con firma digital local. Generación síncrona con CDR inmediato de SUNAT.
Guías de Remisión
Integrado con la nueva API REST de SUNAT (GRE). Generación rápida con firmas de autenticación.
Certificados Digitales PEM/PFX
Sube y administra múltiples certificados digitales de forma segura y con descarga cifrada.
Notas de Crédito y Débito
Emisión de notas de crédito (07) y débito (08) para anular o modificar comprobantes, con envío síncrono y CDR inmediato.
Comunicaciones de Baja
Anula comprobantes con comunicaciones de baja (09) enviadas a SUNAT, con seguimiento del estado de cada lote.
Resúmenes Diarios
Agrupa tus boletas del día en resúmenes de boletas (RC) para SUNAT y consulta el estado de cada envío.
Nuestros Planes de Servicio
Plan Free
Ideal para pruebas e integraciones iniciales de desarrollo.
- Límite de 100 comprobantes mensuales.
- Entorno de pruebas y producción.
- Consola interactiva de JSON y pruebas de envío.
Premium SUNAT
Comprobantes ilimitados directamente a SUNAT con firma digital local.
- Envíos ilimitados al mes.
- Firma local con certificado digital propio.
- Descarga segura de certificados cargados.
NubeFact Premium
Comprobantes ilimitados enrutados a la plataforma OSE/PSE NubeFact.
- Enrutamiento directo a la API de Nubefact.
- No requiere cargar certificado digital local.
- Ideal si ya posees cuenta de Nubefact activa.
Planes del Servicio Consulta RUC / DNI
Consulta el padrón SUNAT (RUC) y el padrón RENIEC (DNI) mediante API REST en JSON. Disponible por separado de la facturación electrónica.
Plan Free Consultas
Ideal para integrar la validación de RUC/DNI en tus formularios y sistemas.
- Límite de 500 consultas al mes.
- Consulta por RUC, DNI y búsqueda por nombre.
- API REST con respuestas JSON.
Premium Consultas
Para sistemas con alto volumen de validaciones de clientes y proveedores.
- Consultas ilimitadas de RUC y DNI.
- Búsqueda por nombre sin restricción de volumen.
- Prioridad en la actualización del padrón.
Certificado Digital de Prueba Gratis
¿No tienes un certificado para realizar tus pruebas en entorno Beta? ¡No te preocupes! Al registrarte e iniciar sesión, dispones de una opción directa en el Menú Lateral ("Certificado de Prueba") para generar, vincular y descargar tu certificado digital auto-firmado (.pfx) al instante y de forma 100% gratuita.
Información de Pagos y Soporte
Para activar o renovar tu plan Premium, envía tu constancia de pago al correo karlorde@cmocsofts.com o al WhatsApp/Celular 902743480.
Lista de empresas
🏢
No hay empresas registradas aún.
| Código | RUC | Razón Social | Usuario SOL | Plan | Vencimiento | Entorno | Estado | Acciones |
|---|---|---|---|---|---|---|---|---|
| Cargando empresas... | ||||||||
Configuración Global de Facturación
Límites y Alertas Globales
Configura los límites y alertas globales del sistema.
Plazos de Envío SUNAT
La API bloquea o deriva comprobantes según estos plazos. Se verifican antes del envío a SUNAT.
Gestión de Usuarios
| Email / Usuario | Teléfono | Rol | Estado | Última Actividad | Fecha Registro | Acciones |
|---|---|---|---|---|---|---|
| Cargando usuarios... | ||||||
Registrar Empresa
Detalles de la Empresa
Mis Datos de la Empresa (Company)
Mi Cuenta
🔍 API de Consulta RUC / DNI
Tu API key para consultar el padrón SUNAT (RUC) y RENIEC (DNI) vía API REST. Se genera automáticamente con tu cuenta (plan Free).
GET https://consultarucdni.cmocsofts.com/ruc?ruc=20123456789&key=TU_API_KEY
Certificado Digital de Prueba
Genera tu Certificado de Pruebas al Instante
Para enviar comprobantes al entorno Beta (Pruebas) de la SUNAT, necesitas un certificado digital. Desde aquí puedes generar uno auto-firmado de prueba para tu RUC totalmente gratis.
- Formato estándar PKCS#12 (archivo
.pfx). - Contraseña por defecto del certificado:
123456. - Se vincula automáticamente a tu empresa en el sistema para que puedas facturar inmediatamente.
Estado del Certificado Digital en el Sistema:
Consola de Pruebas
1. Estructura JSON de Prueba
2. Resultado de SUNAT
Esperando Envío de Prueba
Cargue una plantilla, elija la empresa (company) en el selector y presione enviar.
Procesando con SUNAT...
Construyendo XML, firmando digitalmente y enviando al Web Service...
Constancia de Recepción CDR
La Factura número F001-1, ha sido aceptada.
Descargas directas (Pruebas)
Detalle del Error
Debe consignar el Total Precio de Venta
Revise la estructura del JSON y verifique que los montos e impuestos estén calculados correctamente.
// La respuesta JSON aparecerá aquí...
Guía de Integración con la API
Factura Básica (Estructura Estándar)
Utilízala para transacciones comerciales regulares que requieren facturación electrónica (tipoDoc: 01).
{
"tipoDoc": "01",
"serie": "F001",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"moneda": "PEN",
"total": 118.00,
"totalGravado": 100.00,
"formaPago": "CONTADO",
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"cliente": {
"tipoDoc": "6",
"numDoc": "20440970708",
"razonSocial": "CMOCSOFTS S.A.C."
},
"detalles": [
{
"codigo": "P001",
"descripcion": "SERVICIO DE DESARROLLO DE SOFTWARE",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 100.00,
"precioUnitario": 118.00,
"valorVenta": 100.00,
"tipoAfectacionIgv": "10",
"porcentajeIgv": 18,
"igv": 18.00
}
],
"leyendas": [
{
"codigo": "1000",
"valor": "SON CIENTO DIECIOCHO Y 00/100 SOLES"
}
]
}
Boleta Básica (Estructura Estándar)
Estructura JSON básica para la generación de Boletas de Venta Electrónicas para personas naturales (tipoDoc: 03).
{
"tipoDoc": "03",
"serie": "B001",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"moneda": "PEN",
"total": 118.00,
"totalGravado": 100.00,
"formaPago": "CONTADO",
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"cliente": {
"tipoDoc": "1",
"numDoc": "44556677",
"razonSocial": "JUAN PEREZ"
},
"detalles": [
{
"codigo": "P001",
"descripcion": "SERVICIO DE DESARROLLO DE SOFTWARE",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 100.00,
"precioUnitario": 118.00,
"valorVenta": 100.00,
"tipoAfectacionIgv": "10",
"porcentajeIgv": 18,
"igv": 18.00
}
],
"leyendas": [
{
"codigo": "1000",
"valor": "SON CIENTO DIECIOCHO Y 00/100 SOLES"
}
]
}
Factura Compleja (Gravados, Inafectos, Exonerados, ISC)
Utilízala para comprobantes mixtos que incluyan productos con IGV (gravados), libros u otros productos exonerados, servicios inafectos o bebidas/tabacos con Impuesto Selectivo al Consumo (ISC).
{
"tipoDoc": "01",
"serie": "F001",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"moneda": "PEN",
"total": 301.84,
"totalGravado": 180.00,
"totalExonerado": 50.00,
"totalInafecto": 30.00,
"totalIsc": 8.00,
"totalIgv": 33.84,
"formaPago": "CONTADO",
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"cliente": {
"tipoDoc": "6",
"numDoc": "20440970708",
"razonSocial": "CMOCSOFTS S.A.C."
},
"detalles": [
{
"codigo": "P001",
"descripcion": "DESARROLLO DE SOFTWARE (GRAVADO)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 100.00,
"precioUnitario": 118.00,
"valorVenta": 100.00,
"tipoAfectacionIgv": "10",
"porcentajeIgv": 18,
"igv": 18.00
},
{
"codigo": "P002",
"descripcion": "LIBROS ACADEMICOS (EXONERADO)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 50.00,
"precioUnitario": 50.00,
"valorVenta": 50.00,
"tipoAfectacionIgv": "20",
"porcentajeIgv": 0,
"igv": 0.00
},
{
"codigo": "P003",
"descripcion": "AGUA MINERAL SIN EMBALAR (INAFECTO)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 30.00,
"precioUnitario": 30.00,
"valorVenta": 30.00,
"tipoAfectacionIgv": "30",
"porcentajeIgv": 0,
"igv": 0.00
},
{
"codigo": "P004",
"descripcion": "CERVEZA ARTESANAL (CON ISC 10%)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 80.00,
"precioUnitario": 103.84,
"valorVenta": 80.00,
"tipoAfectacionIgv": "10",
"isc": 8.00,
"tipoSistemaIsc": "01",
"porcentajeIgv": 18,
"igv": 15.84
}
],
"leyendas": [
{
"codigo": "1000",
"valor": "SON TRESCIENTOS UN Y 84/100 SOLES"
}
]
}
Boleta Compleja (Mixta)
Comprobante de tipo boleta de venta (03) que incluye productos afectos, exonerados, inafectos e ISC.
{
"tipoDoc": "03",
"serie": "B001",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"moneda": "PEN",
"total": 301.84,
"totalGravado": 180.00,
"totalExonerado": 50.00,
"totalInafecto": 30.00,
"totalIsc": 8.00,
"totalIgv": 33.84,
"formaPago": "CONTADO",
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"cliente": {
"tipoDoc": "1",
"numDoc": "44556677",
"razonSocial": "JUAN PEREZ"
},
"detalles": [
{
"codigo": "P001",
"descripcion": "DESARROLLO DE SOFTWARE (GRAVADO)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 100.00,
"precioUnitario": 118.00,
"valorVenta": 100.00,
"tipoAfectacionIgv": "10",
"porcentajeIgv": 18,
"igv": 18.00
},
{
"codigo": "P002",
"descripcion": "LIBROS ACADEMICOS (EXONERADO)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 50.00,
"precioUnitario": 50.00,
"valorVenta": 50.00,
"tipoAfectacionIgv": "20",
"porcentajeIgv": 0,
"igv": 0.00
},
{
"codigo": "P003",
"descripcion": "AGUA MINERAL SIN EMBALAR (INAFECTO)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 30.00,
"precioUnitario": 30.00,
"valorVenta": 30.00,
"tipoAfectacionIgv": "30",
"porcentajeIgv": 0,
"igv": 0.00
},
{
"codigo": "P004",
"descripcion": "CERVEZA ARTESANAL (CON ISC 10%)",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 80.00,
"precioUnitario": 103.84,
"valorVenta": 80.00,
"tipoAfectacionIgv": "10",
"isc": 8.00,
"tipoSistemaIsc": "01",
"porcentajeIgv": 18,
"igv": 15.84
}
],
"leyendas": [
{
"codigo": "1000",
"valor": "SON TRESCIENTOS UN Y 84/100 SOLES"
}
]
}
Guía de Remisión Electrónica Remitente (GRE)
Utilízala para sustentar el traslado de mercancías por vía terrestre dentro del territorio nacional (tipoDoc: 09). Cumple con el formato XML Guía de SUNAT (versión 2022).
{
"tipoDoc": "09",
"serie": "T001",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"destinatario": {
"tipoDoc": "6",
"numDoc": "20440970708",
"razonSocial": "CMOCSOFTS S.A.C."
},
"envio": {
"motivoTraslado": "01",
"modalidadTraslado": "02",
"fechaTraslado": "2026-07-16",
"pesoTotal": 50.00,
"unidadMedida": "KGM",
"partida": {
"ubigueo": "150101",
"direccion": "Av. Principal 123"
},
"llegada": {
"ubigueo": "150115",
"direccion": "Av. Destino 456"
},
"transportista": {
"tipoDoc": "6",
"numDoc": "20556677889",
"razonSocial": "TRANSPORTES LOGISTICOS S.A."
}
},
"detalles": [
{
"codigo": "P001",
"descripcion": "CAJA DE MERCADERIA",
"cantidad": 10,
"unidadMedida": "NIU"
}
]
}
Nota de Crédito Electrónica
Utilízala para anular comprobantes, corregir montos por error o aplicar descuentos comerciales sobre facturas o boletas emitidas previamente (tipoDoc: 07).
{
"tipoDoc": "07",
"serie": "FC01",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"moneda": "PEN",
"total": 118.00,
"totalGravado": 100.00,
"totalIgv": 18.00,
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"cliente": {
"tipoDoc": "6",
"numDoc": "20440970708",
"razonSocial": "CMOCSOFTS S.A.C."
},
"documentoModificado": {
"tipoDoc": "01",
"numDoc": "F001-1",
"tipoNota": "01",
"motivo": "ANULACION DE LA OPERACION"
},
"detalles": [
{
"codigo": "P001",
"descripcion": "SERVICIO DE DESARROLLO DE SOFTWARE",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 100.00,
"precioUnitario": 118.00,
"valorVenta": 100.00,
"tipoAfectacionIgv": "10",
"porcentajeIgv": 18,
"igv": 18.00
}
]
}
Nota de Débito Electrónica
Utilízala para cobrar penalidades, intereses por mora o ajustar diferencias de precio en facturas o boletas ya informadas a SUNAT (tipoDoc: 08).
{
"tipoDoc": "08",
"serie": "FD01",
"correlativo": "1",
"fechaEmision": "2026-07-15T08:00:00-05:00",
"moneda": "PEN",
"total": 11.80,
"totalGravado": 10.00,
"totalIgv": 1.80,
"company": {
"ruc": "20123456789",
"razonSocial": "EMPRESA DE PRUEBA S.A.C.",
"nombreComercial": "EMPRESA DE PRUEBA",
"address": {
"ubigueo": "150135",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "SAN MARTIN DE PORRES",
"direccion": "AV. JOSE GRANDA 2992"
}
},
"cliente": {
"tipoDoc": "6",
"numDoc": "20440970708",
"razonSocial": "CMOCSOFTS S.A.C."
},
"documentoModificado": {
"tipoDoc": "01",
"numDoc": "F001-1",
"tipoNota": "01",
"motivo": "INTERES POR MORA"
},
"detalles": [
{
"codigo": "P001",
"descripcion": "SERVICIO DE DESARROLLO DE SOFTWARE",
"cantidad": 1,
"unidadMedida": "NIU",
"valorUnitario": 10.00,
"precioUnitario": 11.80,
"valorVenta": 10.00,
"tipoAfectacionIgv": "10",
"porcentajeIgv": 18,
"igv": 1.80
}
]
}
Resumen Diario de Boletas de Venta (RC)
El resumen diario sirve para enviar boletas y sus respectivas notas asociadas de forma masiva a fin de día (tipoDoc: RC).
{
"tipoDoc": "RC",
"fechaEmision": "2026-07-15",
"fechaReferencia": "2026-07-15",
"comprobantes": [
{
"tipoDoc": "03",
"serie": "B001",
"correlativo": "1",
"moneda": "PEN",
"total": 118.00,
"totalGravado": 100.00,
"totalIgv": 18.00,
"cliente": {
"tipoDoc": "1",
"numDoc": "44556677"
}
}
]
}
Comunicación de Baja (Anulación de Facturas - RA)
Estructura JSON para anular Facturas o Notas de Crédito/Débito asociadas a facturas que no fueron cobradas o presentan errores (tipoDoc: RA).
{
"tipoDoc": "RA",
"fechaEmision": "2026-07-15",
"fechaReferencia": "2026-07-15",
"comprobantes": [
{
"tipoDoc": "01",
"serie": "F001",
"correlativo": "1",
"motivo": "ERROR DE DIGITACION"
}
]
}
Endpoints de la API
La API de Facturación Electrónica proporciona los siguientes puntos de acceso. Todas las peticiones deben ser enviadas vía método HTTP POST con el payload JSON del comprobante.
1. Enviar Comprobante
Envía y firma el comprobante directamente a SUNAT sin guardar archivos locales en el servidor. Retorna las respuestas en formato Base64.
POST https://api-facturacion.cmocsofts.com/send
2. Generar y Descargar XML Firmado al Instante
Genera y firma localmente el archivo XML con el certificado digital de la empresa y lo retorna directamente como una descarga en la respuesta HTTP sin escribir archivos en disco.
POST https://api-facturacion.cmocsofts.com/get-signed-xml
3. Enviar y Descargar CDR (Respuesta SUNAT) al Instante
Envía el comprobante a SUNAT y retorna de forma directa el archivo ZIP del CDR de SUNAT como una descarga de archivo directo en la respuesta HTTP sin escribir archivos en disco.
POST https://api-facturacion.cmocsofts.com/get-cdr
Llamada de Integración en el Sistema
Selecciona el lenguaje de programación de tu sistema de ventas para ver el código de ejemplo de conexión:
<?php
// 1. Enviar comprobante (recibe respuesta JSON con XML/CDR en Base64)
function enviarAAPI($jsonPayload, $tokenCliente) {
$url = "https://api-facturacion.cmocsofts.com/send";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonPayload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $tokenCliente
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return ['code' => $httpCode, 'data' => json_decode($response, true)];
}
// 2. Descargar XML Firmado al vuelo (retorna flujo de archivo XML directamente)
function descargarXmlFirmado($jsonPayload, $tokenCliente, $outputPath) {
$url = "https://api-facturacion.cmocsofts.com/get-signed-xml";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonPayload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $tokenCliente
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
file_put_contents($outputPath, $response);
return true;
}
return false;
}
// 3. Descargar CDR ZIP al vuelo (retorna flujo de archivo ZIP de SUNAT directamente)
function descargarCdrZip($jsonPayload, $tokenCliente, $outputPath) {
$url = "https://api-facturacion.cmocsofts.com/get-cdr";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonPayload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $tokenCliente
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
file_put_contents($outputPath, $response);
return true;
}
return false;
}
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
string token = "TU_TOKEN_API_DE_64_CARACTERES";
string json = "{ ... }"; // Tu JSON del comprobante
// 1. Enviar comprobante (Retorna JSON)
string sendUrl = "https://api-facturacion.cmocsofts.com/send";
var reqSend = new HttpRequestMessage(HttpMethod.Post, sendUrl);
reqSend.Headers.Add("Authorization", "Bearer " + token);
reqSend.Content = new StringContent(json, Encoding.UTF8, "application/json");
var resSend = await client.SendAsync(reqSend);
string resJson = await resSend.Content.ReadAsStringAsync();
Console.WriteLine("Response JSON: " + resJson);
// 2. Descargar XML Firmado al vuelo (Escribe archivo .xml)
string xmlUrl = "https://api-facturacion.cmocsofts.com/get-signed-xml";
var reqXml = new HttpRequestMessage(HttpMethod.Post, xmlUrl);
reqXml.Headers.Add("Authorization", "Bearer " + token);
reqXml.Content = new StringContent(json, Encoding.UTF8, "application/json");
var resXml = await client.SendAsync(reqXml);
if (resXml.IsSuccessStatusCode) {
byte[] xmlBytes = await resXml.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("comprobante.xml", xmlBytes);
Console.WriteLine("XML descargado correctamente.");
}
// 3. Descargar CDR ZIP de SUNAT al vuelo (Escribe archivo .zip)
string cdrUrl = "https://api-facturacion.cmocsofts.com/get-cdr";
var reqCdr = new HttpRequestMessage(HttpMethod.Post, cdrUrl);
reqCdr.Headers.Add("Authorization", "Bearer " + token);
reqCdr.Content = new StringContent(json, Encoding.UTF8, "application/json");
var resCdr = await client.SendAsync(reqCdr);
if (resCdr.IsSuccessStatusCode) {
byte[] zipBytes = await resCdr.Content.ReadAsByteArrayAsync();
File.WriteAllBytes("R-comprobante.zip", zipBytes);
Console.WriteLine("CDR ZIP descargado correctamente.");
}
}
}
Imports System.IO
Imports System.Net.Http
Imports System.Text
Module Program
Private ReadOnly client As New HttpClient()
Sub Main()
EjecutarAPI().Wait()
End Sub
Async Function EjecutarAPI() As Task
Dim token As String = "TU_TOKEN_API_DE_64_CARACTERES"
Dim json As String = "{ ... }"
' 1. Enviar comprobante
Dim sendUrl As String = "https://api-facturacion.cmocsofts.com/send"
Dim reqSend As New HttpRequestMessage(HttpMethod.Post, sendUrl)
reqSend.Headers.Add("Authorization", "Bearer " & token)
reqSend.Content = New StringContent(json, Encoding.UTF8, "application/json")
Dim resSend As HttpResponseMessage = Await client.SendAsync(reqSend)
Dim resJson As String = Await resSend.Content.ReadAsStringAsync()
Console.WriteLine("Response JSON: " & resJson)
' 2. Descargar XML Firmado
Dim xmlUrl As String = "https://api-facturacion.cmocsofts.com/get-signed-xml"
Dim reqXml As New HttpRequestMessage(HttpMethod.Post, xmlUrl)
reqXml.Headers.Add("Authorization", "Bearer " & token)
reqXml.Content = New StringContent(json, Encoding.UTF8, "application/json")
Dim resXml As HttpResponseMessage = Await client.SendAsync(reqXml)
If resXml.IsSuccessStatusCode Then
Dim xmlBytes As Byte() = Await resXml.Content.ReadAsByteArrayAsync()
File.WriteAllBytes("comprobante.xml", xmlBytes)
Console.WriteLine("XML descargado.")
End If
' 3. Descargar CDR ZIP
Dim cdrUrl As String = "https://api-facturacion.cmocsofts.com/get-cdr"
Dim reqCdr As New HttpRequestMessage(HttpMethod.Post, cdrUrl)
reqCdr.Headers.Add("Authorization", "Bearer " & token)
reqCdr.Content = New StringContent(json, Encoding.UTF8, "application/json")
Dim resCdr As HttpResponseMessage = Await client.SendAsync(reqCdr)
If resCdr.IsSuccessStatusCode Then
Dim zipBytes As Byte() = Await resCdr.Content.ReadAsByteArrayAsync()
File.WriteAllBytes("R-comprobante.zip", zipBytes)
Console.WriteLine("CDR ZIP descargado.")
End If
End Function
End Module
import java.io.FileOutputStream;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
private static final HttpClient client = HttpClient.newHttpClient();
public static void main(String[] args) {
try {
String token = "TU_TOKEN_API_DE_64_CARACTERES";
String json = "{ ... }";
// 1. Enviar comprobante
String sendUrl = "https://api-facturacion.cmocsofts.com/send";
HttpRequest reqSend = HttpRequest.newBuilder()
.uri(URI.create(sendUrl))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + token)
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> resSend = client.send(reqSend, HttpResponse.BodyHandlers.ofString());
System.out.println("Response: " + resSend.body());
// 2. Descargar XML Firmado
String xmlUrl = "https://api-facturacion.cmocsofts.com/get-signed-xml";
HttpRequest reqXml = HttpRequest.newBuilder()
.uri(URI.create(xmlUrl))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + token)
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<byte[]> resXml = client.send(reqXml, HttpResponse.BodyHandlers.ofByteArray());
if (resXml.statusCode() == 200) {
try (FileOutputStream fos = new FileOutputStream("comprobante.xml")) {
fos.write(resXml.body());
}
System.out.println("XML guardado.");
}
// 3. Descargar CDR ZIP
String cdrUrl = "https://api-facturacion.cmocsofts.com/get-cdr";
HttpRequest reqCdr = HttpRequest.newBuilder()
.uri(URI.create(cdrUrl))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer " + token)
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<byte[]> resCdr = client.send(reqCdr, HttpResponse.BodyHandlers.ofByteArray());
if (resCdr.statusCode() == 200) {
try (FileOutputStream fos = new FileOutputStream("R-comprobante.zip")) {
fos.write(resCdr.body());
}
System.out.println("CDR ZIP guardado.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Formatos de Respuesta de la API
Respuestas estructuradas según el tipo de documento procesado por SUNAT:
A) Respuesta para Factura / Boleta / Nota (Síncrona)
{
"success": true,
"message": "Comprobante enviado y aceptado por SUNAT.",
"hash": "3W6Z.../mY=",
"xml_base64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4...",
"cdr_base64": "UEsDBBQAAAAIAIiWkF...",
"filename": "01-F001-1",
"cdr": {
"code": "0",
"description": "La Factura numero F001-1, ha sido aceptada",
"notes": []
}
}
B) Respuesta para Resumen Diario / Bajas (Asíncrona)
{
"success": true,
"message": "Resumen enviado correctamente.",
"hash": "RC-20260715-1",
"xml_base64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz...",
"filename": "RC-20260715-1",
"ticket": "1784124681824"
}
C) Respuesta para Guía de Remisión (Asíncrona)
{
"success": true,
"message": "Guía de Remisión firmada localmente y enviada a la API REST de SUNAT.",
"hash": "bB3m...1c=",
"xml_base64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz...",
"filename": "09-T001-1",
"ticket": "9ca2f3b9-a292-491b-8395-e83c79a835a6"
}
D) Respuesta de Error o Excepción (success = false)
{
"success": false,
"message": "Mensaje descriptivo del error o validación fallida.",
"error": "Detalle técnico del error (Ej: Conexión rechazada / Token inválido / Error 2017 - El número de RUC de la firma no coincide con el RUC de la empresa/company)"
}
🔐 Tutorial: Cómo Crear tu Usuario Secundario en SUNAT SOL
Por motivos de seguridad tributaria, la SUNAT exige utilizar un Usuario Secundario SOL (con permisos específicos para Facturación Electrónica CPE) para enviar comprobantes mediante la API. Sigue estos sencillos pasos para crearlo en el portal oficial de la SUNAT:
Ingresar a SUNAT Operaciones en Línea (SOL)
Ingresa al sitio oficial de la SUNAT (e-menu.sunat.gob.pe) e inicia sesión con el RUC, Usuario Principal y Clave SOL Principal de la empresa.
Acceder a Administración de Usuarios Secundarios
En la barra superior derecha, haz clic sobre el nombre del usuario o empresa y selecciona la opción "Administración de Usuarios Secundarios" ➔ "Crear Usuario".
Definir Usuario y Clave SOL
Ingresa el DNI/Documento de la persona autorizada, asigna un Nombre de Usuario (ejemplo: SISTEMAS o FACTURA) y define su Clave SOL.
Asignar Perfil / Permisos de Facturación (CPE)
Haz clic en el botón "Asignar Opciones" y despliega la ruta:
Marca todas las casillas: Emisión, Envío, Consulta y Anulación de Facturas, Boletas, Notas y Guías de Remisión. Haz clic en Grabar.
Ingresar Datos en la API
Ingresa a la sección "Panel Principal" de esta API, edita tu empresa y coloca el Usuario SOL Secundario (ej: SISTEMAS) y su Clave SOL. ¡Listo! La SUNAT autorizará tus envíos síncronos.
🔍 API de Consulta RUC / DNI (Padrón SUNAT)
Servicio REST independiente que consulta la base de datos local del Padrón Reducido de SUNAT para validar y obtener información de contribuyentes por RUC (razón social, estado, condición, domicilio fiscal) o DNI (apellidos y nombres), además de búsquedas por nombre. Disponible por separado de la facturación electrónica, con planes Free (límite de consultas mensual configurable) y Premium (consultas ilimitadas).
🔑 Obtener tu API Key
Al registrarte con tu correo se genera automáticamente tu API Key del plan Free. Encuéntrala en el menú lateral ➔ Mi Cuenta ➔ API de Consulta RUC / DNI, junto con tu plan y las consultas restantes del mes (botón Copiar).
🌐 Autenticación y Base URL
Envía tu API Key en el encabezado X-API-Key o como parámetro ?key=.
- Desarrollo:
http://localhost:8080/consulta-ruc-dni - Producción:
https://consultarucdni.cmocsofts.com
🔎 Consultar un RUC
GET https://consultarucdni.cmocsofts.com/ruc?ruc=20123456789&key=TU_API_KEY
{
"success": true,
"data": {
"ruc": "20123456789",
"razon_social": "EMPRESA DE PRUEBA S.A.C.",
"prico": false,
"estado": "ACTIVO",
"condicion": "HABIDO",
"ubigeo": "150101",
"departamento": "LIMA",
"provincia": "LIMA",
"distrito": "LIMA",
"direccion": "AV. PRUEBA 123"
}
}
🪪 Consultar un DNI
GET https://consultarucdni.cmocsofts.com/dni?dni=40000001&key=TU_API_KEY
{
"success": true,
"data": {
"dni": "40000001",
"ruc": "10400000013",
"apellido_paterno": "EVARISTO",
"apellido_materno": "JULCA",
"nombres": "MILAGRITOS JANETT",
"nombre_completo": "EVARISTO JULCA MILAGRITOS JANETT",
"estado": "ACTIVO",
"condicion": "HABIDO"
}
}
🔤 Buscar por Nombre o Razón Social
GET https://consultarucdni.cmocsofts.com/buscar?q=EMPRESA&limit=10&key=TU_API_KEY
📊 Consultar tu Plan y Consultas Restantes
GET https://consultarucdni.cmocsofts.com/plan?key=TU_API_KEY
{
"success": true,
"data": {
"nombre": "Cliente Demo",
"plan": "free",
"plan_descripcion": "Gratis (consultas limitadas al mes)",
"limite_mensual": 500,
"consultas_restantes_mes": 493
}
}
📋 Planes
| Plan | Precio | Consultas |
|---|---|---|
| Free | Gratis | 500 al mes. Al superar el límite responde HTTP 429. |
| Premium | S/. 25.00 / mes | Ilimitadas. |
El límite del plan Free se configura desde el Panel de Administración ➔ Configuración Global ➔ Límite consultas Free RUC/DNI y se aplica automáticamente en el servicio.