ValidateFin
Powrót do bloga
ACH / NACHA6 min czytaniaAutor: Eliel Nicaise

Format pliku ACH: rekordy NACHA i sumy kontrolne

Przewodnik po amerykańskim formacie pliku ACH (NACHA): rekordy 94 znaków, cyfra kontrolna routing number, entry hash i sumy kontrolne, które muszą się bilansować.

Zweryfikuj swój plik teraz

Za darmo, natychmiast i w 100% w przeglądarce - żaden plik nie jest przesyłany.

Otwórz ACH / NACHA Validator

Czym jest plik ACH / NACHA?

ACH (Automated Clearing House) to wsadowa sieć elektronicznych płatności, która przemieszcza środki między amerykańskimi rachunkami bankowymi. Obsługuje bezpośrednie wpłaty wynagrodzeń, płatności dla dostawców i kontrahentów, zwroty podatków, składki ubezpieczeniowe oraz obciążenia konsumentów, takie jak rachunki za media czy spłaty kredytów. Zamiast rozliczać każdą płatność indywidualnie, ACH grupuje je w partie (batches), które są wymieniane i rozliczane o ustalonych porach za pośrednictwem Rezerwy Federalnej lub operatora prywatnego.

Plik przenoszący te płatności jest zgodny z formatem NACHA (nazywanym też formatem Nacha Operating Rules lub po prostu 'plikiem ACH'). Jest to format tekstowy o stałej szerokości: każda linia - zwana rekordem - ma dokładnie 94 znaki długości, a rekordy są grupowane w bloki po 10. Jeśli ostatni blok nie jest pełny, jest uzupełniany liniami wypełniającymi złożonymi z dziewiątek, aby osiągnąć liczbę rekordów będącą wielokrotnością 10.

Ponieważ format ma stałą szerokość i sam się bilansuje, pojedynczy błędny znak - przesunięte pole, błędny routing number lub suma kontrolna, która przestaje pasować do rekordów szczegółowych - może spowodować, że Twój bank (ODFI) odrzuci cały plik. Walidacja pliku przed wysłaniem to najtańszy sposób na uniknięcie zwróconej partii i opóźnionej wypłaty wynagrodzeń.

Typy rekordów w pliku ACH

Plik ACH składa się z sześciu typów rekordów, rozpoznawanych po pierwszym znaku każdej 94-znakowej linii. Zawsze występują w tym samym zagnieżdżonym porządku: jeden File Header (nagłówek pliku), następnie jedna lub więcej partii, a na końcu jeden rekord File Control (kontrola pliku).

1 - File Header

Otwiera plik. Zawiera routing number bezpośredniego źródła i miejsca docelowego, datę i godzinę utworzenia pliku oraz modyfikator identyfikatora pliku (file ID modifier). W pliku występuje dokładnie jeden File Header.

5 - Batch Header

Otwiera partię. Przenosi service class code (kredyty, debety lub mieszane), nazwę i identyfikator firmy, SEC code (PPD, CCD, WEB...), efektywną datę zaksięgowania oraz routing number banku inicjującego.

6 - Entry Detail

Jeden rekord na płatność. Zawiera routing number i cyfrę kontrolną (check digit) odbiorcy, numer rachunku, kwotę, kod transakcji (rachunek bieżący/oszczędnościowy, kredyt/debet) oraz nazwę odbiorcy.

7 - Addenda

Opcjonalne informacje dodatkowe dołączone do wpisu - na przykład dane o płatności (CCD/CTX) lub szczegóły zwrotu/korekty. Wpis może mieć zero, jeden lub wiele rekordów Addenda.

8 - Batch Control

Zamyka partię. Zawiera liczbę wpisów/dodatków (entry/addenda count), entry hash oraz łączne kwoty debetów i kredytów dla tej partii - a wszystkie muszą zgadzać się z wpisami powyżej.

9 - File Control

Zamyka plik. Zawiera liczbę partii (batch count), liczbę bloków (block count), łączną liczbę wpisów/dodatków, łączny entry hash oraz łączne debety i kredyty dla całego pliku.

Jak działa cyfra kontrolna routing number i entry hash

Każdy amerykański bank jest identyfikowany przez dziewięciocyfrowy routing number (nazywany też numerem ABA lub RTN). Dziewiąta cyfra to cyfra kontrolna (check digit) obliczana z pierwszych ośmiu przy użyciu algorytmu ABA 3-7-1: cyfry mnoży się przez powtarzające się wagi 3, 7, 1, 3, 7, 1, 3, 7, sumuje iloczyny i wybiera taką cyfrę kontrolną, aby suma była wielokrotnością 10. Routing number, którego cyfra kontrolna nie spełnia tego testu, jest nieprawidłowy i zostanie odrzucony.

Entry hash to drugie zabezpieczenie. Dla każdej partii należy wziąć pierwsze osiem cyfr routing number każdego banku odbierającego, zsumować je wszystkie i zachować tylko dziesięć skrajnie prawych cyfr sumy (odrzucając nadmiar z lewej strony). Rekord Batch Control przechowuje ten hash dla danej partii, a rekord File Control przechowuje sumę ze wszystkich partii, obciętą w ten sam sposób.

Razem te dwie kontrole pozwalają instytucjom odbierającym potwierdzić, że żaden wpis nie został pominięty, zduplikowany ani zmieniony w trakcie przesyłania. Walidator ponownie oblicza oba z rekordów szczegółowych i porównuje je z tym, co deklarują rekordy kontrolne - niezgodność niemal zawsze oznacza, że wpis został dodany, usunięty lub zmodyfikowany bez aktualizacji sum.

Sumy kontrolne i najczęstsze błędy ACH

Poza entry hash każdy plik ACH musi bilansować trzy rodzaje sum. Liczba wpisów/dodatków (entry/addenda count) to liczba rekordów typu 6 i typu 7. Łączne kwoty debetów i kredytów to sumy kwot z rekordów wpisów, podzielone według tego, czy kod transakcji jest debetem czy kredytem. Natomiast liczba bloków (block count) to liczba 10-rekordowych bloków w pliku. Zarówno rekordy Batch Control (na partię), jak i File Control (cały plik) powtarzają te wartości, a wszystkie muszą dokładnie zgadzać się z rekordami szczegółowymi.

Błędy, które widzimy najczęściej, to: rekord nie mający dokładnie 94 znaków (zwykle przez zbłąkaną spację lub przyciętą linię); routing number z błędną cyfrą kontrolną; entry hash lub suma kwot, które nie zostały ponownie obliczone po dodaniu lub usunięciu wpisu; service class code (np. 200/220/225) niezgodny z rzeczywistym rozkładem debetów i kredytów w partii; oraz plik, którego liczba rekordów nie jest wielokrotnością 10, ponieważ brakuje końcowego bloku wypełniającego z dziewiątek.

Większość z nich jest niewidoczna, gdy patrzysz na plik gołym okiem, ale okazuje się fatalna, gdy odczytuje go parser ODFI. Ponowne obliczenie cyfry kontrolnej, entry hash i każdej sumy kontrolnej - czyli dokładnie to, co robi walidator - wychwytuje je, zanim partia opuści Twój system.

Zwaliduj swój plik ACH przed wysłaniem

Wklej lub przeciągnij swój plik ACH do walidatora ACH / NACHA ValidateFin. Sprawdza on strukturę rekordów, cyfry kontrolne routing number, entry hash oraz każdą sumę kontrolną partii i pliku - w całości w Twojej przeglądarce. Żaden plik ACH nie jest nigdy przesyłany na serwer.

Otwórz walidator ACH

Często zadawane pytania

Jaka jest różnica między ACH a NACHA?

ACH (Automated Clearing House) to sieć płatnicza; NACHA (National Automated Clearing House Association) to organizacja, która tworzy zasady i definiuje format pliku. Ludzie często mówią 'plik NACHA' i 'plik ACH', mając na myśli to samo: plik płatności wsadowych w formacie NACHA.

Jaką długość ma każdy rekord w pliku ACH?

Dokładnie 94 znaki. Każdy typ rekordu - File Header, Batch Header, Entry Detail, Addenda, Batch Control i File Control - jest uzupełniany do 94 znaków, a rekordy są grupowane w bloki po 10.

Jak walidowany jest routing number ACH?

Za pomocą algorytmu cyfry kontrolnej ABA 3-7-1. Pierwsze osiem cyfr mnoży się przez powtarzające się wagi 3, 7, 1; dziewiąta cyfra jest tak dobrana, aby ważona suma była wielokrotnością 10. Jeśli nie jest, routing number jest nieprawidłowy.

Czym jest entry hash i dlaczego ma znaczenie?

Entry hash to suma pierwszych ośmiu cyfr każdego routing number odbierającego w partii, obcięta do ostatnich dziesięciu cyfr. Jest przechowywany w rekordach Batch Control i File Control, aby banki odbierające mogły wykryć zgubiony, dodany lub zmieniony wpis.

Jakie są kody typów rekordów ACH?

1 = File Header, 5 = Batch Header, 6 = Entry Detail, 7 = Addenda, 8 = Batch Control, 9 = File Control. Typ to pierwszy znak każdego 94-znakowego rekordu.

Dlaczego liczba rekordów musi być wielokrotnością 10?

Pliki ACH są przesyłane w blokach po dziesięć 94-znakowych rekordów. Jeśli rzeczywiste rekordy nie wypełniają ostatniego bloku, jest on uzupełniany liniami wypełniającymi złożonymi z samych dziewiątek, aby łączna liczba była wielokrotnością 10. Plik, który nie jest poprawnie podzielony na bloki, może zostać odrzucony.

Co powoduje odrzucenie pliku ACH?

Częste przyczyny to rekordy, które nie mają 94 znaków, routing number z błędną cyfrą kontrolną, sumy kontrolne lub entry hash niezgodne z wpisami, service class code niezgodny z debetami i kredytami w partii oraz nieprawidłowe blokowanie. Wcześniejsza walidacja wychwytuje je wszystkie.

Czy walidacja pliku ACH online jest bezpieczna?

W przypadku ValidateFin tak - plik jest parsowany w całości w Twojej przeglądarce za pomocą JavaScript i nigdy nie jest przesyłany na serwer. Ponieważ pliki ACH zawierają numery rachunków bankowych i routing numbers, walidacja po stronie klienta pozwala uniknąć wysyłania tych danych gdziekolwiek.