{"id":13412830,"url":"https://github.com/moov-io/ach","last_synced_at":"2026-04-03T23:03:17.591Z","repository":{"id":37612018,"uuid":"76497520","full_name":"moov-io/ach","owner":"moov-io","description":"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.","archived":false,"fork":false,"pushed_at":"2025-05-05T18:32:07.000Z","size":33220,"stargazers_count":485,"open_issues_count":13,"forks_count":162,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-05T19:49:29.284Z","etag":null,"topics":["ach","ach-origination","automated-clearing-house","fintech","golang-library","hacktoberfest","money","moov","nacha","payment"],"latest_commit_sha":null,"homepage":"https://moov-io.github.io/ach/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moov-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-12-14T21:12:49.000Z","updated_at":"2025-05-05T18:32:10.000Z","dependencies_parsed_at":"2024-01-08T15:02:53.601Z","dependency_job_id":"3e00412d-301a-42e9-86d3-a5373183b2c1","html_url":"https://github.com/moov-io/ach","commit_stats":null,"previous_names":["wadearnold/ach"],"tags_count":177,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fach","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fach/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fach/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moov-io%2Fach/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moov-io","download_url":"https://codeload.github.com/moov-io/ach/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254040,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ach","ach-origination","automated-clearing-house","fintech","golang-library","hacktoberfest","money","moov","nacha","payment"],"created_at":"2024-07-30T20:01:29.776Z","updated_at":"2026-01-06T23:20:15.671Z","avatar_url":"https://github.com/moov-io.png","language":"Go","funding_links":[],"categories":["Financial","金融","Go","hacktoberfest","Banking Infrastructure","Relational Databases"],"sub_categories":["Search and Analytic Databases","检索及分析资料库","Advanced Console UIs"],"readme":"[![Moov Banner Logo](https://user-images.githubusercontent.com/20115216/104214617-885b3c80-53ec-11eb-8ce0-9fc745fb5bfc.png)](https://github.com/moov-io)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://moov-io.github.io/ach/\"\u003eProject Documentation\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov-io.github.io/ach/api/#get-/files\"\u003eAPI Endpoints\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov.io/blog/education/ach-api-guide/\"\u003eAPI Guide\u003c/a\u003e\n  ·\n  \u003ca href=\"https://slack.moov.io/\"\u003eCommunity\u003c/a\u003e\n  ·\n  \u003ca href=\"https://moov.io/blog/\"\u003eBlog\u003c/a\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/p\u003e\n\n[![GoDoc](https://godoc.org/github.com/moov-io/ach?status.svg)](https://godoc.org/github.com/moov-io/ach)\n[![Build Status](https://github.com/moov-io/ach/workflows/Go/badge.svg)](https://github.com/moov-io/ach/actions)\n[![Go Report Card](https://goreportcard.com/badge/github.com/moov-io/ach)](https://goreportcard.com/report/github.com/moov-io/ach)\n[![Repo Size](https://img.shields.io/github/languages/code-size/moov-io/ach?label=project%20size)](https://github.com/moov-io/ach)\n[![Apache 2 License](https://img.shields.io/badge/license-Apache2-blue.svg)](https://raw.githubusercontent.com/moov-io/ach/master/LICENSE)\n[![Slack Channel](https://slack.moov.io/badge.svg?bg=e01563\u0026fgColor=fffff)](https://slack.moov.io/)\n[![Docker Pulls](https://img.shields.io/docker/pulls/moov/ach)](https://hub.docker.com/r/moov/ach)\n[![GitHub Stars](https://img.shields.io/github/stars/moov-io/ach)](https://github.com/moov-io/ach)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/moov-io/ach)\n\n# moov-io/ach\nMoov's mission is to give developers an easy way to create and integrate bank processing into their own software products. Our open source projects are each focused on solving a single responsibility in financial services and designed around performance, scalability, and ease of use.\n\nACH implements a reader, writer, and validator for Automated Clearing House ([ACH](https://en.wikipedia.org/wiki/Automated_Clearing_House)) files following the Nacha standards. ACH is the primary method of electronic money movement throughout the United States. The HTTP server is available in a [Docker image](#docker) and the Go package `github.com/moov-io/ach` is available.\n\nIf you're looking for an event driven ACH engine for uploading/downloading files and operations we have built [moov-io/achgateway](https://github.com/moov-io/achgateway) and run it in production. Our article [How and When to use the Moov ACH Library](https://moov.io/blog/education/how-and-when-to-use-the-moov-ach-library/) will help to generate ACH files for upload to your ODFI.\n\n## Table of contents\n\n- [Project status](#project-status)\n- [Usage](#usage)\n  - As an API\n    - [Docker](#docker) ([Config](#configuration-settings))\n    - [Google Cloud](#google-cloud-run-button) ([Config](#configuration-settings))\n    - [HTTP API](#http-api) ([Config](#configuration-settings))\n    - [Data persistence](#data-persistence)\n  - [As a Go module](#go-library)\n  - [As a command line tool](#command-line)\n  - [As an in-browser parser](#in-browser-ach-file-parser)\n- [OpenAPI SDKs](#sdks)\n- [Learn about ACH](#learn-about-ach)\n- [FAQ](#faq)\n- [Getting help](#getting-help)\n- [Supported and tested platforms](#supported-and-tested-platforms)\n- [Contributing](#contributing)\n- [Related projects](#related-projects)\n\n## Project status\n\nMoov ACH is actively used in multiple production environments. Please star the project if you are interested in its progress. The project supports generating and parsing all Standard Entry Class (SEC) codes and validating files according to the Nacha standards. If you have layers above ACH to simplify tasks, perform business operations, or found bugs we would appreciate an issue or pull request. Thanks!\n\n## Usage\n\nThe ACH project implements an HTTP server and Go library for creating and modifying ACH files. There are client libraries available for both [Go](https://pkg.go.dev/github.com/moov-io/ach) and [Node/JavaScript](https://github.com/moov-io/ach-node-sdk). We also have an extensive list of [examples](https://pkg.go.dev/github.com/moov-io/ach/examples) of the reader and writer applied to various ACH transaction types.\n\n### Docker\n\nWe publish a [public Docker image `moov/ach`](https://hub.docker.com/r/moov/ach/) from Docker Hub or use this repository. No configuration is required to serve on `:8080` and metrics at `:9090/metrics` in Prometheus format.\n\nPull \u0026 start the Docker image:\n```\ndocker pull moov/ach:latest\ndocker run -p 8080:8080 -p 9090:9090 moov/ach:latest\n```\n\nList files stored in-memory:\n```\ncurl localhost:8080/files\n```\n```\n{\"files\":[],\"error\":null}\n```\n\nCreate a file on the HTTP server:\n```\ncurl -X POST --data-binary \"@./test/testdata/ppd-debit.ach\" http://localhost:8080/files/create\n```\n```\n{\"id\":\"\u003cYOUR-UNIQUE-FILE-ID\u003e\",\"error\":null}\n```\n\nRead the ACH file (in JSON form):\n```\ncurl http://localhost:8080/files/\u003cYOUR-UNIQUE-FILE-ID\u003e\n```\n```\n{\"file\":{\"id\":\"\u003cYOUR-UNIQUE-FILE-ID\u003e\",\"fileHeader\":{\"id\":\"\",\"immediateDestination\":\"231380104\",\"immediateOrigin\":\"121042882\", ...\n```\n\n### Google Cloud Run button\n\nTo get started in a hosted environment you can deploy this project to the Google Cloud Platform.\n\nFrom your [Google Cloud dashboard](https://console.cloud.google.com/home/dashboard) create a new project and call it:\n```\nmoov-ach-demo\n```\n\nClick the button below to deploy this project to Google Cloud.\n\n[![Run on Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/moov-io/ach\u0026revision=master)\n\n\u003e **Note**: If you get an error about the image being marked as \"Do Not Trust\" follow the below steps.\n\n\u003cdetails\u003e\n\u003csummary\u003eError: You launched this custom Cloud Shell image as \"Do not trust\"\u003c/summary\u003e\n\n```\n$ cloudshell_open --repo_url \"https://github.com/moov-io/ach\" --page \"shell\" --git_branch \"master\"\nError: You launched this custom Cloud Shell image as \"Do not trust\".\nIn this mode, your credentials are not available and this experience\ncannot deploy to Cloud Run. Start over and \"Trust\" the image.\nError: aborting due to untrusted cloud shell environment\n```\n\nThis error occurs when some security settings on your account / cloud shell are locked down. To run ACH you need to trust the image, so in the top-right click to restart this image as Trusted.\n\n![](./docs/images/gcp-run-button/1-image-trust-settings.png)\n\nClick to \"Return to default\"\n\n![](./docs/images/gcp-run-button/2-confirm-prompt.png)\n\nThen you'll need to clone down and launch ACH. Pick option #3 to clone this project.\n\n```\ncloudshell_open --repo_url \"https://github.com/moov-io/ach\" --page \"shell\" --git_branch \"master\"\n```\n\nStart the ACH server inside the cloned repository.\n```\ngo run ./cmd/serverr\n```\n\nConnect to the web preview (e.g. `https://YOUR-ACH-APP-URL.a.run.app:8080/files`)\n![](./docs/images/gcp-run-button/3-web-preview.png)\n\n\u003chr /\u003e \u003c!-- end the details section --\u003e\n\n\u003c/details\u003e\n\n\nIn the cloud shell you should be prompted with:\n```\nChoose a project to deploy this application:\n```\n\nUsing the arrow keys select:\n```\nmoov-ach-demo\n```\n\n\nYou'll then be prompted to choose a region, use the arrow keys to select the region closest to you and hit enter.\n```\nChoose a region to deploy this application:\n```\n\n\n\nUpon a successful build you will be given a URL where the API has been deployed:\n```\nhttps://YOUR-ACH-APP-URL.a.run.app\n```\n\nFrom the cloud shell you need to cd into the `ach` folder:\n```\ncd ach\n```\n\nNow you can list files stored in-memory:\n```\ncurl https://YOUR-ACH-APP-URL.a.run.app/files\n```\nYou should get this response:\n```\n{\"files\":[],\"error\":null}\n```\n\n\nCreate a file on the server:\n```\ncurl -X POST --data-binary \"@./test/testdata/ppd-debit.ach\" https://YOUR-ACH-APP-URL.a.run.app/files/create\n```\nYou should get this response:\n```\n{\"id\":\"\u003cYOUR-UNIQUE-FILE-ID\u003e\",\"error\":null}\n```\n\n\nFinally, read the contents of the file you've just posted:\n```\ncurl https://YOUR-ACH-APP-URL.a.run.app/files/\u003cYOUR-UNIQUE-FILE-ID\u003e\n```\n\nYou should get this response:\n```\n{\"file\":{\"id\":\"\u003cYOUR-UNIQUE-FILE-ID\u003e\",\"fileHeader\":{\"id\":\"...\",\"immediateDestination\":\"231380104\",\"immediateOrigin\":\"121042882\", ...\n```\n\n### HTTP API\n\nThe package [`github.com/moov-io/ach/server`](https://pkg.go.dev/github.com/moov-io/ach/server) offers an HTTP and JSON API for creating and editing files. If you're using Go the `ach.File` type can be used, otherwise you can send properly formatted JSON. We have an [example JSON file](test/testdata/ppd-valid.json), but each SEC type will generate different JSON.\n\nExamples: [Go](examples/http/main.go) | [Ruby](https://github.com/moov-io/ruby-ach-demo)\n\n- [Create an ACH file for a payment and get the raw file](https://github.com/moov-io/ruby-ach-demo)\n\n\n### Configuration settings\n\n| Environmental Variable | Description | Default |\n|-----|-----|-----|\n| `ACH_FILE_TTL` | Time to live (TTL) for `*ach.File` objects stored in the in-memory repository. | 0 = No TTL / Never delete files (Example: `240m`) |\n| `LOG_FORMAT` | Format for logging lines to be written as. | Options: `json`, `plain` - Default: `plain` |\n| `HTTP_BIND_ADDRESS` | Address for ACH to bind its HTTP server on. This overrides the command-line flag `-http.addr`. | Default: `:8080` |\n| `HTTP_ADMIN_BIND_ADDRESS` | Address for ACH to bind its admin HTTP server on. This overrides the command-line flag `-admin.addr`. | Default: `:9090` |\n| `HTTPS_CERT_FILE` | Filepath containing a certificate (or intermediate chain) to be served by the HTTP server. Requires all traffic be over secure HTTP. | Empty |\n| `HTTPS_KEY_FILE`  | Filepath of a private key matching the leaf certificate from `HTTPS_CERT_FILE`. | Empty |\n\n### Data persistence\nBy design ACH **does not persist** (save) any data about the files, batches, or entry details created. The only storage occurs in memory of the process and upon restart ACH will have no files, batches, or data saved. Also, no in memory encryption of the data is performed.\n\n\n### Go library\n\nThis project uses [Go Modules](https://go.dev/blog/using-go-modules) and Go v1.18 or newer. See [Golang's install instructions](https://golang.org/doc/install) for help in setting up Go. You can download the source code and we offer [tagged and released versions](https://github.com/moov-io/ach/releases/latest) as well. We highly recommend you use a tagged release for production.\n\n```\n# Pull down into the Go Module cache\n$ go get -u github.com/moov-io/ach\n\n# Show the documentation for the BatchHeader package\n$ go doc github.com/moov-io/ach BatchHeader\n```\n\nThe package [`github.com/moov-io/ach`](https://pkg.go.dev/github.com/moov-io/ach) offers a Go-based ACH file reader and writer. To get started, check out a specific example:\n\n\u003cdetails\u003e\n\u003csummary\u003eSupported Standard Entry Class (SEC) codes\u003c/summary\u003e\n\n| SEC Code | Description                                  | Example                                  | Read                | Write                                            |\n|----------|---------------------------------------|------------------------------------------|-----------------------------------|------------------------------------|\n| ACK      | Acknowledgment Entry for CCD          | [Credit](examples/testdata/ack-read.ach) | [ACK Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-AckRead) | [ACK Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-AckWrite) |\n| ADV      | Automated Accounting Advice           | [Prenote Debit](test/ach-adv-read/adv-read.ach) | [ADV Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-AdvRead) | [ADV Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-AdvWrite) |\n| ARC      | Accounts Receivable Entry             | [Debit](test/ach-arc-read/arc-debit.ach) | [ARC Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-ArcReadDebit) | [ARC Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-ArcWriteDebit) |\n| ATX      | Acknowledgment Entry for CTX          | [Credit](test/ach-atx-read/atx-read.ach)  | [ATX Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-AtxRead) | [ATX Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-AtxWrite) |\n| BOC      | Back Office Conversion                | [Debit](test/ach-boc-read/boc-debit.ach) | [BOC Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-BocReadDebit) | [BOC Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-BocWriteDebit) |\n| CCD      | Corporate credit or debit             | [Debit](test/ach-ccd-read/ccd-debit.ach) | [CCD Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CcdReadDebit) | [CCD Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CcdWriteDebit) |\n| CIE      | Customer-Initiated Entry              | [Credit](test/ach-cie-read/cie-credit.ach) | [CIE Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CieRead) | [CIE Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CieWrite) |\n| COR      | Automated Notification of Change(NOC) | [NOC](test/ach-cor-read/cor-read.ach)   | [COR Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CorReadCredit) | [COR Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CorWriteCredit) |\n| CTX      | Corporate Trade Exchange              | [Debit](test/ach-ctx-read/ctx-debit.ach) | [CTX Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CtxReadDebit) | [CTX Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-CtxWriteDebit) |\n| DNE      | Death Notification Entry              | [DNE](test/ach-dne-read/dne-read.ach)   | [DNE Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-DneRead) | [DNE Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-DneWrite) |\n| ENR      | Automatic Enrollment Entry            | [ENR](test/ach-enr-read/enr-read.ach)   | [ENR Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-EnrRead) | [ENR Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-EnrWrite) |\n| IAT      | International ACH Transactions        | [Credit](test/ach-iat-read/iat-credit.ach) | [IAT Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-IatReadMixedCreditDebit) | [IAT Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-IatWriteMixedCreditDebit) |\n| MTE      | Machine Transfer Entry                | [Credit](test/ach-mte-read/mte-read.ach)   | [MTE Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-MteReadDebit) | [MTE Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-MteWriteDebit) |\n| POP      | Point of Purchase                     | [Debit](test/ach-pop-read/pop-debit.ach) | [POP Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PopReadDebit) | [POP Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PopWriteDebit) |\n| POS      | Point of Sale                         | [Debit](test/ach-pos-read/pos-debit.ach) | [POS Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PosReadDebit) | [POS Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PosWriteDebit) |\n| PPD      | Prearranged payment and deposits      | [Debit](test/ach-ppd-read/ppd-debit.ach) [Credit](test/ach-ppd-read/ppd-credit.ach) | [PPD Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PpdReadCredit) | [PPD Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PpdWriteCredit) |\n| RCK      | Represented Check Entries             | [Debit](test/ach-rck-read/rck-debit.ach) | [RCK Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-RckReadDebit) | [RCK Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-RckWriteDebit) |\n| SHR      | Shared Network Entry                  | [Debit](test/ach-shr-read/shr-debit.ach) | [SHR Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-ShrReadDebit) | [SHR Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-ShrWrite) |\n| TEL      | Telephone-Initiated Entry             | [Debit](test/ach-tel-read/tel-debit.ach) | [TEL Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-TelReadDebit) | [TEL Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-TelWriteDebit) |\n| TRC      | Truncated Check Entry                 | [Debit](test/ach-trc-read/trc-debit.ach) | [TRC Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-TrcReadDebit) | [TRC Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-TrcWriteDebit) |\n| TRX      | Check Truncation Entries Exchange     | [Debit](test/ach-trx-read/trx-debit.ach) | [TRX Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-TrxReadDebit) | [TRX Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-TrxWriteDebit) |\n| WEB      | Internet-initiated Entries            | [Credit](test/ach-web-read/web-credit.ach) | [WEB Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-WebReadCredit) | [WEB Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-WebWriteCredit) |\n| XCK      | Destroyed Check Entry                 | [Debit](test/ach-xck-read/xck-debit.ach)  | [XCK Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-XckReadDebit) | [XCK Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-XckWriteDebit) |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eSegment Files\u003c/summary\u003e\n\n| SEC Code | Name                                  | Example                                  | Read                | Write                                            |\n|----------|---------------------------------------|------------------------------------------|-----------------------------------|------------------------------------|\n| IAT      | International ACH Transactions        | [Credit](test/ach-iat-read/iat-credit.ach) | [IAT Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-IatReadMixedCreditDebit) | [IAT Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-IatWriteMixedCreditDebit) |\n| PPD      | Prearranged payment and deposits      | [Debit](test/ach-ppd-read/ppd-debit.ach) [Credit](test/ach-ppd-read/ppd-credit.ach) | [PPD Read](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PpdReadSegmentFile) | [PPD Write](https://pkg.go.dev/github.com/moov-io/ach/examples#example-package-PpdWriteSegmentFile) |\n\n\u003c/details\u003e\n\n### Command line\n\nOn each release there's an `achcli` utility released. This tool can display ACH files in a human-readable format which is easier to read than their plaintext format. It also allows masking `DFIAccountNumber` values with the `-mask` flag.\n\nDownload the [latest release for your computer](https://github.com/moov-io/ach/releases/latest)\n\n```\n$ achcli test/testdata/ppd-debit.ach\nDescribing ACH file 'test/testdata/ppd-debit.ach'\n\n  Origin     OriginName    Destination  DestinationName       FileCreationDate  FileCreationTime\n  121042882  My Bank Name  231380104    Federal Reserve Bank  190624            0000\n\n  BatchNumber  SECCode  ServiceClassCode  CompanyName      DiscretionaryData  Identification  EntryDescription  DescriptiveDate\n  1            PPD      225 (Debits Only)  Name on Account                     121042882       REG.SALARY\n\n    TransactionCode   RDFIIdentification  AccountNumber      Amount     Name                    TraceNumber      Category\n    27 (Checking Debit)  23138010            12345678           100000000  Receiver Account Name   121042880000001\n\n  ServiceClassCode  EntryAddendaCount  EntryHash  TotalDebits  TotalCredits  MACCode  ODFIIdentification  BatchNumber\n  225 (Debits Only)  1                  23138010   100000000    0                      12104288            1\n\n  BatchCount  BlockCount  EntryAddendaCount  TotalDebitAmount  TotalCreditAmount\n  1           1           1                  100000000         0\n```\n\n### In-browser ACH file parser\nUsing our [in-browser utility](https://moov-io.github.io/ach/webui/), you can instantly convert ACH files into JSON. Either paste in ACH file content directly or choose a file from your local machine. This tool is particularly useful if you're handling sensitive PII or want perform some quick tests, as operations are fully client-side with nothing stored in memory.\n\n### SDKs\n\nBelow are some SDKs generated from the API documentation:\n\n- [Node SDK](https://www.npmjs.com/package/ach-node-sdk) | [GitHub](https://github.com/moov-io/ach-node-sdk)\n\n- TODO - OpenAPI Guide\n\n## Learn about ACH\n\n- [Official Nacha ACH Guide for Developers](https://dev-ach-guide.pantheonsite.io/)\n- [Intro to ACH](https://moov-io.github.io/ach/intro/)\n- [Create an ACH File](https://moov-io.github.io/ach/create-file/)\n- [ACH File Structure](https://moov-io.github.io/ach/file-structure/)\n- [Balanced Offset Files](https://moov-io.github.io/ach/balanced-offset/)\n- [Merging Files](https://moov-io.github.io/ach/merging-files/)\n\n## FAQ\n\u003cdetails open=\"true\"\u003e\n\u003csummary \u003e\u003cb\u003eIs there an in-browser tool for converting ACH files into JSON?\u003c/b\u003e\u003c/summary\u003e\nYes! You can find our browser utility at \u003ca href=\"https://moov-io.github.io/ach/webui/\"\u003ehttps://moov-io.github.io/ach/webui/\u003c/a\u003e.\n\u003c/details\u003e\n\u003cdetails open=\"true\"\u003e\n\u003csummary\u003e\u003cb\u003eIs my data being saved somewhere?\u003c/b\u003e\u003c/summary\u003e\nNo, we do not save any data related to files, batch, or entry details. All processing is done in-memory.\n\u003c/details\u003e\n\u003cdetails open=\"true\"\u003e\n\u003csummary\u003e\u003cb\u003eWhat ACH transaction types are supported?\u003c/b\u003e\u003c/summary\u003e\nWe support generating and parsing all Standard Entry Class (SEC) codes.\n\u003c/details\u003e\n\u003cdetails open=\"true\"\u003e\n\u003csummary\u003e\u003cb\u003eWhere can I find the official Nacha Operating Rules?\u003c/b\u003e\u003c/summary\u003e\nYou can purchase the most recent Nacha Operating Rules and Guidelines resource directly from their \u003ca href=\"https://www.nacha.org/store\"\u003ewebstore\u003c/a\u003e. Additionally, Nacha has published a \u003ca href=\"https://dev-ach-guide.pantheonsite.io/\"\u003efree ACH guide for developers\u003c/a\u003e.\n\u003c/details\u003e\n\n## Getting help\n\nIf you have ACH-specific questions, NACHA (National Automated Clearing House Association) has their [complete specification](docs/2013-Corporate-Rules-and-Guidelines.pdf) for all file formats and message types.\n\n channel | info\n ------- | -------\n [Project Documentation](https://moov-io.github.io/ach/) | Our project documentation available online.\nTwitter [@moov](https://twitter.com/moov)\t| You can follow Moov.io's Twitter feed to get updates on our project(s). You can also tweet us questions or just share blogs or stories.\n[GitHub Issue](https://github.com/moov-io/ach/issues/new) | If you are able to reproduce a problem please open a GitHub Issue under the specific project that caused the error.\n[moov-io slack](https://slack.moov.io/) | Join our slack channel to have an interactive discussion about the development of the project.\n\n## Supported and tested platforms\n\n- 64-bit Linux (Ubuntu, Debian), macOS, and Windows\n- Raspberry Pi\n\nNote: 32-bit platforms have known issues and are not supported.\n\n## Contributing\n\nYes please! Please review our [Contributing guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) to get started! Check out our [issues for first time contributors](https://github.com/moov-io/ach/contribute) for something to help out with.\n\nThis project uses [Go Modules](https://go.dev/blog/using-go-modules) and Go v1.18 or newer. See [Golang's install instructions](https://golang.org/doc/install) for help setting up Go. You can download the source code and we offer [tagged and released versions](https://github.com/moov-io/ach/releases/latest) as well. We highly recommend you use a tagged release for production.\n\n### Releasing\n\nTo make a release of ach simply open a pull request with `CHANGELOG.md` and `version.go` updated with the next version number and details. You'll also need to push the tag (i.e. `git push origin v1.0.0`) to origin in order for CI to make the release.\n\n### Testing\n\nWe maintain a comprehensive suite of unit tests and recommend table-driven testing when a particular function warrants several very similar test cases. To run all test files in the current directory, use `go test`.\n\n### Fuzzing\n\nWe currently run fuzzing over ACH in the form of a [Github Action](https://github.com/moov-io/ach/actions/workflows/fuzz.yml). Please report crashes examples to [`oss@moov.io`](mailto:oss@moov.io). Thanks!\n\n## Related projects\nAs part of Moov's initiative to offer open source fintech infrastructure, we have a large collection of active projects you may find useful:\n\n- [Moov Watchman](https://github.com/moov-io/watchman) offers search functions over numerous trade sanction lists from the United States and European Union.\n\n- [Moov Fed](https://github.com/moov-io/fed) implements utility services for searching the United States Federal Reserve System such as ABA routing numbers, financial institution name lookup, and FedACH and Fedwire routing information.\n\n- [Moov Wire](https://github.com/moov-io/wire) implements an interface to write files for the Fedwire Funds Service, a real-time gross settlement funds transfer system operated by the United States Federal Reserve Banks.\n\n- [Moov Image Cash Letter](https://github.com/moov-io/imagecashletter) implements Image Cash Letter (ICL) files used for Check21, X.9 or check truncation files for exchange and remote deposit in the U.S.\n\n- [Moov Metro 2](https://github.com/moov-io/metro2) provides a way to easily read, create, and validate Metro 2 format, which is used for consumer credit history reporting by the United States credit bureaus.\n\n\n## License\n\nApache License 2.0 - See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoov-io%2Fach","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoov-io%2Fach","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoov-io%2Fach/lists"}