The Customers project focuses on solving authentic identification of humans who are legally able to hold and transfer currency within the US. Primarily this project solves Know Your Customer (KYC), Customer Identification Program (CIP), Office of Foreign Asset Control (OFAC) checks and verification workflows to comply with US federal law and ensure authentic transfers. Also, Customers has an objective to be a service for detailed due diligence on individuals and companies for Financial Institutions and services in a modernized and extensible way.

Running Moov Customers Server

  • The quickest way to try Customers is with our Docker compose setup.
  • Binary Distributions are released with every versioned release. Frequently added to the VM/AMI build script for the application needing Moov Customers.
  • A Docker container is built and added to Docker Hub with every versioned released.
  • Our hosted api.moov.io is updated with every versioned release. Our Kubernetes example is what Moov utilizes in our production environment.

Running Locally

Customers has a Docker Compose setup which you can run locally. This uses the latest releases of Customers and Watchman.

$ docker-compose up
Creating customers_watchman_1 ... done
Creating customers_customers_1 ... done
customers_1  | ts=2020-03-06T22:56:24.2184402Z caller=main.go:50 startup="Starting moov-io/customers server version v0.4.0-rc1"
customers_1  | ts=2020-03-06T22:56:24.393462Z caller=watchman.go:102 watchman="using http://watchman:8084 for Watchman address"
customers_1  | ts=2020-03-06T22:56:24.3951132Z caller=main.go:171 startup="binding to :8087 for HTTP server"

Once the systems start you can access Customers via http://localhost:8087 and Watchman's web interface or api.

Binary Distribution

Download the latest Moov Customers server release for your operating system and run it from a terminal.

$ ./customers-darwin-amd64
ts=2020-02-25T19:30:58.193727Z caller=main.go:50 startup="Starting moov-io/customers server version v0.4.0-rc1"
ts=2020-02-25T19:30:58.193846Z caller=main.go:63 main="sqlite version 3.30.1"
ts=2020-02-25T19:30:58.193863Z caller=sqlite.go:93 main="sqlite version 3.30.1"
ts=2020-02-25T19:30:58.196666Z caller=main.go:207 main="WARNING!!!! USING INSECURE DEFAULT FILE STORAGE, set FILEBLOB_HMAC_SECRET for ANY production usage"
ts=2020-02-25T19:30:58.196709Z caller=main.go:90 admin="listening on [::]:9097"
ts=2020-02-25T19:30:58.196747Z caller=watchman.go:102 watchman="using http://localhost:8084 for Watchman address"
ts=2020-02-25T19:30:58.19709Z caller=main.go:171 startup="binding to :8087 for HTTP server"

Docker Container

Moov Customers is dependent on Docker being properly installed and running on your machine. Ensure that Docker is running. If your Docker client has issues connecting to the service review the Docker getting started guide if you have any issues.

Execute the Docker run command

$ docker run -p 8087:8087 -p 9097:9097 moov/customers:latest
ts=2020-02-25T19:30:58.193727Z caller=main.go:50 startup="Starting moov-io/customers server version v0.4.0-rc1"


Moov deploys Customers from this manifest template on Kubernetes in the apps namespace. You could reach the Customers instance using http://customers.apps.svc.cluster.local:8080 inside the cluster.

We also offer a Helm Chart for deployment.


View our section on environmental variables for options that Customers accepts.

For database storage we offer SQLite (default) and MySQL with various configuration options.

Document storage can be in in a local filesystem, AWS S3, or Google Cloud Storage.

Customers Admin Port

The port :9097 is bound by Customers for our admin service. This HTTP server has endpoints for Prometheus metrics (GET /metrics), readiness (GET /ready) and liveness checks (GET /live).

API documentation

See our API documentation for Moov Customers endpoints.