ValidateFin
Terug naar blog
ACH / NACHA6 min lezenDoor Eliel Nicaise

ACH-bestandsformaat: NACHA-records en controletotalen

Een praktische gids voor het Amerikaanse ACH-formaat (NACHA): de records van 94 tekens, de check digit van het routing number, de entry hash en de controletotalen.

Valideer uw bestand nu

Gratis, direct en 100% in uw browser - er wordt nooit een bestand geüpload.

Open de ACH / NACHA Validator

Wat is een ACH- / NACHA-bestand?

ACH (Automated Clearing House) is het batchgewijze elektronische betaalnetwerk dat geld verplaatst tussen Amerikaanse bankrekeningen. Het verwerkt directe salarisstortingen, betalingen aan leveranciers en partners, belastingteruggaven, verzekeringspremies en incasso's van consumenten zoals energierekeningen of aflossingen van leningen. In plaats van elke betaling afzonderlijk te verwerken, groepeert ACH ze in batches die op vaste tijdstippen worden uitgewisseld en afgewikkeld via de Federal Reserve of een private operator.

Het bestand dat deze betalingen bevat, volgt het NACHA-formaat (ook wel het Nacha Operating Rules-formaat genoemd, of simpelweg een 'ACH-bestand'). Het is een platte-tekst-formaat met vaste veldbreedtes: elke regel - een record genoemd - is precies 94 tekens lang, en records worden gegroepeerd in blokken van 10. Als het laatste blok niet vol is, wordt het aangevuld met filler-regels van 9's om een veelvoud van 10 records te bereiken.

Omdat het formaat een vaste veldbreedte heeft en zelf-balancerend is, kan een enkel verkeerd teken - een verschoven veld, een fout routing number of een controletotaal dat niet langer overeenkomt met de detailrecords - ertoe leiden dat uw bank (de ODFI) het hele bestand weigert. Het bestand valideren voordat u het verstuurt is de goedkoopste manier om een geretourneerde batch en een vertraagde salarisrun te voorkomen.

De recordtypes binnen een ACH-bestand

Een ACH-bestand is opgebouwd uit zes recordtypes, herkenbaar aan het eerste teken van elke regel van 94 tekens. Ze verschijnen altijd in dezelfde geneste volgorde: een File Header (bestandskop), dan één of meer batches, en dan een File Control-record.

1 - File Header

Opent het bestand. Bevat de routing numbers van de directe herkomst en bestemming, de aanmaakdatum en -tijd van het bestand, en een file ID modifier. Er is precies één File Header per bestand.

5 - Batch Header

Opent een batch. Bevat de service class code (credits, debits of gemengd), de bedrijfsnaam en het ID, de SEC code (PPD, CCD, WEB...), de effectieve entry-datum en het routing number van de originerende bank.

6 - Entry Detail

Één record per betaling. Bevat het routing number en de check digit van de ontvanger, het rekeningnummer, het bedrag, de transactiecode (betaal-/spaarrekening, credit/debit) en de naam van de ontvanger.

7 - Addenda

Optionele extra informatie gekoppeld aan een entry - bijvoorbeeld betalingsgegevens (CCD/CTX) of retour-/correctiedetails. Een entry kan nul, één of meerdere Addenda-records hebben.

8 - Batch Control

Sluit een batch af. Bevat het aantal entries/addenda, de entry hash, en de totale debit- en creditbedragen voor die batch - die allemaal moeten overeenkomen met de entries erboven.

9 - File Control

Sluit het bestand af. Bevat het aantal batches, het aantal blokken, het totale aantal entries/addenda, de totale entry hash, en de totale debits en credits voor het hele bestand.

Hoe de check digit van het routing number en de entry hash werken

Elke Amerikaanse bank wordt geïdentificeerd door een routing number van negen cijfers (ook wel ABA-nummer of RTN genoemd). Het negende cijfer is een check digit die uit de eerste acht wordt berekend met het ABA 3-7-1-algoritme: vermenigvuldig de cijfers met de herhalende gewichten 3, 7, 1, 3, 7, 1, 3, 7, tel de producten op, en kies de check digit die het totaal een veelvoud van 10 maakt. Een routing number waarvan de check digit niet aan deze test voldoet, is ongeldig en wordt geweigerd.

De entry hash is een tweede beveiliging. Neem voor elke batch de eerste acht cijfers van het routing number van elke ontvangende bank, tel ze allemaal bij elkaar op, en behoud alleen de tien meest rechtse cijfers van de som (waarbij eventuele overloop aan de linkerkant vervalt). Het Batch Control-record slaat deze hash per batch op, en het File Control-record slaat de som over alle batches op, op dezelfde manier afgekapt.

