Skip to content

Parámetros del Request

El request debe enviarse en formato JSON en el body de la petición POST:

{
"periodo": { ... },
"nivelCalculo": "empleado|proyecto",
"escenario": "mejor|peor|promedio",
"porcentajeNovedades": 0-100,
"porcentajesPersonalizados": { ... },
"perfiles": [ ... ]
}

Define el mes y año para el cual se calculará la nómina.

CampoTipoRequeridoDescripciónEjemplo
mesnumberMes del cálculo (1-12)1
anionumberAño del cálculo (≥ 2025)2025

Ejemplo:

"periodo": {
"mes": 1,
"anio": 2025
}

Define el nivel de agregación de los resultados.

ValorDescripción
empleadoRetorna cálculos individuales por cada empleado
proyectoAgrupa resultados por proyecto y genera totales por proyecto

Ejemplo:

"nivelCalculo": "proyecto"

Define el tipo de simulación que deseas realizar.

ValorDescripciónUso Recomendado
mejorMínimo costo: Solo salario base con posibles ausentismos (incapacidades, licencias, suspensiones)Presupuesto optimista
peorMáximo costo: Incluye máximo de horas extras, recargos y bonificaciones permitidos legalmentePresupuesto pesimista o worst-case
promedioCosto realista: Escenario intermedio configurable mediante porcentajeNovedadesPresupuesto más probable

Ejemplo:

"escenario": "promedio"

Controla la aplicación de novedades solo en escenario promedio.

TipoRangoDefaultDescripción
number0-1000Porcentaje de intensidad o cobertura de novedades

Comportamiento según nivelCalculo:

El porcentaje controla la intensidad de las novedades del empleado individual:

  • 0%: Sin novedades
  • 50%: Mitad de probabilidades y cantidades de novedades
  • 100%: Probabilidades y cantidades normales

Ejemplo:

{
"nivelCalculo": "empleado",
"escenario": "promedio",
"porcentajeNovedades": 50
}

Con 50%, si normalmente se generarían 10-15 horas extras, se generarán 5-8 horas.

El porcentaje controla cuántos empleados del proyecto tendrán novedades:

  • 0%: Ningún empleado tiene novedades
  • 30%: Aproximadamente 30% de empleados tendrán novedades
  • 100%: Todos los empleados pueden tener novedades

Ejemplo:

{
"nivelCalculo": "proyecto",
"escenario": "promedio",
"porcentajeNovedades": 30,
"perfiles": [ /* 10 empleados */ ]
}

Resultado: ~3 empleados tendrán novedades aleatorias, 7 solo tendrán salario base.


Permite sobrescribir los porcentajes legales por defecto. Útil para empresas con convenios especiales.

CampoTipoDefaultDescripción
saludEmpleadonumber4.0% Salud empleado
saludEmpleadornumber8.5% Salud empleador
pensionEmpleadonumber4.0% Pensión empleado
pensionEmpleadornumber12.0% Pensión empleador
senanumber2.0% SENA
icbfnumber3.0% ICBF
cajaCompensacionnumber4.0% Caja de Compensación
cesantiasnumber8.33% Cesantías
interesesCesantiasnumber1.0% Intereses cesantías
primaServiciosnumber8.33% Prima de servicios
vacacionesnumber4.17% Vacaciones

Formato: Los porcentajes se envían como decimales (ej: 4% = 0.04)

Ejemplo:

"porcentajesPersonalizados": {
"saludEmpleado": 0.04,
"saludEmpleador": 0.085,
"pensionEmpleado": 0.04,
"pensionEmpleador": 0.12,
"sena": 0.02,
"icbf": 0.03,
"cajaCompensacion": 0.04,
"cesantias": 0.0833,
"interesesCesantias": 0.01,
"primaServicios": 0.0833,
"vacaciones": 0.0417
}

Array de objetos con la información de cada empleado a calcular.

