All Projects → moov-io → wire

moov-io / wire

Licence: Apache-2.0 license
FedWire funds service file parser and writer. The HTTP server is available in a Docker image and the Go package is available.

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to wire

terms-dictionary
Simple definitions of terms, acronyms, abbreviations, companies, and projects related to financial services and Moov.
Stars: ✭ 48 (-7.69%)
Mutual labels:  money, fintech, banking, wire
bankster
Money Creation Made Easy
Stars: ✭ 30 (-42.31%)
Mutual labels:  money, fintech, banking
Ach
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.
Stars: ✭ 210 (+303.85%)
Mutual labels:  money, fintech
ultimateMICR-SDK
Bank check information extraction/OCR from Magnetic Ink Character Recognition [MICR] (E-13B & CMC-7) using deep learning
Stars: ✭ 42 (-19.23%)
Mutual labels:  fintech, banking
django-concurrency-talk
🎭 Database Integrity in Django: Safely Handling Critical Data in Distributed Systems
Stars: ✭ 49 (-5.77%)
Mutual labels:  money, banking
developer-resources
A list of useful links, our partners, as well as the stand out projects from the community
Stars: ✭ 86 (+65.38%)
Mutual labels:  fintech, banking
Akaunting
Free and Online Accounting Software
Stars: ✭ 4,599 (+8744.23%)
Mutual labels:  money, fintech
FinanceKit
FinanceKit is a Framework for iOS and Mac to build apps working with financial data, like money, currencies, stocks, portfolio, transactions and other concepts.
Stars: ✭ 15 (-71.15%)
Mutual labels:  money, banking
obp-apis
OpenBankingProject.ch Community APIs
Stars: ✭ 18 (-65.38%)
Mutual labels:  fintech, banking
py-investment
Extensible Algo-Trading Python Package.
Stars: ✭ 19 (-63.46%)
Mutual labels:  money, fintech
moneywave-nodejs
A client library for moneywave API
Stars: ✭ 16 (-69.23%)
Mutual labels:  fintech, banking
accounts
accounts - General Ledger and financial account service with an HTTP API
Stars: ✭ 39 (-25%)
Mutual labels:  fintech, banking
Australian-Open-Banking-Data-Database
This is an ongoing collection of Open Banking Data APIs for Australian deposit taking institutions.
Stars: ✭ 72 (+38.46%)
Mutual labels:  fintech, banking
mxfactorial
a payment application intended for deployment by the united states treasury
Stars: ✭ 36 (-30.77%)
Mutual labels:  fintech, banking
stockholm
💵 Modern Python library for working with money and monetary amounts. Human friendly and flexible approach for development. 100% test coverage + built-in support for GraphQL and Protocol Buffers transports using current best-practices.
Stars: ✭ 26 (-50%)
Mutual labels:  money, fintech
fints-institute-db
Database of German Banks and their HBCI / FinTS endpoints
Stars: ✭ 28 (-46.15%)
Mutual labels:  fintech, banking
ebics-java-client
Java open source EBICS client - Support for French, German and Swiss banks
Stars: ✭ 30 (-42.31%)
Mutual labels:  banking
CommandShop
Players have to pay items or money to use specific commands! A PocketMine plugin.
Stars: ✭ 32 (-38.46%)
Mutual labels:  money
costa-rica-iban
Funciones utiles para extraer y validar información general de números de cuenta IBAN de Costa Rica
Stars: ✭ 16 (-69.23%)
Mutual labels:  fintech
starling-developer-sdk
The official JavaScript development kit for building on the Starling API
Stars: ✭ 45 (-13.46%)
Mutual labels:  fintech

Moov Banner Logo

Project Documentation · API Endpoints · API Guide · Community · Blog

GoDoc Build Status Coverage Status Go Report Card Repo Size Apache 2 License Slack Channel Docker Pulls GitHub Stars Twitter

moov-io/wire

Moov'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.

Wire implements a reader, writer, and validator for FED Wire Messages (FEDWire) in an HTTP server and Go library. The HTTP server is available in a Docker image and the Go package github.com/moov-io/wire is available.

Table of contents

Project status

Moov Wire is actively used in multiple production environments. Please star the project if you are interested in its progress. If you have layers above Wire to simplify tasks, perform business operations, or found bugs we would appreciate an issue or pull request. Thanks!

Usage

The Wire project implements an HTTP server and Go library for creating and modifying Wire files. We also have some examples of the reader and writer.

Docker

We publish a public Docker image moov/wire on Docker Hub with every tagged release of Wire. No configuration is required to serve on :8088 and metrics at :9098/metrics in Prometheus format. We also have Docker images for OpenShift published as quay.io/moov/wire.

Pull & start the Docker image:

docker pull moov/wire:latest
docker run -p 8088:8088 -p 9098:9098 moov/wire:latest

List files stored in-memory:

curl localhost:8088/files
null

