O AFD é o arquivo que materializa todas as marcações de um relógio de ponto — e costuma ser o primeiro documento que um auditor-fiscal do Trabalho pede. A Portaria 671/2021 define seu formato byte a byte. Este guia destrincha cada tipo de registro (do cabeçalho ao trailer), os campos de cada um, o CRC-16, o hash SHA-256 e as regras que fazem o arquivo ser aceito — ou rejeitado.
Todo relógio de ponto eletrônico regular no Brasil precisa exportar o AFD — Arquivo Fonte de Dados. É nele que ficam registradas, em texto puro e em ordem inviolável, todas as marcações de ponto e os eventos do equipamento. Quando a fiscalização do trabalho aparece, o AFD é o primeiro arquivo pedido — e se ele estiver fora do leiaute, é como se o controle de ponto não existisse.
A boa notícia: o formato do AFD é totalmente especificado pela Portaria 671/2021. Não há margem pra interpretação — cada campo tem posição, tamanho e tipo definidos. Este guia percorre a estrutura inteira, registro por registro, pra você entender exatamente o que o seu sistema de ponto deveria estar gerando.
O que é o AFD (Arquivo Fonte de Dados)
O AFD é um arquivo de texto gerado pelo REP (Registrador Eletrônico de Ponto). Cada linha é um registro — pode ser uma marcação de ponto, um ajuste de relógio, a inclusão de um funcionário ou um evento do equipamento. Os registros são numerados sequencialmente e não podem ser alterados nem reordenados: essa imutabilidade é o que dá valor probatório ao arquivo.
- É gerado por qualquer um dos três tipos de REP: REP-C (convencional, o relógio físico), REP-A (alternativo) e REP-P (programa/app).
- Deve ser fornecido ao empregado, ao sindicato e à fiscalização sempre que solicitado.
- Precisa ser guardado por 5 anos após a rescisão do contrato.
AFD, AFDT e AEJ: não confunda
A Portaria 671 cita três siglas de arquivo que vivem sendo confundidas. Vale fixar a diferença:
| Arquivo | O que é | Origem |
|---|---|---|
| AFD | Arquivo Fonte de Dados — o "bruto" com todas as marcações e eventos, direto do REP | O próprio REP |
| AFDT | Arquivo Fonte de Dados Tratado — as marcações já tratadas para um período | O sistema de tratamento |
| AEJ | Arquivo Eletrônico de Jornada — a jornada apurada (horas devidas, extras, faltas) | O sistema de tratamento |
As regras gerais do arquivo
Antes dos registros em si, a Portaria fixa regras que valem pro arquivo inteiro. Ignorar qualquer uma invalida o AFD:
- Formato texto, codificado em ASCII / ISO 8859-1.
- Cada linha é um registro e termina com os caracteres 13 e 10 (CR + LF) da tabela ASCII.
- Os registros são ordenados pelo NSR — Número Sequencial de Registro.
- Sem linhas em branco.
- Preenchimento a partir da esquerda; posições não usadas ficam com espaço.
- Registros tipo 1 a 5 levam um CRC-16 ao final; o tipo 7 leva um hash SHA-256.
Os tipos de dado dos campos
| Sigla | Tipo | Formato |
|---|---|---|
| N | Numérico | só dígitos |
| A | Alfanumérico | texto |
| D | Data | AAAA-MM-DD |
| DH | Data e hora | AAAA-MM-DDThh:mm:00ZZZZZ com fuso (ex.: 2021-04-27T16:44:00-0300) |
Os tipos de registro
Um AFD é composto por registros de tipos diferentes. O caractere logo depois do NSR identifica o tipo:
| Tipo | O que registra |
|---|---|
| 1 | Cabeçalho do arquivo (dados do empregador e do REP) |
| 2 | Inclusão/alteração da identificação da empresa no REP |
| 3 | Marcação de ponto (REP-C e REP-A) |
| 4 | Ajuste do relógio interno do REP |
| 5 | Inclusão, alteração ou exclusão de empregado no REP |
| 6 | Eventos sensíveis do REP (energia, violação, memória fiscal...) |
| 7 | Marcação de ponto (REP-P) |
| 9 | Trailer (fecha o arquivo com os totais) |
Registro tipo 1 — Cabeçalho
A primeira linha do arquivo. Identifica o empregador e o REP que gerou o AFD. Começa com nove zeros (não tem NSR) e termina com o CRC-16:
| # | Posição | Tam. | Tipo | Conteúdo |
|---|---|---|---|---|
| 1 | 001-009 | 9 | N | 000000000 (fixo) |
| 2 | 010 | 1 | N | Tipo do registro: 1 |
| 3 | 011 | 1 | N | Identificador do empregador: 1=CNPJ, 2=CPF |
| 4 | 012-025 | 14 | N | CNPJ ou CPF do empregador |
| 5 | 026-039 | 14 | N | CNO ou CAEPF, quando existir |
| 6 | 040-189 | 150 | A | Razão social ou nome do empregador |
| 7 | 190-206 | 17 | N | Nº de fabricação (REP-C) / processo da CCT (REP-A) / registro INPI (REP-P) |
| 8 | 207-216 | 10 | D | Data inicial dos registros no arquivo |
| 9 | 217-226 | 10 | D | Data final dos registros no arquivo |
| 10 | 227-250 | 24 | DH | Data e hora de geração do arquivo |
| 11 | 251-253 | 3 | N | Versão do leiaute: 003 |
| 12 | 254 | 1 | N | Identificador do fabricante: 1=CNPJ, 2=CPF |
| 13 | 255-268 | 14 | N | CNPJ ou CPF do fabricante/desenvolvedor |
| 14 | 269-298 | 30 | A | Modelo (no caso de REP-C) |
| 15 | 299-302 | 4 | A | CRC-16 do registro |
Os registros de marcação (tipo 3 e tipo 7)
São o coração do arquivo — cada batida de ponto vira um registro. O tipo depende do REP: REP-C e REP-A usam o tipo 3; o REP-P (app/programa) usa o tipo 7, que carrega dados extras de segurança.
Tipo 3 — marcação de REP-C e REP-A
| # | Posição | Tam. | Tipo | Conteúdo |
|---|---|---|---|---|
| 1 | 001-009 | 9 | N | NSR |
| 2 | 010 | 1 | A | Tipo do registro: 3 |
| 3 | 011-034 | 24 | DH | Data e hora da marcação |
| 4 | 035-046 | 12 | N | CPF do empregado |
| 5 | 047-050 | 4 | A | CRC-16 do registro |
000000123 · 3 · 2026-08-24T08:00:00-0300 · 12345678901 · 2189000000123 = NSR · 3 = tipo · 2026-08-24T08:00:00-0300 = data/hora com fuso · 12345678901 = CPF · 2189 = CRC-16. No arquivo real não há separadores — cada campo ocupa exatamente a sua faixa de posições.
Tipo 7 — marcação de REP-P (app/programa)
O REP-P é o ponto por aplicativo ou navegador. Como não há hardware fiscal, a Portaria exige mais dados de rastreabilidade em cada marcação — inclusive um hash encadeado que liga um registro ao anterior:
| # | Posição | Tam. | Tipo | Conteúdo |
|---|---|---|---|---|
| 1 | 001-009 | 9 | N | NSR |
| 2 | 010 | 1 | A | Tipo do registro: 7 |
| 3 | 011-034 | 24 | DH | Data e hora da marcação |
| 4 | 035-046 | 12 | N | CPF do empregado |
| 5 | 047-070 | 24 | DH | Data e hora da gravação do registro |
| 6 | 071-072 | 2 | N | Coletor: 01=app mobile, 02=navegador, 03=desktop, 04=dispositivo, 05=outro |
| 7 | 073 | 1 | N | 0=marcação on-line, 1=off-line |
| 8 | 074-137 | 64 | A | Código hash (SHA-256) |
Os registros de controle (2, 4, 5 e 6)
Além das marcações, o AFD registra tudo que muda no REP — o que impede a fraude do tipo "editei o cadastro e ninguém viu":
- Tipo 2 — identificação da empresa: inclusão ou alteração dos dados do empregador no REP (razão social, local de prestação de serviço), com o CPF de quem alterou.
- Tipo 4 — ajuste do relógio: guarda a data/hora antes e depois de qualquer acerto do relógio interno, mais o CPF do responsável. É o registro que denuncia manipulação de horário.
- Tipo 5 — empregado: inclusão (I), alteração (A) ou exclusão (E) de um funcionário no REP, com CPF, nome e responsável.
- Tipo 6 — eventos sensíveis: abertura do REP por manutenção/violação, retorno de energia, inserção/retirada de memória na Porta Fiscal, indisponibilidade de serviço (REP-P), entre outros.
Trailer (tipo 9) e assinatura digital
A última linha de dados é o trailer: fecha o AFD contando quantos registros de cada tipo existem. Se a contagem não bater com o conteúdo, o arquivo está corrompido ou foi editado.
| # | Posição | Tam. | Tipo | Conteúdo |
|---|---|---|---|---|
| 1 | 001-009 | 9 | N | 999999999 (fixo) |
| 2 | 010-018 | 9 | N | Quantidade de registros tipo 2 |
| 3 | 019-027 | 9 | N | Quantidade de registros tipo 3 |
| 4 | 028-036 | 9 | N | Quantidade de registros tipo 4 |
| 5 | 037-045 | 9 | N | Quantidade de registros tipo 5 |
| 6 | 046-054 | 9 | N | Quantidade de registros tipo 6 |
| 7 | 055-063 | 9 | N | Quantidade de registros tipo 7 |
| 8 | 064 | 1 | N | Tipo do registro: 9 |
Depois do trailer vem a assinatura digital (100 posições). No REP-A e no REP-P, o campo é preenchido com o texto literal ASSINATURA_DIGITAL_EM_ARQUIVO_P7S completado com espaços — a assinatura de fato vai num arquivo .p7s à parte.
Integridade: CRC-16 e SHA-256
Dois mecanismos garantem que ninguém edite o AFD sem deixar rastro:
CRC-16 (registros tipo 1 a 5)
Cada um desses registros termina com um CRC-16 — quatro caracteres hexadecimais que funcionam como um dígito verificador do conteúdo da linha. A Portaria especifica o padrão CRC-16/CCITT-TRUE (KERMIT).
123456789 geram o CRC-16 de valor 0x2189 nesse algoritmo. No arquivo grava-se apenas 2189 (hexadecimal, sem o 0x). Se um único caractere da linha mudar, o CRC muda — e a adulteração fica evidente.SHA-256 encadeado (registro tipo 7)
No REP-P, cada marcação (tipo 7) carrega um hash SHA-256 calculado sobre os próprios dados mais o hash do registro anterior. É o mesmo princípio de uma cadeia de blocos: alterar uma marcação no meio quebra o hash de todas as seguintes.
Como gerar (e não errar) o AFD
Montar o AFD na mão é inviável — cada byte fora do lugar invalida o arquivo. Na prática, quem gera é o sistema de ponto. O que você, gestor, precisa garantir:
- O sistema exporta o AFD no leiaute 003 da Portaria 671, com CRC-16 e (no REP-P) hash SHA-256 corretos.
- O arquivo é nomeado conforme a regra (a sigla
AFD+ identificação do REP e do empregador). - Os registros de ajuste de relógio e eventos são gravados automaticamente — nunca "por fora".
- Você consegue baixar o AFD de qualquer período quando o fiscal, o sindicato ou o próprio empregado pedir.
Conclusão
O AFD é, ao mesmo tempo, o documento mais técnico e o mais importante do controle de ponto: é a prova de que as marcações são reais e não foram adulteradas. Seu leiaute na Portaria 671 não deixa margem — posição, tamanho e tipo de cada campo, CRC-16 nos registros de controle e hash encadeado nas marcações por app.
Você não precisa gerar o arquivo manualmente, mas precisa saber cobrar do seu sistema de ponto um AFD correto. Um arquivo fora do leiaute só aparece como problema no pior momento possível: na frente do auditor-fiscal. Entender a estrutura é o que separa quem está em compliance de quem acha que está.