Project Documentation
·
API Endpoints
·
API Guide
·
Community
·
Blog
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.
Moov Wire implements a reader, writer, and validator for the legacy Fedwire Funds Service message format (FAIM) — the proprietary tag-based format described in the Fedwire Application Interface Manual. The HTTP server is available in a Docker image and the Go package github.com/moov-io/wire is available.
Important
Fedwire Funds Service transitioned from FAIM to ISO 20022 on July 14, 2025.
The Federal Reserve Banks completed a single-day cutover to ISO 20022. FAIM is no longer accepted for live Fedwire Funds traffic. This repository remains available for historical FAIM files, archival processing, testing, and migration work.
For new Fedwire integrations, use Moov's ISO 20022 libraries:
| Project | Purpose |
|---|---|
moov-io/wire20022 |
Read, write, and validate Fedwire ISO 20022 XML messages (recommended) |
moov-io/fedwire20022 |
Generated Go types from the Fedwire ISO 20022 XSDs |
Official resources: ISO 20022 Implementation Center · Overview & implementation details
- Project Status
- Usage
- Learn About Wire
- FAQ
- Getting Help
- Supported and Tested Platforms
- Contributing
- Related Projects
Moov Wire is in maintenance mode for the legacy FAIM (Fedwire Application Interface Manual) format.
| Format | Fedwire Funds support | Moov project |
|---|---|---|
| ISO 20022 (XML) | Required as of July 14, 2025 | wire20022, fedwire20022 |
| FAIM (tag-based, format version 30) | Deprecated — not accepted for live traffic after July 11, 2025 | This repository (moov-io/wire) |
This library continues to parse, write, and validate FAIM messages for existing integrations, historical files, and migration tooling. We accept bug fixes and security updates; new FAIM feature work is unlikely. Please star the project if you still rely on it, and open an issue or pull request for bugs you find. Thanks!
The Wire project implements an HTTP server and Go library for creating and modifying legacy FAIM Fedwire files. We also have some examples of the reader and writer.
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
...
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
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) |
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.
This project uses Go Modules and Go v1.18 or newer. 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.
$ git@github.com:moov-io/wire.git
$ 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 |
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 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. We plan to support bidirectional conversion in the future.
- Intro to Fedwire (includes the ISO 20022 transition)
- FAIM message structure (legacy format implemented by this project)
- Fedwire Funds Service ISO 20022 Implementation Center
- Intro to Fedwire
- Sending or Receiving International Wires via the Fedwire Funds Service
Does this library support Fedwire ISO 20022?
No. This project implements the legacy FAIM format only. For ISO 20022 Fedwire messages, use moov-io/wire20022 (and optionally moov-io/fedwire20022 for generated XSD types).Is FAIM still valid on the Fedwire Funds Service?
No. After the Federal Reserve's July 14, 2025 cutover, live Fedwire Funds traffic must use ISO 20022. FAIM is retained here for historical files, testing, and migration.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/. It parses legacy FAIM files client-side.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?
For FAIM, we support generating and parsing all Business Function codes listed below. ISO 20022 message types are covered by wire20022.| 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. |
- 64-bit Linux (Ubuntu, Debian), macOS, and Windows
Note: 32-bit platforms have known issues and are not supported.
Yes please! Please review our Contributing guide and Code of Conduct to get started!
This project uses Go Modules and Go v1.18 or newer. 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.
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.
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.
We currently run fuzzing over Wire in the form of a Github Action. Please report crashes examples to oss@moov.io. Thanks!
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 Wire20022 reads, writes, and validates Fedwire ISO 20022 XML messages (successor format to FAIM).
-
Moov Fedwire20022 provides generated Go types from the Fedwire Funds ISO 20022 XSDs.
-
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.
Apache License 2.0 - See LICENSE for details.