Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/moov-io/fincen

Fincen BSA E-Filing forms
https://github.com/moov-io/fincen

ctr fbar fincen hacktoberfest sar

Last synced: about 1 month ago
JSON representation

Fincen BSA E-Filing forms

Awesome Lists containing this project

README

        

[![Moov Banner Logo](https://user-images.githubusercontent.com/20115216/104214617-885b3c80-53ec-11eb-8ce0-9fc745fb5bfc.png)](https://github.com/moov-io)


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




[![GoDoc](https://godoc.org/github.com/moov-io/fincen?status.svg)](https://godoc.org/github.com/moov-io/fincen)
[![Build Status](https://github.com/moov-io/fincen/workflows/Go/badge.svg)](https://github.com/moov-io/fincen/actions)
[![Coverage Status](https://codecov.io/gh/moov-io/fincen/branch/master/graph/badge.svg)](https://codecov.io/gh/moov-io/fincen)
[![Go Report Card](https://goreportcard.com/badge/github.com/moov-io/fincen)](https://goreportcard.com/report/github.com/moov-io/fincen)
[![Repo Size](https://img.shields.io/github/languages/code-size/moov-io/fincen?label=project%20size)](https://github.com/moov-io/fincen)
[![Apache 2 License](https://img.shields.io/badge/license-Apache2-blue.svg)](https://raw.githubusercontent.com/moov-io/fincen/master/LICENSE)
[![Slack Channel](https://slack.moov.io/badge.svg?bg=e01563&fgColor=fffff)](https://slack.moov.io/)
[![Docker Pulls](https://img.shields.io/docker/pulls/moov/fincen)](https://hub.docker.com/r/moov/fincen)
[![GitHub Stars](https://img.shields.io/github/stars/moov-io/fincen)](https://github.com/moov-io/fincen)
[![Twitter](https://img.shields.io/twitter/follow/moov?style=social)](https://twitter.com/moov?lang=en)

# fincen
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's fincen project implements a reader, writer, and validator for Fincen BSA forms in an HTTP server and Go library.

Fincen (Financial crimes enforcment network) BSA data transmission methods for the the BSA E-Filing System.

A go library for reading and writing Fincen BSA forms. It is capable of generating, validating, and batching submissions.

The HTTP server is available in a Docker image and the Go package github.com/moov-io/fincen is available.

## Table of contents

- [Project status](#project-status)
- [Supported Forms](#supported-forms)
- [Usage](#usage)
- As an API
- [Docker](#docker)
- [Google Cloud](#google-cloud-run)
- [HTTP API](https://moov-io.github.io/fincen/usage-docker/)
- [As a Go module](#go-library)
- [Build report form](#build-report-form)
- [As a command line tool](#command-line)
- [As an in-browser parser](#in-browser-fincen-form-parser)
- [Learn About Fincen](#learn-about-fincen)
- [FAQ](#faq)
- [Getting help](#getting-help)
- [Supported and tested platforms](#supported-and-tested-platforms)
- [Contributing](#contributing)
- [License](#license)

## Project status

The project is Fincen which is a financial reporting for the United States.

There are many forms that are required in this project. **Now implemented XML forms only in following link**.
(Non XML form will implement in another sub project)
https://bsaefiling.fincen.treas.gov/FilingInformation.html

The final phase of the project will be a service that collects fillings and then on a scheduled time will batch the fillings and submit them electronically.
https://bsaefiling.fincen.treas.gov/docs/SDTMRequirements.pdf

## Supported Forms

- FinCEN Currency Transaction Report (FinCEN Report 112)
- FinCEN Designation of Exempt Person (FinCEN Report 110)
- FinCEN Suspicious Activity Report (FinCEN Report 111)
- Report of Foreign Bank and Financial Accounts (FinCEN Report 114)
- Report of Cash Payments Over $10,000 Received in a Trade or Business (FinCEN Form 8300)

## Usage
The Fincen project implements an HTTP server and [Go library](https://pkg.go.dev/github.com/moov-io/fincen) for creating and modifying Fincen BSA forms.

### Docker

We publish a [public Docker image `moov/fincen`](https://hub.docker.com/r/moov/fincen/tags) on Docker Hub with every tagged release of Fincen.

Pull & start the Docker image:
```
docker pull moov/fincen:latest
docker run -p 8206:8206 -p 8207:8207 moov/fincen:latest
```

Validate a file on the HTTP server:
```
curl -X POST --data-binary "@./data/samples/ctr_batch.txt" http://localhost:8088/validator
```
```
{"status":"valid file"}
```

Reformat the file with generated attributes:
```
curl -X POST --data-binary "@./data/samples/ctr_batch.txt" http://localhost:8088/reformat
```
```


...
```

### 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](https://console.cloud.google.com/home/dashboard) create a new project and call it:
```
moov-fincen-demo
```

Enable the [Container Registry](https://cloud.google.com/container-registry) API for your project and associate a [billing account](https://cloud.google.com/billing/docs/how-to/manage-billing-account) if needed. Then, open the Cloud Shell terminal and run the following Docker commands, substituting your unique project ID:

```
docker pull moov/fincen
docker tag moov/fincen gcr.io//fincen
docker push gcr.io//fincen
```

Deploy the container to Cloud Run:
```
gcloud run deploy --image gcr.io//fincen --port 8206
```

Select your target platform to `1`, service name to `fincen`, 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-FINCEN-APP-URL.a.run.app
```

Now you can list files stored in-memory:
```
curl https://YOUR-FINCEN-APP-URL.a.run.app/files
```
You should get this response:
```
null
```

### Go library

This 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/fincen/releases/latest) as well. We highly recommend you use a tagged release for production.

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

$ go get -u github.com/moov-io/fincen
```
The package [`github.com/moov-io/fincen`](https://pkg.go.dev/github.com/moov-io/fincen) offers a Go-based Fincen file reader and writer.

### Build report form

**Creating XML Batch Reporting form**

Fincen project used general XML batch reporting form struct.
Available types are "SUBMISSION", "CTRX", "SARX", "DOEPX", "FBARX", "8300X"

```
// create report with type
newReport := NewReport(fincen.ReportSubmission)
```

**Adding activities by each type**

Activity should add into the form struct using sub package

```
// create activity (ctr)
var newActivity currency_transaction.ActivityType

...
setting newActivity
...

err := newReport.AppendActivity(&newActivity)
```

**Generating new xml attributes**
```
err = newReport.GenerateAttrs()
```

**Validating report form**
```
err = newReport.Validate()
```

### Command Line

The [`fincen` binary on each release](https://github.com/moov-io/fincen/releases/latest) can be used on the command line.

```
Work seamlessly with Fincen BSA form from the command line.

Usage:
fincen [flags]

Available commands:
summary: display form summary
validate: validate financial report form
reformat: reformat financial report for
```

### In-browser Fincen form parser
Using our [in-browser utility](http://oss.moov.io/fincen/), you can instantly verify and reformat Fincen BSA forms.

## Learn about Fincen
- [About the BSA E-Filing System](https://bsaefiling.fincen.treas.gov/AboutBsa.html)
- [Secure Direct Transfer Mode](https://bsaefiling.fincen.treas.gov/SDTMInfo.html)
- [Supervisory User Registration](https://bsaefiling1.fincen.treas.gov/AddUser)

## FAQ

Is there an in-browser tool?
Yes! You can find our browser utility at http://oss.moov.io/fincen/.

## Getting help

channel | info
------- | -------
[Project Documentation](https://moov-io.github.io/fincen/) | Our project documentation available online.
Twitter [@moov](https://twitter.com/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](https://github.com/moov-io/fincen/issues/new) | If you are able to reproduce a problem please open a GitHub Issue under the specific project that caused the error.
[moov-io slack](https://slack.moov.io/) | 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](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) to get started!

This 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/fincen/releases/latest) as well. We highly recommend you use a tagged release for production.

## License

Apache License 2.0 - See [LICENSE](LICENSE) for details.