Open Source ACH (Automated Clearing House) library implementing NACHA file creation and validation
Branch: master
Clone or download
Latest commit 455c580 Feb 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
cmd all: drop base.Time; restore Dates and Times to ach formatted strings Jan 11, 2019
documentation server: record ach_files_deleted metric Dec 14, 2018
examples/http all: drop base.Time; restore Dates and Times to ach formatted strings Jan 11, 2019
internal internal: use filepath.Join for cross-platform paths in codegen Jan 21, 2019
server
test
vendor vendor: update dependencies Feb 20, 2019
.codecov.yml refactor batch conversion code Feb 15, 2019
.gitignore
.travis.yml build: test with go1.12rc1 Feb 12, 2019
AUTHORS build: fix docker build Nov 6, 2018
CHANGELOG.md changelog++ Jan 14, 2019
CODE_OF_CONDUCT.md Create a Code of Conduct Oct 31, 2017
CONTRIBUTING.md
Dockerfile build: fix docker build Nov 6, 2018
Dockerfile-fuzz build: achfuzz bump to go1.11 Jan 29, 2019
LICENSE
README.md docs: mention fuzzing on readme and show steps to download crashers Feb 14, 2019
addenda02.go fix recordType bug Feb 14, 2019
addenda02_test.go fix recordType bug Feb 14, 2019
addenda05.go fix various tests Feb 15, 2019
addenda05_test.go
addenda10.go fix formatting Feb 15, 2019
addenda10_test.go
addenda11.go fix formatting Feb 15, 2019
addenda11_test.go fix formatting Feb 15, 2019
addenda12.go fix formatting Feb 15, 2019
addenda12_test.go fix formatting Feb 15, 2019
addenda13.go
addenda13_test.go
addenda14.go fix formatting Feb 15, 2019
addenda14_test.go fix formatting Feb 15, 2019
addenda15.go fix formatting Feb 15, 2019
addenda15_test.go fix formatting Feb 15, 2019
addenda16.go fix formatting Feb 15, 2019
addenda16_test.go fix formatting Feb 15, 2019
addenda17.go fix formatting Feb 15, 2019
addenda17_test.go fix formatting Feb 15, 2019
addenda18.go fix formatting Feb 15, 2019
addenda18_test.go
addenda98.go fix formatting Feb 15, 2019
addenda98_test.go fix formatting Feb 15, 2019
addenda99.go fix formatting Feb 15, 2019
addenda99_test.go fix formatting Feb 15, 2019
advBatchControl.go fix formatting Feb 15, 2019
advBatchControl_test.go fix various tests Feb 15, 2019
advEntryDetail.go fix formatting Feb 15, 2019
advEntryDetail_test.go fix recordType bug Feb 14, 2019
advFileControl.go
advFileControl_test.go fix recordType bug Feb 14, 2019
batch.go refactor batch conversion code Feb 15, 2019
batchACK.go convert batch errors to type system Jan 31, 2019
batchACK_test.go
batchADV.go
batchADV_test.go
batchARC.go
batchARC_test.go
batchATX.go
batchATX_test.go fix recordType bug Feb 14, 2019
batchBOC.go convert batch errors to type system Jan 31, 2019
batchBOC_test.go fix recordType bug Feb 14, 2019
batchCCD.go convert batch errors to type system Jan 31, 2019
batchCCD_test.go replenish code coverage Feb 12, 2019
batchCIE.go convert batch errors to type system Jan 31, 2019
batchCIE_test.go
batchCOR.go
batchCOR_test.go fix recordType bug Feb 14, 2019
batchCTX.go use new error system consistently Feb 12, 2019
batchCTX_test.go fix various tests Feb 15, 2019
batchControl.go fix various tests Feb 15, 2019
batchControl_test.go fix recordType bug Feb 14, 2019
batchDNE.go convert batch errors to type system Jan 31, 2019
batchDNE_test.go replenish code coverage Feb 12, 2019
batchENR.go convert batch errors to type system Jan 31, 2019
batchENR_test.go use new error system consistently Feb 12, 2019
batchErrors.go
batchHeader.go fix originator status code bug Feb 15, 2019
batchHeader_test.go fix various tests Feb 15, 2019
batchMTE.go
batchMTE_test.go
batchPOP.go convert batch errors to type system Jan 31, 2019
batchPOP_test.go fix recordType bug Feb 14, 2019
batchPOS.go
batchPOS_test.go fix various tests Feb 15, 2019
batchPPD.go convert batch errors to type system Jan 31, 2019
batchPPD_test.go use new error system consistently Feb 12, 2019
batchRCK.go convert batch errors to type system Jan 31, 2019
batchRCK_test.go fix formatting Feb 15, 2019
batchSHR.go use new error system consistently Feb 12, 2019
batchSHR_test.go fix various tests Feb 15, 2019
batchTEL.go convert batch errors to type system Jan 31, 2019
batchTEL_test.go
batchTRC.go fix formatting nits Feb 11, 2019
batchTRC_test.go fix formatting Feb 15, 2019
batchTRX.go use new error system consistently Feb 12, 2019
batchTRX_test.go
batchWEB_test.go
batchWeb.go fix originator status code bug Feb 15, 2019
batchXCK.go refactor field errors Feb 11, 2019
batchXCK_test.go
batch_test.go refactor batch conversion code Feb 15, 2019
batcher.go
converters.go all: drop base.Time; restore Dates and Times to ach formatted strings Jan 11, 2019
converters_test.go ACH Moov Authors Oct 2, 2018
doc.go docs: whitespace for godoc Nov 6, 2018
entryDetail.go fix formatting Feb 15, 2019
entryDetail_test.go fix recordType bug Feb 14, 2019
fieldErrors.go fix various tests Feb 15, 2019
file.go refactor entry record type code Feb 15, 2019
fileControl.go fix formatting Feb 15, 2019
fileControl_test.go fix recordType bug Feb 14, 2019
fileErrors.go use new error system consistently Feb 12, 2019
fileHeader.go
fileHeader_test.go fix recordType bug Feb 14, 2019
file_test.go fix recordType bug Feb 14, 2019
go.mod vendor: update dependencies Feb 20, 2019
go.sum vendor: update dependencies Feb 20, 2019
iatBatch.go use new error system consistently Feb 12, 2019
iatBatchHeader.go fix formatting Feb 15, 2019
iatBatchHeader_test.go fix recordType bug Feb 14, 2019
iatBatch_test.go
iatEntryDetail.go
iatEntryDetail_test.go
makefile build: build and push moov/achfuzz image also Jan 30, 2019
reader.go refactor field errors Feb 11, 2019
reader_test.go
record_test.go fix formatting Feb 15, 2019
renovate.json
validators.go fix various tests Feb 15, 2019
validators_test.go validators: add test for isCreditCardYear Jan 12, 2019
version.go release v0.6.0-rc7 Jan 18, 2019
writer.go ADV Updates Dec 6, 2018
writer_test.go

