Many ICOs have to comply with KYC regulations, and end up rolling out custom solutions or integrating specific third party APIs and packages. This can be expensive, hard to customize, and time-consuming. We've seen this first hand working with ICO products at NoRestLabs and advising startups at MouseBelt so we created MouseKYC--an open-source solution to make it easier to hold an ICO.
What is KYC?
KYC (short for either "Know Your Client" or "Know Your Customer") is a process financial institutions and instrument issuers must perform when interacting with a new customer. These are put in place by different governments, and the rules differ from country to country. In most cases, the financial company interacting with a customer must know:
- Who is the customer you are interacting with?
- Where are they from / What laws are they subject to?
- Are they a risk to interact with?
What is MouseKYC?
To help validate identity and country of origin, we have created a registration application that can be hosted wherever users choose. It has 3 components:
- mouse-kyc-fe -- This is the frontend of the package, handling user registration, document upload, field entry and submission. On repeat visits, it keeps the status of the KYC registration. It is implemented in react.
- mouse-kyc-admin -- This is the admin panel of the package, handling approvals of registrations. Admins can approve, deny, and request more information from registrants to determine their identity and risk. It is implemented in react.
- mouse-kyc-be -- This package handles the API and processing of packages. It is powered by Nodejs + MongoDB.
These products combine to provide a KYC flow for anyone to integrate into the dashboard. Users just need to:
- Host the dashboard
- Set configurations
- Generate and store an API key
- Integrate to your existing dashboard
With this flow complete, anyone with an ICO can launch a simple dashboard to handle KYC during registration and take steps to meet compliance laws. Note that this solution is not legal advice, and must be chosen or disregarded at the advice of your lawyers. Always consult legal help to determine what compliance must be met in any type of token distribution event - online documentation is no substitute for legal help.
Our flow takes a users identity document, entered fields and selfie for comparison. Admins will be able to assess whether the user in the selfie is actually the user in the document, additionally requiring that the user identity themselves with the current date. This cuts down on fraud and account mining, which can negatively impact the price of an ICO or valid volume in an exchange. In addition to the standard features of comparing a passWe also have done some tests with passport vision APIs to provide a better user flow, landing on MRZ detection. If there are other suggestions for optimization, let us know!
To get started with the project: clone the 3 repos or fork them on github at mouse-kyc-be. You can integrate them into your ICO dashboard or exchange. If you come up with any features you would like to add and share, open a PR and we'll be happy to review!