> ## Documentation Index
> Fetch the complete documentation index at: https://developers.pontua.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Fechamento

> Fechamento de período mensal/quinzenal — após concluído, registros e ajustes do período ficam congelados. Reabertura controlada.

**Fechamento** é o ato de encerrar um período de trabalho (mensal,
quinzenal) — a partir desse momento, registros de ponto, ajustes e
alterações no banco de horas daquele período ficam **congelados**.
Folha pode ser exportada com confiança de que valores não vão mudar.

Trabalhar **com** o fechamento é boa prática para integradores: gerar
relatórios e exportar folha **só após o fechamento concluído** evita
divergências entre sistemas.

## Por que fechamento existe

<CardGroup cols={2}>
  <Card title="Imutabilidade" icon="lock">
    Período fechado não aceita novos registros ou ajustes sem reabertura
    explícita. Garante que a folha exportada bate com o que está no
    Pontua.
  </Card>

  <Card title="Auditoria Portaria 671" icon="shield-check">
    A Portaria 671 exige trilha auditável de modificações. Fechamento
    é o marco temporal que separa "em revisão" de "definitivo".
  </Card>

  <Card title="Workflow de RH" icon="list-check">
    Antes de fechar, RH revisa ocorrências (atrasos, faltas), aprova
    ajustes pendentes, ajusta exceções de turno. Fechamento é
    "já revisei tudo".
  </Card>

  <Card title="Reabertura controlada" icon="unlock">
    Se erro descoberto pós-fechamento, RH pode reabrir o período (com
    auditoria de quem reabriu e por que). Mas é evento raro — implica
    re-emitir folha.
  </Card>
</CardGroup>

## Endpoints

| Método | Rota                         | Descrição                                          |
| ------ | ---------------------------- | -------------------------------------------------- |
| GET    | `/fechamentos`               | Lista fechamentos (com filtros por período/status) |
| GET    | `/fechamentos/{id}`          | Detalhe                                            |
| POST   | `/fechamentos`               | Cria novo fechamento (inicia processo)             |
| PATCH  | `/fechamentos/concluir/{id}` | Conclui fechamento (congelamento ativo)            |
| PATCH  | `/fechamentos/cancelar/{id}` | Cancela/reabre fechamento                          |

Schema completo em [Referência da API](/api-reference#tag/Fechamento).

## Estados de fechamento

```
PROCESSANDO ──┬── CONCLUIDO  (período congelado)
              │
              └── CANCELADO  (revertido para aberto)
```

## Fluxos típicos

### Verificar antes de exportar folha

```javascript theme={null}
async function exportarFolhaSeFechado(token, mes) {
  // 1. Listar fechamentos do mês
  const { resultados } = await fetch(
    `https://api.pontua.com.br/fechamentos?` +
    `dataInicio=${mes}-01&dataFim=${mes}-31`,
    { headers: { Authorization: `Bearer ${token}` } },
  ).then((r) => r.json())

  const fechamento = resultados[0]

  if (!fechamento || fechamento.status !== 'CONCLUIDO') {
    throw new Error(`Mês ${mes} não está fechado — exportação prematura.`)
  }

  // 2. OK, fechado — disparar export
  return fetch('https://api.pontua.com.br/payment-sheet/export', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${token}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ /* ... */ }),
  })
}
```

### Sync diário com BI — pular se período aberto

```javascript theme={null}
async function syncBI(token, datas) {
  for (const data of datas) {
    // Se a data está em fechamento aberto, dados podem mudar — pular
    const fechamento = await getFechamentoDaData(token, data)
    if (fechamento?.status !== 'CONCLUIDO') {
      console.log(`Skip ${data}: fechamento ainda aberto`)
      continue
    }

    // Período fechado, dados estáveis — sync OK
    await syncFrequenciaDoDia(token, data)
  }
}
```

### Reabrir período para correção (raro)

```javascript theme={null}
async function reabrirFechamento(token, fechamentoId, motivo) {
  // CUIDADO: reabertura invalida exports/relatórios já gerados.
  // Sempre comunique RH e folha externa antes.
  await fetch(
    `https://api.pontua.com.br/fechamentos/cancelar/${fechamentoId}`,
    {
      method: 'PATCH',
      headers: {
        Authorization: `Bearer ${token}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ motivo }),
    },
  )
}
```

## Gotchas conhecidos

<Warning title="Cancelar fechamento NÃO reverte exports automáticos">
  Se você gerou export de folha de um fechamento que depois foi
  reaberto, o TXT já entregue à folha externa **continua válido lá** —
  precisa cancelar manualmente do lado do sistema downstream também.
</Warning>

<Warning title="Tentar criar registro em período fechado falha">
  `POST /registro-ponto` em data dentro de período `CONCLUIDO`
  retorna `422` ou similar. Use o fluxo de [Ajustes](/referencia/ajustes-e-motivos)
  com aprovação para casos legítimos pós-fechamento.
</Warning>

<Warning title="Fechamento parcial pode existir (por departamento, por colaborador)">
  Algumas UNs operam fechamento granular (ex.: comercial fecha dia 25,
  operações dia 5). Liste fechamentos com filtros para descobrir o
  status efetivo do período/colaborador antes de assumir "está fechado".
</Warning>

<Warning title="Reabertura é evento auditável">
  Toda reabertura fica registrada com usuário, timestamp e motivo.
  Em fiscalização do MTE, reaberturas frequentes podem ser
  questionadas. Use com parcimônia.
</Warning>

## Veja também

* [Lidar com fechamento](/guias-praticas/lidar-com-fechamento) — guia prático
* [Folha de Pagamento](/referencia/folha-de-pagamento) — exportar só após fechado
* [Relatórios](/referencia/relatorios) — relatórios oficiais ficam imutáveis após fechamento
* [Ajustes e Motivos](/referencia/ajustes-e-motivos) — fluxo de correção pós-fechamento