Límites:

  • Mínimo: 1 perfil
  • Máximo: 1,000 perfiles por petición
{
"idEmpleado": "EMP001",
"idProyecto": "PROY001",
"tipoContrato": "indefinido",
"salarioBasico": 3000000,
"tipoSalario": "no_integral",
"diasContratados": 30,
"porcentajeJornada": 100,
"aplicaAuxilioTransporte": true,
"nivelRiesgoArl": 1,
"novedades": { ... }
}
CampoTipoRequeridoDescripciónEjemplo
idEmpleadostringIdentificador único del empleado"EMP001"
idProyectostringNoIdentificador del proyecto (solo para nivelCalculo: "proyecto")"PROY001"
tipoContratostringTipo de contrato: termino_fijo, indefinido, obra_labor, prestacion_servicios"indefinido"
salarioBasiconumberSalario mensual básico en COP (≥ SMMLV proporcional)3000000
tipoSalariostringTipo de salario: integral o no_integral"no_integral"
diasContratadosnumberDías contratados en el mes (1-30)30
porcentajeJornadanumberNoPorcentaje de jornada laboral (1-100). Default: 100100
aplicaAuxilioTransportebooleanNoSi aplica auxilio de transporte. Default: truetrue
nivelRiesgoArlnumberNoNivel de riesgo ARL (1-5). Default: 11
novedadesobjectNoNovedades específicas del empleado (ver sección siguiente){}

Permite especificar novedades laborales concretas para un empleado. Estas novedades tienen prioridad sobre las simuladas por el escenario.

"novedades": {
"horasExtras": { ... },
"recargos": { ... },
"bonificaciones": [ ... ],
"incapacidad": { ... },
"licencia": { ... },
"suspension": { ... }
}
"horasExtras": {
"diurnas": 10,
"nocturnas": 5,
"diurnasFestivas": 2,
"nocturnasFestivas": 1
}
CampoRecargoDescripción
diurnas125%Horas extras diurnas ordinarias (6am-10pm)
nocturnas175%Horas extras nocturnas (10pm-6am)
diurnasFestivas205%Horas extras diurnas en festivos/dominicales
nocturnasFestivas255%Horas extras nocturnas en festivos/dominicales
"recargos": {
"nocturno": 20,
"dominicalFestivoDiurno": 8,
"dominicalFestivoNocturno": 4
}
CampoRecargoDescripción
nocturno35%Trabajo ordinario nocturno (10pm-6am)
dominicalFestivoDiurno180%Trabajo dominical/festivo diurno (6am-10pm)
dominicalFestivoNocturno215%Trabajo dominical/festivo nocturno (10pm-6am)
"bonificaciones": [
{
"concepto": "Bonificación por productividad",
"tipo": "salarial",
"monto": 500000
},
{
"concepto": "Auxilio de alimentación",
"tipo": "no_salarial",
"monto": 300000
}
]
CampoTipoDescripción
conceptostringDescripción de la bonificación
tipostringsalarial (impacta IBC) o no_salarial
montonumberValor en COP
"incapacidad": {
"dias": 5,
"tipo": "eps"
}
CampoValoresDescripción
dias1-30Cantidad de días de incapacidad
tipoeps o arlOrigen de la incapacidad

Pago según tipo:

  • EPS (Común): Empresa paga 100% primeros 2 días, EPS paga 66.67% desde día 3
  • ARL (Laboral): ARL paga 100% desde día 1
"licencia": {
"tipo": "no_remunerada",
"dias": 3
}
TipoDíasDescripción
maternidadAuto18 semanas (requiere fechaInicio)
paternidadAuto14 días
lutoAuto5 días
calamidadVariableDías según autorización
no_remuneradaVariableSin pago, reduce salario
"suspension": {
"dias": 2,
"tipo": "disciplinaria"
}
CampoValoresDescripción
dias1-30Días de suspensión
tipodisciplinaria o administrativaTipo de suspensión

En la siguiente sección encontrarás ejemplos completos de código PHP para consumir el endpoint en diferentes escenarios.