Skip to content
This repository has been archived by the owner on Aug 26, 2022. It is now read-only.

Latest commit

 

History

History
89 lines (62 loc) · 5.78 KB

README.md

File metadata and controls

89 lines (62 loc) · 5.78 KB

Customers

Home | Configuration | Running | Client


Project status

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.

Purpose

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:

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

  1. Fed
  2. PayGate
  3. Watchman

Models

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

Customer represents an individual or business (sole proprietorship or corporation). For creating a Customer, see the API documentation.

Customer Status and Approval

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

Account represents a demand-deposit account at a financial institution. The account number is encrypted. For creating an Account, see the API documentation.

Account Validation

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 account
  • instant - 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

Document represents a customer's document uploaded to persistent storage. All documents are encrypted. For uploading a Document, see the API documentation.

Database Migrations

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.

Creating a Migration

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.

Embedding Migrations

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.

Getting Help

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.

Next - Configuration