Uma hora extra à noite vale mais que uma hora extra no domingo
Com salário de R$ 3.300, uma hora extra feita no domingo paga R$ 30,00. Uma hora extra feita numa terça às 23h paga R$ 30,86. A lei chama a primeira de 100% e a segunda de 50%.
Cheguei nesse número escrevendo os testes de uma calculadora de horas extras. A conta que parece óbvia para a hora extra noturna é somar os dois adicionais, 50% da extra mais 20% do noturno, e pagar a hora com 70% a mais. Dá R$ 25,50. Está errada duas vezes.
Os dois erros
O primeiro é somar. A OJ 97 da SDI-1 do TST diz que o adicional noturno integra a base de cálculo das horas extras prestadas no período noturno. Os percentuais se multiplicam: a hora sobe 20% por ser noturna e esse valor já aumentado sobe 50% por ser extra. 1,2 × 1,5 = 1,8, não 1,7.
O segundo é o relógio. O art. 73, § 1º, da CLT diz que a hora noturna tem 52 minutos e 30 segundos. Entre 22h e 5h, cada hora que o relógio marca conta como 60 ÷ 52,5 = 1,142857 hora de trabalho. Quem fica sete horas no turno da noite recebe oito.
Juntando os dois: 1,2 × 1,5 × 1,142857 = 2,057 vezes a hora normal, por hora de relógio. O domingo sem folga compensatória paga 2 (Lei 605/1949, Súmula 146 do TST).

Quanto isso dá no mês
Se você ganha R$ 3.300 e fez 20 horas extras depois das 22h no mês, a conta somada dá R$ 510,00. A conta certa dá R$ 617,14. Com o reflexo no descanso semanal remunerado, num mês de 25 dias úteis e 5 domingos e feriados, são R$ 740,57 contra R$ 612,00.
São R$ 128,57 de diferença em um mês, antes de FGTS, 13º e férias.
| horas extras à noite (relógio) | horas pagas | conta somada (× 1,7) | conta certa | com DSR |
|---|---|---|---|---|
| 5 | 5,71 | 127,50 | 154,29 | 185,15 |
| 10 | 11,43 | 255,00 | 308,57 | 370,28 |
| 20 | 22,86 | 510,00 | 617,14 | 740,57 |
| 30 | 34,29 | 765,00 | 925,71 | 1.110,85 |
O código
É TypeScript, do solver da calculadora:
export const ADICIONAL_NOTURNO = 0.2;
export const HE_ADICIONAL_50 = 0.5;
/** 60 min ÷ 52,5 min: horas pagas por hora de relógio (CLT art. 73 § 1º). */
export const FATOR_HORA_NOTURNA = 60 / 52.5;
export function calcHorasNoturnasPagas(horasRelogio: number): number {
return horasRelogio * FATOR_HORA_NOTURNA;
}
/** Hora extra noturna (OJ 97): horas pagas × valor-hora × 1,2 × 1,5. */
export function calcHoraExtraNoturna(valorHora: number, horasRelogio: number): number {
return roundCents(
calcHorasNoturnasPagas(horasRelogio) * valorHora * (1 + ADICIONAL_NOTURNO) * (1 + HE_ADICIONAL_50),
);
}
A decisão que mais pesou foi o que pedir no campo. O cartão de ponto mostra horas de relógio, então a função recebe horas de relógio e faz a conversão por dentro. Se o campo pedisse "horas noturnas" sem dizer qual, uns digitariam 7 e outros 8 para o mesmo turno. O teste que trava isso é curto: calcHorasNoturnasPagas(7) tem que dar 8, e calcHoraExtraNoturna(15, 1) tem que dar 30,86.
O que eu acho
A hora de 52 minutos e 30 segundos é uma ficção ruim. O efeito dela é transformar o adicional noturno de 20% em 37,14% por hora trabalhada, porque 1,2 × 60 ÷ 52,5 = 1,3714. A lei podia dizer 37% e todo mundo faria a conta de cabeça. Do jeito que está, o número que aparece no texto é 20, o número que aparece no holerite é outro, e conferir exige saber de uma regra que não está no contracheque.
O que a calculadora não cobre
Vale para trabalhador urbano. No trabalho rural o adicional é de 25%, o horário noturno é outro e não existe hora reduzida (Lei 5.889/1973). Os percentuais são os mínimos legais de 50% e 100%, e muita convenção coletiva paga mais. Banco de horas e escala 12×36 ficam de fora. O DSR usa a conta de folha mais comum, valor ÷ dias úteis × domingos e feriados, que não é a única aceita.
Os números e o gráfico saíram de calculy.net/pt/finance/horas-extras. Se o seu holerite do turno da noite não bate com ela, me diz o salário, as horas e a diferença.