Home | Configuration | Running | Client
Moov Customers has been deprecated in favor of a more direct service for uploading ACH files. We’ve also realized that KYC/KYB, data modeling, workflows, and risk analysis are difficult to open-source. We are interested in hearing how you have solved these problems internally and want to develop something in the open.
This project focuses on verifying the identity of people who are legally able to hold and transfer currency in the United States. It provides services related to:
- Know Your Customer (KYC)
- Customer Identification Program (CIP)
- Office of Foreign Asset Control (OFAC) checks
- Verification workflows to comply with US federal law and ensure authentic transfers
The goal of this project is to provide objective, detailed due diligence on individuals and companies in the financial sector — in a modernized and extensible way.
Dependencies
This project contains several models used in the HTTP endpoints. These are generated from the OpenAPI specification in the /pkg/client Go package. The primary models used in this project are:
Customer
represents an individual or business (sole proprietorship or corporation).
For creating a Customer
, see the API documentation.
Approval is represented by the status
field of a Customer
and can have the following values: Deceased
, Rejected
, ReceiveOnly
, Verified
, Frozen
, Unknown
(default)
Approvals can only be done manually, but we are aiming for automated approval. In order for a Customer
to be approved into:
ReceiveOnly
requires an OFAC search that results in a value below the specified threshold.- This status is used to receive funds.
Verified
requires a valid Social Security Number (SSN) and an OFAC check.- This status is used to receive or send funds.
Account
represents a demand-deposit account at a financial institution. The account number is encrypted.
For creating an Account
, see the API documentation.
In order to use an account for ACH transactions, it will need to be validated. This ensures access and authorization to the financial instrument. This project supports the following strategies that can be used for account validation:
micro-deposits
- Two deposits of less than $0.25 (and an optional withdraw) transferred to the customer's bank accountinstant
- Vendors like Plaid and MX provide the ability to verify a customer's bank account instantly using their online banking credentials
See more information on how account validation strategies work.
Document
represents a customer's document uploaded to persistent storage. All documents are encrypted.
For uploading a Document
, see the API documentation.
Migrations allow the application's database schema to evolve over time. When an application starts, it automatically checks for database migrations and runs them if needed to keep the database schema up to date. Information about the current schema version (the latest applied migration) is stored in the schema_migrations
table.
Migrations are stored as files in the /migrations directory. Contents of each file are executed by the database driver. The migration files should consist of valid SQL queries. The file names must adhere to the format: {version}_{title}.up.sql
verision
of the migration should be represented as an integer with 3 digits (with leading zeros: e.g., 007). The migrations are applied in ascending order based on the version numbers. You can find examples of different migrations in ./migrations.title
should describe what the migration is doing, e.g.,create_accounts_table
,add_name_to_accounts
.
We use pkger to embed migration files into our application. Please install it before you proceed.
Running make embed-migrations
will generate a cmd/server/pkged.go
file with the encoded contents from the /migrations
directory which will be included into application build. Make sure to commit the generated file to the git repository.
channel | info |
---|---|
Documentation | Project documentation for our community. |
GitHub Issues | Public tracker of issues with our community. Please open a GitHub Issue if you're able to reproduce problems or to request features. |
Twitter @moov | You can follow Moov's Twitter feed to get updates on our projects. You can also tweet us to ask questions or share comments. |
Slack #moov-io | Join the slack channel to discuss with other contributors about the development of Moov's open source projects. |