ValidateFin
Voltar ao blog
ACH / NACHA6 min de leituraPor Eliel Nicaise

Formato de ficheiro ACH: registos NACHA e totais de controlo

Guia prático do formato ACH (NACHA) dos EUA: os registos de 94 caracteres, o check digit do routing number, o entry hash e os totais de controlo do ficheiro.

Valide o seu ficheiro agora

Grátis, instantâneo e 100% no seu navegador - nenhum ficheiro é enviado.

Abrir o ACH / NACHA Validator

O que é um ficheiro ACH / NACHA?

O ACH (Automated Clearing House) é a rede de pagamentos eletrónicos por lotes que movimenta dinheiro entre contas bancárias nos EUA. Trata do depósito direto de salários, pagamentos a fornecedores, reembolsos de impostos, prémios de seguros e débitos de consumidores, como faturas de serviços públicos ou prestações de empréstimos. Em vez de liquidar cada pagamento individualmente, o ACH agrupa-os em lotes que são trocados e liquidados em horários definidos, através da Reserva Federal ou de um operador privado.

O ficheiro que transporta estes pagamentos segue o formato NACHA (também chamado formato Nacha Operating Rules, ou simplesmente 'ficheiro ACH'). É um formato de texto simples e de largura fixa: cada linha - designada registo (record) - tem exatamente 94 caracteres de comprimento, e os registos são agrupados em blocos de 10. Se o último bloco não estiver completo, é preenchido com linhas de enchimento de 9s até atingir um múltiplo de 10 registos.

Como o formato é de largura fixa e auto-equilibrado, um único caractere errado - um campo desalinhado, um routing number inválido ou um total de controlo que já não corresponde aos registos de detalhe - pode levar o seu banco (o ODFI) a rejeitar o ficheiro inteiro. Validar o ficheiro antes de o enviar é a forma mais barata de evitar um lote devolvido e um processamento de salários atrasado.

Os tipos de registo dentro de um ficheiro ACH

Um ficheiro ACH é construído a partir de seis tipos de registo, identificados pelo primeiro caractere de cada linha de 94 caracteres. Aparecem sempre pela mesma ordem hierárquica: um File Header, depois um ou mais lotes, e por fim um registo File Control.

1 - File Header

Abre o ficheiro. Contém os routing numbers de origem e de destino imediatos, a data e hora de criação do ficheiro e um file ID modifier. Existe exatamente um File Header por ficheiro.

5 - Batch Header

Abre um lote. Transporta o service class code (créditos, débitos ou misto), o nome e o ID da empresa, o SEC code (PPD, CCD, WEB...), a data efetiva do movimento e o routing number do banco de origem.

6 - Entry Detail

Um registo por pagamento. Contém o routing number e o check digit do recetor, o número de conta, o montante, o transaction code (conta à ordem/poupança, crédito/débito) e o nome do recetor.

7 - Addenda

Informação adicional opcional associada a um movimento - por exemplo, dados de remessa (CCD/CTX) ou detalhes de devolução/correção. Um movimento pode ter zero, um ou muitos registos Addenda.

8 - Batch Control

Encerra um lote. Contém a contagem de entry/addenda, o entry hash e os montantes totais de débito e crédito desse lote - que devem todos corresponder aos movimentos acima.

9 - File Control

Encerra o ficheiro. Contém a contagem de lotes, a contagem de blocos, a contagem total de entry/addenda, o entry hash total e os débitos e créditos totais de todo o ficheiro.

Como funcionam o check digit do routing number e o entry hash

Cada banco dos EUA é identificado por um routing number de nove dígitos (também chamado ABA number ou RTN). O nono dígito é um check digit (dígito de controlo) calculado a partir dos primeiros oito, usando o algoritmo ABA 3-7-1: multiplicam-se os dígitos pelos pesos cíclicos 3, 7, 1, 3, 7, 1, 3, 7, somam-se os produtos e escolhe-se o check digit que torna o total um múltiplo de 10. Um routing number cujo check digit não satisfaça este teste é inválido e será rejeitado.

O entry hash é uma segunda salvaguarda. Para cada lote, tomam-se os primeiros oito dígitos do routing number de cada banco recetor, somam-se todos e mantém-se apenas os dez dígitos mais à direita da soma (descartando qualquer excedente à esquerda). O registo Batch Control armazena este hash por lote, e o registo File Control armazena a soma de todos os lotes, truncada da mesma forma.

