Validación CPE
Valida el estado de comprobantes de pago electrónicos (facturas, boletas, notas) en SUNAT.
Validación CPE
Consulta el estado de un Comprobante de Pago Electrónico (CPE) directamente en los servicios de SUNAT.
Endpoint
POST /api/cpe/validar
Headers
| Header | Requerido | Descripción |
|---|---|---|
X-API-KEY | Sí | Tu API Key de KipuDev |
Content-Type | Sí | application/json |
Body de la solicitud
{
"rucEmisor": "20123456789",
"tipoComprobante": "01",
"serie": "F001",
"numero": 12345,
"rucSolicitante": "20987654321",
"usuarioSol": "MODDATOS",
"claveSol": "CLAVE123"
}
Parámetros
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
rucEmisor | string | Sí | RUC del emisor del comprobante (11 dígitos) |
tipoComprobante | string | Sí | Código del tipo de comprobante |
serie | string | Sí | Serie del comprobante (ej: F001, B001) |
numero | number | Sí | Número correlativo del comprobante |
rucSolicitante | string | Sí | Tu RUC para la consulta |
usuarioSol | string | Sí | Usuario secundario de SUNAT |
claveSol | string | Sí | Clave del usuario secundario |
Tipos de comprobante
| Código | Tipo |
|---|---|
01 | Factura |
03 | Boleta de Venta |
07 | Nota de Crédito |
08 | Nota de Débito |
Credenciales SOL
Este endpoint requiere credenciales de usuario secundario de SUNAT (Clave SOL). Nunca uses tu clave principal.
Ejemplo de solicitud
curl -X POST "https://api.kipudev.com/api/cpe/validar" \
-H "X-API-KEY: tu-api-key" \
-H "Content-Type: application/json" \
-d '{
"rucEmisor": "20123456789",
"tipoComprobante": "01",
"serie": "F001",
"numero": 12345,
"rucSolicitante": "20987654321",
"usuarioSol": "MODDATOS",
"claveSol": "CLAVE123"
}'
Respuesta exitosa
{
"codigo": "0",
"mensaje": "La consulta del comprobante ha sido aceptada",
"estado": "Aceptado",
"esValido": true
}
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
codigo | string | Código de respuesta de SUNAT |
mensaje | string | Mensaje descriptivo |
estado | string | Estado del comprobante |
esValido | boolean | Indica si el CPE es válido |
Códigos de estado
| Código | Estado | Descripción |
|---|---|---|
0 | Aceptado | El comprobante existe y está aceptado |
2 | Anulado | El comprobante fue anulado |
4 | En Proceso | Aún no ha sido procesado |
98 | No Existe | No se encontró el comprobante |
99 | Error | Error en la consulta |
Estados posibles
| Estado | Descripción |
|---|---|
Aceptado | CPE válido y registrado en SUNAT |
Anulado | CPE fue dado de baja |
No Existe | CPE no encontrado en SUNAT |
En Proceso | CPE pendiente de procesamiento |
Error | Error al consultar |
Errores
| Código | Error | Descripción |
|---|---|---|
| 400 | Datos incompletos | Faltan campos requeridos |
| 400 | RUC inválido | RUC mal formado |
| 401 | Credenciales SOL inválidas | Usuario o clave incorrectos |
| 500 | Error SUNAT | El servicio de SUNAT no responde |
{
"error": "Credenciales SOL inválidas",
"code": "INVALID_SOL_CREDENTIALS"
}
Si ingresas credenciales SOL incorrectas múltiples veces, SUNAT puede bloquear temporalmente tu usuario.
Ejemplo en código
interface CpeRequest {
rucEmisor: string;
tipoComprobante: "01" | "03" | "07" | "08";
serie: string;
numero: number;
rucSolicitante: string;
usuarioSol: string;
claveSol: string;
}
interface CpeResponse {
codigo: string;
mensaje: string;
estado: string;
esValido: boolean;
}
async function validarCpe(data: CpeRequest): Promise<CpeResponse> {
const response = await fetch("https://api.kipudev.com/api/cpe/validar", {
method: "POST",
headers: {
"X-API-KEY": process.env.KIPUDEV_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
if (!response.ok) {
const error = await response.json();
throw new Error(error.error);
}
return response.json();
}
// Uso
const resultado = await validarCpe({
rucEmisor: "20123456789",
tipoComprobante: "01",
serie: "F001",
numero: 12345,
rucSolicitante: "20987654321",
usuarioSol: "MODDATOS",
claveSol: "CLAVE123",
});
if (resultado.esValido) {
console.log("✅ CPE válido:", resultado.mensaje);
} else {
console.log("❌ CPE no válido:", resultado.estado);
}
Rate Limiting
Este endpoint consume 1 consulta de tu cuota diaria.
La validación de CPE depende de los servicios de SUNAT. En horarios de alta demanda, la respuesta puede tardar algunos segundos.
Casos de uso
- Recepción de facturas: Validar que las facturas recibidas sean legítimas
- Auditoría: Verificar comprobantes antes de registrarlos contablemente
- Sistemas ERP: Integración automática de validación de CPEs