# Recalcular (/docs/developers/api-reference/payroll-calculation/recalculate)

## Descripcion general [#descripcion-general]

Este endpoint es el **recálculo maestro**: toma los cambios de **plantilla** ocurridos después de abrir el periodo, los incorpora a la corrida y recalcula una sola vez.

La asistencia **no** necesita un paso de sincronización: el cálculo lee el registro global **en vivo**, así que cualquier incidencia capturada ya se toma en cuenta al recalcular. Lo que sí hay que aplicar son los cambios de plantilla: empleados **agregados**, **eliminados** y **modificados** (salario, contrato, calendario) desde que se abrió el periodo:

1. Aplica los cambios de plantilla.
2. Ejecuta el cálculo una vez, leyendo el registro de asistencia vigente.

Solo aplica a periodos en estado `calculated`. No lleva cuerpo. Requiere que la API key tenga el permiso **Calcular nómina**.

## Endpoint [#endpoint]

`POST https://app.integranom.com/api/v1/payroll-calendars/{payroll_calendar_number}/periods/{period_number}/recalculate`

**Path params:**

* `payroll_calendar_number` — entero positivo, el número del calendario.
* `period_number` — el periodo, con el formato `{fiscal_year}-{sequence_number}` (por ejemplo `2026-14`).

## Recalcula con los cambios pendientes [#recalcula-con-los-cambios-pendientes]

***

La respuesta te dice **qué se aplicó**: cuántos empleados se modificaron, se agregaron o se quitaron de la corrida.

## Campos de la respuesta [#campos-de-la-respuesta]

| Campo                | Tipo    | Descripcion                                                     |
| -------------------- | ------- | --------------------------------------------------------------- |
| `period_number`      | string  | El periodo recalculado.                                         |
| `payroll_run_number` | integer | Número de la corrida.                                           |
| `status`             | string  | Siempre `calculated` cuando la llamada tiene éxito.             |
| `entries_count`      | integer | Empleados calculados tras aplicar los cambios.                  |
| `employee_changes`   | objeto  | Cambios de plantilla aplicados: `modified`, `added`, `removed`. |

Si no había nada pendiente, los contadores llegan en `0`: la corrida simplemente se recalcula, leyendo la asistencia vigente.

**cURL**

```bash
curl -X POST "https://app.integranom.com/api/v1/payroll-calendars/1/periods/2026-14/recalculate" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"period_number": "2026-14",
"payroll_run_number": 14,
"status": "calculated",
"entries_count": 279,
"employee_changes": {
  "modified": 3,
  "added": 2,
  "removed": 0
}
}
```

## Errores [#errores]

| Status | Código                            | Causa                                                                                                                                                                                                                                       |
| ------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | —                                 | `payroll_calendar_number` o `period_number` inválidos en la URL.                                                                                                                                                                            |
| `401`  | —                                 | API key ausente o inválida.                                                                                                                                                                                                                 |
| `403`  | —                                 | La API key no tiene el permiso **Calcular nómina**.                                                                                                                                                                                         |
| `404`  | —                                 | El calendario o el periodo no existen en esta organización.                                                                                                                                                                                 |
| `409`  | `NOT_CALCULATED`                  | El periodo no está calculado. Córrelo primero con [calcular](/docs/developers/api-reference/payroll-calculation/calculate).                                                                                                                 |
| `409`  | `CLOSED`                          | El periodo está cerrado y no admite recálculos.                                                                                                                                                                                             |
| `409`  | `CANCELLED`                       | La corrida del periodo fue cancelada y no admite recálculos.                                                                                                                                                                                |
| `409`  | `NO_EMPLOYEES`                    | Las bajas pendientes dejarían la corrida sin empleados.                                                                                                                                                                                     |
| `409`  | `OUT_OF_NORM`                     | Alguno de los empleados agregados o modificados tiene un contrato con prestaciones **por debajo del mínimo de ley**. La respuesta incluye `norm_violations`.                                                                                |
| `409`  | `CATALOG_MISSING`                 | Falta configurar un catálogo fiscal requerido para el periodo.                                                                                                                                                                              |
| `409`  | `NO_SNAPSHOT`                     | La corrida no tiene una configuración congelada, así que no puede recalcularse.                                                                                                                                                             |
| `409`  | `RETRO_STATE_CHANGED`             | Un ajuste retroactivo cambió durante el cálculo. Vuelve a intentar.                                                                                                                                                                         |
| `409`  | `HOUSING_INSURANCE_STATE_CHANGED` | Otra nómina del bimestre cambió el seguro de vivienda INFONAVIT durante el cálculo. Vuelve a intentar.                                                                                                                                      |
| `409`  | `CONCURRENT_CALCULATION`          | Otro cálculo de nómina de los mismos empleados está en curso. Vuelve a intentar en un momento.                                                                                                                                              |
| `409`  | `NOT_ONE_EMPLOYMENT`              | La corrida es un finiquito con más de un empleado; un finiquito cubre a uno solo.                                                                                                                                                           |
| `409`  | `NOT_CLOSING_PERIOD`              | La corrida tiene activado el ajuste anual de ISR, pero no es el último periodo ordinario del ejercicio. Desactívalo en las opciones de la corrida.                                                                                          |
| `409`  | `NO_ANNUAL_ISR_TARIFF`            | La corrida aplica el ajuste anual de ISR, no está configurada la tarifa anual de ISR del ejercicio y al menos un empleado no está excluido por tipo de trabajador, no estar marcado para el ajuste, año incompleto o solicitud por escrito. |

Las validaciones se ejecutan **antes** de tocar la corrida: si alguna falla, la corrida queda intacta (nunca a medio aplicar).