Em conjunto, estas duas verificações permitem às instituições recetoras confirmar que nenhum movimento foi perdido, duplicado ou alterado em trânsito. Um validador recalcula ambos a partir dos registos de detalhe e compara-os com o que os registos de controlo declaram - uma divergência significa quase sempre que um movimento foi adicionado, removido ou editado sem atualizar os totais.

Totais de controlo e os erros ACH mais comuns

Para além do entry hash, cada ficheiro ACH deve equilibrar três tipos de totais. A contagem de entry/addenda é o número de registos do tipo 6 e do tipo 7. Os montantes totais de débito e de crédito são as somas dos montantes nos registos de movimento, separados consoante o transaction code seja um débito ou um crédito. E a contagem de blocos é o número de blocos de 10 registos no ficheiro. Tanto o registo Batch Control (por lote) como o File Control (todo o ficheiro) repetem estes valores, e todos devem corresponder exatamente aos registos de detalhe.

Os erros que vemos com mais frequência são: um registo que não tem exatamente 94 caracteres (normalmente um espaço perdido ou uma linha truncada); um routing number com um check digit errado; um entry hash ou total de montantes que não foi recalculado após a adição ou remoção de um movimento; um service class code (p. ex. 200/220/225) que não concorda com a mistura real de débitos e créditos no lote; e um ficheiro cuja contagem de registos não é um múltiplo de 10 porque falta o bloco final de enchimento com 9s.

A maioria destes erros é invisível quando se olha para o ficheiro, mas fatal quando o parser do ODFI o lê. Recalcular o check digit, o entry hash e todos os totais de controlo - que é exatamente o que um validador faz - deteta-os antes de o lote sair do seu sistema.

Valide o seu ficheiro ACH antes de o enviar

Cole ou arraste o seu ficheiro ACH para o validador ACH / NACHA da ValidateFin. Verifica a estrutura dos registos, os check digits dos routing numbers, o entry hash e todos os totais de controlo de lote e de ficheiro - inteiramente no seu navegador. Nenhum ficheiro ACH é alguma vez carregado para um servidor.

Abrir o validador ACH

Perguntas frequentes

Qual é a diferença entre ACH e NACHA?

O ACH (Automated Clearing House) é a rede de pagamentos; a NACHA (National Automated Clearing House Association) é a entidade que redige as regras e define o formato de ficheiro. As pessoas dizem frequentemente 'um ficheiro NACHA' e 'um ficheiro ACH' para se referirem à mesma coisa: um ficheiro de pagamentos por lote no formato NACHA.

Qual é o comprimento de cada registo num ficheiro ACH?

Exatamente 94 caracteres. Cada tipo de registo - File Header, Batch Header, Entry Detail, Addenda, Batch Control e File Control - é preenchido até aos 94 caracteres, e os registos são agrupados em blocos de 10.

Como é validado um routing number ACH?

Com o algoritmo de check digit ABA 3-7-1. Os primeiros oito dígitos são multiplicados pelos pesos cíclicos 3, 7, 1; o nono dígito é escolhido de modo a que a soma ponderada seja um múltiplo de 10. Se não for, o routing number é inválido.

O que é o entry hash e porque é importante?

O entry hash é a soma dos primeiros oito dígitos de cada routing number recetor num lote, truncada aos últimos dez dígitos. É armazenado nos registos Batch Control e File Control para que os bancos recetores possam detetar um movimento perdido, adicionado ou alterado.

Quais são os códigos de tipo de registo ACH?

1 = File Header, 5 = Batch Header, 6 = Entry Detail, 7 = Addenda, 8 = Batch Control, 9 = File Control. O tipo é o primeiro caractere de cada registo de 94 caracteres.

Porque é que o número de registos deve ser um múltiplo de 10?

Os ficheiros ACH são transmitidos em blocos de dez registos de 94 caracteres. Se os registos reais não preencherem o último bloco, este é preenchido com linhas de enchimento compostas apenas por 9s, para que o total seja um múltiplo de 10. Um ficheiro que não esteja corretamente organizado em blocos pode ser rejeitado.

O que faz com que um ficheiro ACH seja rejeitado?

As causas comuns são registos que não têm 94 caracteres, um routing number com um check digit inválido, totais de controlo ou um entry hash que não correspondem aos movimentos, um service class code que não concorda com os débitos e créditos do lote, e uma organização em blocos incorreta. Validar primeiro deteta todos estes casos.

É seguro validar um ficheiro ACH online?

Com a ValidateFin, sim - o ficheiro é processado inteiramente no seu navegador com JavaScript e nunca é carregado para um servidor. Como os ficheiros ACH contêm números de conta bancária e routing numbers, a validação do lado do cliente evita enviar esses dados para qualquer lugar.