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:
-
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.
-
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.
-
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.
Configuration Steps
To enable and configure KYC user verification, follow these steps:
-
Set Deposit Limits:
- Navigate to the Settings page in the back office.
- Define a Deposit Limit Per Currency for each currency requiring KYC checks.
-
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.
- When invoking the Fluid widget, include the following properties in the FluidUserData object:
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'
}