
In simple English
Bank payments in the United States move through a specific file format called Automated Clearing House (ACH, a digital network for processing direct deposits and bank transfers). Writing these files by hand is hard because a single misplaced character will cause the bank to reject the batch. This tool reads, creates, and checks those files so you do not have to build the logic yourself. You can run it as an application inside Docker (a way to run a program inside its own sealed box, so it cannot break anything else on your server) or add it to your own Go project. It costs nothing to download and use under an open licence.
What it is
A reader, writer, and validator for automated clearing house banking files written in Go. It also provides an HTTP server and a command-line tool for inspecting payment files.
What it is good for
Solo builders and developers who need to generate direct deposit files or process bank payments in the United States without paying for expensive payment gateway fees.
- Supports every official transaction type and standard entry class code.
- Includes a command-line tool to inspect payment files in a readable format.
- Provides a Docker image so you can run it as an API without writing Go code.
- Does not save any data to a database, so all records live only in server memory.
- Requires you to understand banking file standards and Nacha rules.
- Written in Go, which means changing the source code requires knowing that language.
manual ACH file generation and writing custom bank file parsers
moov-io/achgateway
- moov-io/imagecashletter78 stars
Handles check truncation image files instead of electronic payment files.
- hledgerorg/hledger4.8k stars
Double-entry accounting over plain text files, with command-line, terminal, web and editor interfaces.
- akaunting/akaunting10k stars
Self-hosted invoicing and expense tracking, with the double-entry accounting sold separately as an add-on.
- ledger/ledger6.1k stars
Double-entry accounting from a plain text file, run from the command line, with no database of any kind.
docker pull moov/ach:latest docker run -p 8080:8080 -p 9090:9090 moov/ach:latest