Samen laten deze twee controles de ontvangende instellingen bevestigen dat geen enkele entry onderweg is weggevallen, gedupliceerd of gewijzigd. Een validator herberekent beide op basis van de detailrecords en vergelijkt ze met wat de controlerecords aangeven - een verschil betekent bijna altijd dat een entry is toegevoegd, verwijderd of bewerkt zonder de totalen bij te werken.

Controletotalen en de meest voorkomende ACH-fouten

Naast de entry hash moet elk ACH-bestand drie soorten totalen laten kloppen. Het aantal entries/addenda is het aantal records van type 6 en type 7. De totale debit- en credit-bedragen zijn de sommen van de bedragen in de entryrecords, opgesplitst naar of de transactiecode een debit of een credit is. En het aantal blokken is het aantal blokken van 10 records in het bestand. Zowel het Batch Control-record (per batch) als het File Control-record (het hele bestand) herhaalt deze cijfers, en ze moeten allemaal exact overeenkomen met de detailrecords.

De fouten die we het vaakst zien zijn: een record dat niet precies 94 tekens is (meestal een verdwaalde spatie of een ingekorte regel); een routing number met een verkeerde check digit; een entry hash of bedragtotaal dat niet is herberekend nadat een entry is toegevoegd of verwijderd; een service class code (bijv. 200/220/225) die niet overeenkomt met de werkelijke mix van debits en credits in de batch; en een bestand waarvan het aantal records geen veelvoud van 10 is omdat het laatste 9-filler-blok ontbreekt.

De meeste hiervan zijn onzichtbaar wanneer u het bestand met het blote oog bekijkt, maar fataal wanneer de parser van de ODFI het inleest. Het herberekenen van de check digit, de entry hash en elk controletotaal - precies wat een validator doet - vangt ze op voordat de batch uw systeem verlaat.

Valideer uw ACH-bestand voordat u het verstuurt

Plak of sleep uw ACH-bestand in de ACH- / NACHA-validator van ValidateFin. Deze controleert de recordstructuur, de routing check digits, de entry hash en elk batch- en file-controletotaal - volledig in uw browser. Er wordt nooit een ACH-bestand naar een server geüpload.

Open de ACH-validator

Veelgestelde vragen

Wat is het verschil tussen ACH en NACHA?

ACH (Automated Clearing House) is het betaalnetwerk; NACHA (de National Automated Clearing House Association) is de organisatie die de regels opstelt en het bestandsformaat definieert. Mensen zeggen vaak 'een NACHA-bestand' en 'een ACH-bestand' om hetzelfde te bedoelen: een batchbetalingsbestand in het NACHA-formaat.

Hoe lang is elk record in een ACH-bestand?

Precies 94 tekens. Elk recordtype - File Header, Batch Header, Entry Detail, Addenda, Batch Control en File Control - wordt aangevuld tot 94 tekens, en records worden gegroepeerd in blokken van 10.

Hoe wordt een ACH routing number gevalideerd?

Met het ABA 3-7-1 check-digit-algoritme. De eerste acht cijfers worden vermenigvuldigd met de herhalende gewichten 3, 7, 1; het negende cijfer wordt zo gekozen dat de gewogen som een veelvoud van 10 is. Zo niet, dan is het routing number ongeldig.

Wat is de entry hash en waarom is die belangrijk?

De entry hash is de som van de eerste acht cijfers van elk ontvangend routing number in een batch, afgekapt tot de laatste tien cijfers. Deze wordt opgeslagen in de Batch Control- en File Control-records zodat de ontvangende banken een verloren, toegevoegde of gewijzigde entry kunnen detecteren.

Wat zijn de recordtype-codes van ACH?

1 = File Header, 5 = Batch Header, 6 = Entry Detail, 7 = Addenda, 8 = Batch Control, 9 = File Control. Het type is het eerste teken van elk record van 94 tekens.

Waarom moet het aantal records een veelvoud van 10 zijn?

ACH-bestanden worden verzonden in blokken van tien records van 94 tekens. Als de echte records het laatste blok niet vullen, wordt het aangevuld met filler-regels van allemaal 9's zodat het totaal een veelvoud van 10 is. Een bestand dat niet correct is geblokt, kan worden geweigerd.

Wat zorgt ervoor dat een ACH-bestand wordt geweigerd?

Veelvoorkomende oorzaken zijn records die geen 94 tekens zijn, een routing number met een verkeerde check digit, controletotalen of een entry hash die niet overeenkomen met de entries, een service class code die niet overeenkomt met de debits en credits in de batch, en onjuiste blokindeling. Eerst valideren vangt al deze problemen op.

Is het veilig om een ACH-bestand online te valideren?

Met ValidateFin wel - het bestand wordt volledig in uw browser met JavaScript geparseerd en nooit naar een server geüpload. Omdat ACH-bestanden bankrekening- en routing numbers bevatten, voorkomt validatie aan de clientzijde dat die gegevens ergens naartoe worden gestuurd.