Skip to main content

KYC User Verification Flow

Fluid provides the capability to integrate KYC (Know Your Customer) user verification directly into the Fluid widget. This integration helps enforce deposit restrictions based on verification status and ensures compliance with regulatory requirements.

Parameters for KYC Checks

Fluid uses the following parameters to determine whether KYC checks are required and what actions to take:

  • Deposit Limit Per Currency: The maximum amount a user can deposit in a specific currency before verification is required.
  • User Lifetime Deposit: The total amount the user has deposited so far across all transactions.
  • User KYC Status: The current verification status of the user.

KYC Action Scenarios

Based on the user's KYC status and deposit history, the system will handle the deposit flow as follows:

  1. Limit Not Reached:

    If the user's lifetime deposit has not exceeded the deposit limit for the currency, they will be:

    • Prompted in the chat box to complete verification.
    • Shown the maximum amount they can deposit before verification is mandatory.

Screenshot of Limit not reached

  1. Limit Reached:

    If the user's lifetime deposit equals or exceeds the deposit limit, they will be:

    • Prompted in the chat box to complete verification.

Screenshot of Limit reached

  1. Verification in Progress:

    If the user's verification process is already underway, they will be:

    • Notified that verification is being processed.
    • Advised to close the wallet while waiting for verification completion.

Screenshot of verification in progress

Configuration Steps

To enable and configure KYC user verification, follow these steps:

  1. Set Deposit Limits:

    • Navigate to the Settings page in the back office.
    • Define a Deposit Limit Per Currency for each currency requiring KYC checks.
  2. Pass Required Data:

    • When invoking the Fluid widget, include the following properties in the FluidUserData object:
      • lifetimeDeposit: The user's total deposit amount.
      • kycStatus: The user's current KYC status.

KYC Status Representation

The kycStatus field uses an enum from the @fluidpayments/types package. The possible values are:

export enum FluidKycStatus {
VERIFIED = 'verified',
UNVERIFIED = 'unverified',
PROCESSING = 'processing'
}