> ## Documentation Index
> Fetch the complete documentation index at: https://docs.filexpress.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Planillas (v2)

> Planillas con sucursal: consultar por sucursal y asignar la sucursal de una planilla

**Permiso requerido:** `hr.payrolls` (consulta) · `hr.payrolls.write` ([asignar sucursal](#asignar-sucursal))

Las lecturas son las mismas que en [v1](https://docs.filexpress.app/docs/api/rrhh/planillas.md) (solo planillas **procesadas** o **pagadas**) y agregan `branch_id` en cada planilla. La asignación de sucursal solo existe en v2 (`https://api.filexpress.app/api/external/v2`).

> [!NOTE]
>
> **Planillas por sucursal** es un ajuste de RRHH del negocio (RRHH → Planillas). Con el ajuste activo, cada planilla pertenece a una sucursal y los indicadores por sucursal (por ejemplo, **Ganancias netas** del inicio) solo cuentan las planillas de esa sucursal. Con el ajuste apagado, `branch_id` puede ser `null` y la planilla cuenta para todo el negocio.

## Listar planillas

```http theme={null}
GET /hr/payrolls?start_date=2026-10-01&end_date=2026-10-31&branch_id=7c1d4e2a-9b3f-4a6e-8d5c-0f2a1b3c4d5e
```

| Parámetro | Requerido | Descripción |
| - | - | - |
| `start_date`, `end_date` | Sí | Planillas cuyo período se cruza con el rango (máximo 370 días). |
| `status` | No | `processed` o `paid`. |
| `branch_id` | No | Solo las planillas de esa sucursal. |

```json theme={null}
{
  "status": true,
  "data": [
    {
      "id": "5f0e8d1a-3c2b-4a7e-9d4f-6b1c2a3e4f50",
      "name": "Primera quincena octubre 2026",
      "start_date": "2026-10-01",
      "end_date": "2026-10-15",
      "status": "paid",
      "employees": 12,
      "total_net_amount": 4820.35,
      "branch_id": "7c1d4e2a-9b3f-4a6e-8d5c-0f2a1b3c4d5e",
      "cost_center_id": null
    }
  ]
}
```

## Consultar planilla

```http theme={null}
GET /hr/payrolls/{id}
```

Misma respuesta que en [v1](https://docs.filexpress.app/docs/api/rrhh/planillas.md#detalle-de-una-planilla), con `branch_id` a nivel de planilla.

## Asignar sucursal

```http theme={null}
PUT /hr/payrolls/{id}/branch
```

```json theme={null}
{ "branch_id": "7c1d4e2a-9b3f-4a6e-8d5c-0f2a1b3c4d5e" }
```

Envía `branch_id: null` para dejar la planilla como general del negocio (solo si el negocio no exige sucursal).

```json theme={null}
{
  "status": true,
  "data": { "id": "5f0e8d1a-3c2b-4a7e-9d4f-6b1c2a3e4f50", "branch_id": "7c1d4e2a-9b3f-4a6e-8d5c-0f2a1b3c4d5e" }
}
```

| Respuesta | `code` | Cuándo |
| - | - | - |
| `404` | `payroll_not_found` | La planilla no existe o es de otro negocio. |
| `422` | `validation_error` | Falta el campo `branch_id` (debe enviarse, aunque sea `null`). |
| `422` | `invalid_branch` | La sucursal no pertenece al negocio, o el negocio exige sucursal y enviaste `null`. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.