finds.dev← search

// the find

moov-io/ach

★ 548 · Go · Apache-2.0 · updated Jun 2026

ACH implements a reader, writer, and validator for Automated Clearing House (ACH) files. The HTTP server is available in a Docker image and the Go package is available.

A Go library and HTTP server for reading, writing, and validating ACH files per Nacha standards. It covers all 23 SEC codes and is production-used by Moov's own payment infrastructure. If you're building a fintech product that needs to originate or parse US bank transfers without paying for a third-party ACH SDK, this is the serious open-source option.

Full SEC code coverage including the edge cases (IAT, ADV, contested/dishonored returns) — not just the PPD/CCD happy path most libraries stop at. The in-memory HTTP server with a Docker image means you can drop it in as a sidecar and call it over HTTP from any language, not just Go. Continuous fuzzing via GitHub Actions on the parser is rare for a library in this space and matters for something handling financial data. The achcli tool that pretty-prints ACH files in human-readable form is genuinely useful for debugging — ACH fixed-width format is unreadable raw.

The HTTP server stores files in-memory only with no persistence option beyond rolling your own repository implementation — fine for stateless processing but you'll notice this fast if you try to use it as a service across restarts. IAT support exists but international payment complexity (correspondent banks, regulatory addenda) is barely documented compared to domestic SEC codes. The Node SDK is community-generated from OpenAPI and clearly secondary — don't expect it to track the Go library closely. No built-in support for SFTP batch file upload/download to your ODFI; that's punted to the separate achgateway project, which adds another dependency if you need the full origination loop.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →