A guide on how to setup KYC infrastructure

4 min readDec 25, 2023

To create a safe and fair environment for all users, it is important for Yumi to implement KYC procedures. By doing so, Yumi can minimize users’ risks and safeguard the buying and selling environment. KYC is particularly important for complying with regulatory laws, preventing fraud, detecting and preventing money laundering and terrorist financing, and building trust with users.

Yumi sorts out 3 KYC tiers of users to apply and get corresponding trading limitations. The trading limitation for Tier 1 is 10K USD, the trading limitation for Tier 2 is 50K USD, and the trading limitation for Tier 3 is customized by contact with us.

KYC Verification Flow Chart

  1. The user uses Internet Identity, Plug Wallet, or any preferred wallet on ICP to log in to the yumi kyc website through ic identity.
  2. After the user submits their real-name information and passes the real-person authentication, KYC tier 1 authentication will be automatically completed after fido authentication is successful.
  3. If the automatic authentication of Onfido certification fails, a manual review is required. After passing the review, the KYC tier1 certification will be completed.
  4. On the basis of KYC tier1 , users can submit tax and other related documents for KYC tier2 certification.
  5. Complete the KYC tier2 certification after passing the manual review.
  6. If the manual review fails, the KYC tier1 certification will continue to be maintained.
  7. Users apply for KYC level3 certification based on KYC tier2.
  8. Customer service will contact the user to complete KYC tier3 certification.
  9. If the customer service certification passes, complete the KYC tier3 certification.

Yumi KYC infrastructure consists of centralized and decentralized sections

Centralized infrastructure: Yumi works with Onfido

Onfido, renowned globally for its top-notch identity verification solutions, ensures your data security.

There are 3 steps to pass Onfido KYC.

Step 1: Basic Information Verification

  • Enter Details: Share your name, address, and country of residence.

Step 2: Document Verification

  • Capture Document: During onboarding, snap a photo of your passport, or other identity document with MRZ information.
  • Rapid AI Verification: Onfido’s AI confirms your document’s authenticity within seconds, boasting a 95% success rate.

Step 3: Biometric Verification

  • Selfie Check: Use your device’s camera to take a selfie.
  • AI Liveness Check: Onfido’s AI ensures the selfie is genuine, adding an extra layer of security.

Decentralized infrastructure: Yumi KYC ICP canisters

  1. Users registering KYC Onfido will automatically authenticate the document, if it fails, the admin will receive the document and manually check the information. The information will write in Yumi KYC canister when users pass the authentication.
  1. Users buying NFT on Yumi marketplace will query the user’s KYC tier and to check if the user is qualified to proceed with this transaction. If not, they need to go to the register page to submit more information to get KYC Tier 2 passed. If yes, he will purchase NFT successfully.

Yumi Open KYC canister interfaces

  1. Two in interface to check users’ KYC tiers

See more details:

  • icrc17_kyc_request

Interface description:User’s KYC and AML request to obtain the user’s KYC/AML status

Request parameters:

​​public type KYCNotification = {
amount : ?Nat;//ICP amount
counterparty : KYCAccount;//Transaction account
token : ?TokenSpec;token ticket
metadata : ?CandyShared;extra date, defaut as none
public type KYCAccount = {
#Account : [Nat8];
#Extensible : CandyShared;
#ICRC1 : {
owner : Principal;
subaccount : ?[Nat8];

Reture parameters:

public type KYCResult = {
aml : VerificationResult;//AML authenticate result
kyc : VerificationResult;//KYC authenticate result
amount : ?Nat;//Qualified trading amount passed authentication
message : ?Text;
token : ?TokenSpec;/token ticket
public type VerificationResult = {
  • icrc17_kyc_notification

Interface description: Notificate after user’s successful transaction, and accumulate transaction amount

Request parameters:

​​public type KYCNotification = {

amount : ?Nat;//Amount of transaction ICP

counterparty : KYCAccount;// transaction account

token : ?TokenSpec; transaction token

metadata : ?CandyShared;extra date, defaut as none


Reture parameters:None

  • Open a collaboration canister with a third-party project to share users’ KYC status and trading limitations without leaking real users’ information


See more information:




Yumi is an NFT marketplace built on Internet Computer blockchain. Ultra-fast, highly secure, low-cost and 100% decentralized with NFTs stored fully on-chain.