Skip to main content
Banco de Horas é o mecanismo legal de compensação previsto na CLT Art. 59 (Lei 13.467/2017) — horas extras realizadas em determinado dia podem ser compensadas por folgas em outro, em vez de pagamento direto em folha. Pontua suporta os 3 tipos legais: Anual, Semestral e Mensal.

Contexto regulatório (CLT Art. 59)

Anual

Compensação em até 12 meses. Exige acordo coletivo (sindicato). Banco mais flexível, mas regulamentação mais rigorosa.

Semestral

Compensação em até 6 meses. Pode ser por acordo individual escrito.

Mensal

Compensação dentro do mesmo mês (Art. 59 §6º). Acordo individual suficiente. Modalidade mais simples e comum.

Quitação

5 formas legais: Compensação (folga), Abono (paga em folha), Rescisão (na demissão), Prescrição (acordo expirou), Caducidade (período legal vencido).
Tipos não se misturam. Um colaborador pode ter ciclos Anual e Semestral simultâneos, mas cada acúmulo de hora extra entra em um ciclo específico definido pelo acordo aplicável. Não somar saldos de ciclos diferentes para “saldo total” sem qualificar o tipo.

Endpoints públicos

Saldos e ciclos

MétodoRotaRetorna
GET/banco-horas/saldosSaldos de todos os colaboradores na UN
GET/banco-horas/saldos/{colaboradorId}Saldo de um colaborador específico
GET/banco-horas/ciclosCiclos ativos na UN (Anual, Semestral, Mensal)
GET/banco-horas/ciclos/{cicloId}/{colaboradorId}/resumoResumo mês-a-mês de um colaborador num ciclo

Movimentações

MétodoRotaDescrição
GET/banco-horas/movimentacoesLista movimentações (entradas e saídas)
GET/banco-horas/movimentacoes/{id}Detalhe de uma movimentação
POST/banco-horas/movimentacoesCrédito/débito manual ⚠️ (ver gotchas)
PATCH/banco-horas/movimentacoes/cancelar/{id}Cancelar movimentação ⚠️
Schema completo em Referência da API.

Fluxos típicos

Consultar saldo antes de aprovar folga

async function aprovarFolgaSeTemSaldo(token, colaboradorId, horasFolga) {
  const resp = await fetch(
    `https://api.pontua.com.br/banco-horas/saldos/${colaboradorId}`,
    { headers: { Authorization: `Bearer ${token}` } },
  )
  const saldo = await resp.json()

  // Saldo retornado é em formato HH:MM ou minutos — confira spec
  if (saldo.saldoMinutos < horasFolga * 60) {
    throw new Error(`Saldo insuficiente: ${saldo.saldoMinutos / 60}h disponível`)
  }

  // Aprovar folga via fluxo de Ajustes ou Turno Exceção
}

Relatório de banco vencendo (prescrição)

async function colaboradoresComBancoVencendoEmBreve(token, diasAlerta = 30) {
  // Listar ciclos Anual (mais propensos a vencer)
  const resp = await fetch(
    `https://api.pontua.com.br/banco-horas/ciclos?tipo=ANUAL`,
    { headers: { Authorization: `Bearer ${token}` } },
  )
  const { resultados: ciclos } = await resp.json()

  const limite = new Date(Date.now() + diasAlerta * 86400000)
  return ciclos.filter((c) => new Date(c.dataFim) < limite && c.saldoTotal > 0)
}

Gotchas conhecidos

Crédito/débito manual altera saldo legal do colaborador. Pode afetar:
  • Folha de pagamento (dimensão financeira)
  • Litígio trabalhista (dimensão jurídica)
  • Auditoria fiscal (dimensão contábil)
Use apenas:
  • Acertos pontuais com base em acordo escrito
  • Migração de saldo de outro sistema (com auditoria)
  • Correção de erro de cálculo identificado
Sempre documente o motivo no payload.
PATCH /movimentacoes/cancelar/{id} invalida a movimentação no banco mas não recalcula automaticamente saldos derivados (compensações posteriores que assumiam aquele saldo). Sempre verifique consistência após cancelamento.
Ciclos MENSAL quitam automaticamente no fechamento do mês — saldo positivo vira hora extra paga, saldo negativo vira desconto. Sua integração não deve esperar saldo mensal “remanescente” entre meses.
  • Prescrição: o acordo coletivo/individual expirou (ex.: convenção sindical não foi renovada)
  • Caducidade: o período legal foi ultrapassado (ex.: ciclo Anual sem compensação em 12 meses)
As consequências em folha podem variar — consulte jurídico antes de automatizar quitações nesses casos.

Veja também