README.md

moov-io/ach

GoDoc Build Status Coverage Status Go Report Card Apache 2 licensed

Package github.com/moov-io/ach implements a file reader and writer written in Go along with a HTTP API for creating, parsing and validating Automated Clearing House (ACH) files. ACH is the primary method of electronic money movement throughout the United States.

Docs: docs.moov.io | api docs

Project Status

Moov ACH is under active development but already in production for multiple companies. Please star the project if you are interested in its progress. Right now we are building towards a fully supported HTTP API for ACH file creation and validation. Currently we support generating and parsing all Standard Entry Class (SEC) codes.

Usage

Go library

github.com/moov-io/ach offers a Go based ACH file reader and writer. To get started checkout a specific example:

Supported Standard Entry Class (SEC) codes
SEC Code Name Read Example Write Example
ACK Acknowledgment Entry for CCD Link Link
ADV Automated Accounting Advice Link Link
ARC Accounts Receivable Entry Link Link
ATX Acknowledgment Entry for CTX Link Link
BOC Back Office Conversion Link Link
CCD Corporate credit or debit Link Link
CIE Customer-Initiated Entry Link Link
COR Automated Notification of Change(NOC) Link Link
CTX Corporate Trade Exchange Link Link
DNE Death Notification Entry Link Link
ENR Automatic Enrollment Entry Link Link
IAT International ACH Transactions Link Link
MTE Machine Transfer Entry Link Link
POP Point of Purchase Link Link
POS Point of Sale Link Link
PPD Prearranged payment and deposits Link Link
RCK Represented Check Entries Link Link
SHR Shared Network Entry Link Link
TRC Check Truncation Entry Link Link
TRX Check Truncation Entries Exchange Link Link
TEL Telephone-Initiated Entry Link Link
TRC Truncated Check Entry Link Link
WEB Internet-initiated Entries Link Link
XCK Destroyed Check Entry Link Link

HTTP API

github.com/moov-io/ach/server offers a HTTP and JSON API for creating and editing files. If you're using Go the ach.File type can be used, otherwise just send properly formatted JSON. We have an example JSON file, but each SEC type will generate differnet JSON.

Examples: Go | Ruby

Getting Started

Configuration

Environmental Variable Description Default
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)

From Source

This project uses Go Modules and thus requires Go 1.11+. You can download the source code and we offer tagged and released versions as well. We highly recommend you use a tagged release for production.

$ git@github.com:moov-io/ach.git

# Just pull down into the Go Module's cache
$ go get -u github.com/moov-io/ach

$ go doc github.com/moov-io/ach BatchHeader

Getting Help

channel info
Project Documentation Our project documentation available online.
Google Group moov-users The Moov users Google group is for contributors other people contributing to the Moov project. You can join them without a google account by sending an email to moov-users+subscribe@googlegroups.com. After receiving the join-request message, you can simply reply to that to confirm the subscription.
Twitter @moov_io 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.
GitHub Issue If you are able to reproduce an problem please open a GitHub Issue under the specific project that caused the error.
moov-io slack Join our slack channel to have an interactive discussion about the development of the project. Request an invite to the slack channel

Supported and Tested Platforms

  • 64-bit Linux (Ubuntu, Debian), macOS, and Windows
  • Rasberry Pi

Note: 32-bit platforms have known issues and are not supported.

Contributing

Yes please! Please review our Contributing guide and Code of Conduct to get started!

Note: This project uses Go Modules, which requires Go 1.11 or higher, but we ship the vendor directory in our repository.

Fuzzing

We currently run fuzzing over ACH in the form of a moov/achfuzz Docker image. You can read more or run the image and report crasher examples to security@moov.io. Thanks!

License

Apache License 2.0 See LICENSE for details.