Create a file on the HTTP server:

curl -X POST --data-binary "@./test/testdata/fedWireMessage-CustomerTransfer.txt" http://localhost:8088/files/create
{"id":"<YOUR-UNIQUE-FILE-ID>","fedWireMessage":{"id":"","senderSupplied":{"formatVersion":"30", .....

Get the file in its original format:

curl http://localhost:8088/files/<YOUR-UNIQUE-FILE-ID>/contents
{1500}30User ReqT
{1510}1000
{1520}20190410Source08000001
...

Google Cloud Run

To get started in a hosted environment you can deploy this project to the Google Cloud Platform.

From your Google Cloud dashboard create a new project and call it:

moov-wire-demo

Enable the Container Registry API for your project and associate a billing account if needed. Then, open the Cloud Shell terminal and run the following Docker commands, substituting your unique project ID:

docker pull moov/wire
docker tag moov/wire gcr.io/<PROJECT-ID>/wire
docker push gcr.io/<PROJECT-ID>/wire

Deploy the container to Cloud Run:

gcloud run deploy --image gcr.io/<PROJECT-ID>/wire --port 8088

Select your target platform to 1, service name to wire, and region to the one closest to you (enable Google API service if a prompt appears). Upon a successful build you will be given a URL where the API has been deployed:

https://YOUR-WIRE-APP-URL.a.run.app

Now you can list files stored in-memory:

curl https://YOUR-WIRE-APP-URL.a.run.app/files

You should get this response:

null

Configuration settings

The following environmental variables can be set to configure behavior in Wire.

Environmental Variable Description Default
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
HTTPS_KEY_FILE Filepath of a private key matching the leaf certificate from HTTPS_CERT_FILE. Empty
WIRE_FILE_TTL Time to live (TTL) for *wire.File objects stored in the in-memory repository. 0 = No TTL / Never delete files (Example: 240m)

Data persistence

By design, Wire does not persist (save) any data about the files or entry details created. The only storage occurs in memory of the process and upon restart Wire will have no files or data saved. Also, no in-memory encryption of the data is performed.

Go library

This project uses Go Modules and uses Go v1.14 or higher. See Golang's install instructions for help setting up Go. 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.

$ [email protected]:moov-io/wire.git

# Pull down into the Go Module cache
$ go get -u github.com/moov-io/wire

$ go doc github.com/moov-io/wire fedWireMessage

The package github.com/moov-io/wire offers a Go-based Wire file reader and writer. To get started, check out a specific example:

Supported Business Function Codes
Business Function Code Name Example Read Write
DRB BankDrawDownRequest Link Link Link
BTR BankTransfer Link Link Link
CKS CheckSameDaySettlement Link Link Link
DRC CustomerCorporateDrawDownRequest Link Link Link
CTR CustomerTransfer Link Link Link
CTP CustomerTransferPlus Link Link Link
CTP CustomerTransferPlusCOVS Link Link Link
DEP DepositSendersAccount Link Link Link
FFR FEDFundsReturned Link Link Link
FFS FEDFundsSold Link Link Link
SVC ServiceMessage Link Link Link

In-browser Wire file parser

Using our in-browser utility, you can instantly convert Wire files into JSON. Either paste in Wire file content directly or choose a file from your local machine. This tool is particulary useful if you're handling sensitive PII or want perform some quick tests, as operations are fully client-side with nothing stored in memory. We plan to support bidirectional conversion in the future.

Learn about Fedwire

FAQ

Is there an in-browser tool for converting Wire files into JSON? Yes! You can find our browser utility at http://oss.moov.io/wire/.
Is my data being saved somewhere? No, we do not save any data related to files or message details. All processing is done in-memory.
What Fedwire message types are supported? We support generating and parsing all Business Function codes.

Getting help

channel info
Project Documentation Our project documentation available online.
Twitter @moov 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 a 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.

Supported and tested platforms

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

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!

This project uses Go Modules and uses Go v1.14 or higher. See Golang's install instructions for help setting up Go. 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.

Releasing

To make a release of wire 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.

Testing

We 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. Current overall coverage can be found on Codecov.

Fuzzing

We currently run fuzzing over wire in the form of a moov/wirefuzz Docker image. You can read more or run the image and report crasher examples to [email protected]. Thanks!

Related projects

As part of Moov's initiative to offer open source fintech infrastructure, we have a large collection of active projects you may find useful:

  • Moov Watchman offers search functions over numerous trade sanction lists from the United States and European Union.

  • Moov 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.

  • Moov Image Cash Letter implements Image Cash Letter (ICL) files used for Check21, X.9 or check truncation files for exchange and remote deposit in the U.S.

  • Moov ACH provides ACH file generation and parsing, supporting all Standard Entry Codes for the primary method of money movement throughout the United States.

  • Moov Metro 2 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.

License

Apache License 2.0 - See LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].