Know Your Customer (KYC) Flow
This flow allows a user to provide information and documents to verify identity. It starts with a check for a signed Tilia Terms of Service (TOS) and, if necessary, presents the user with the TOS UI before allowing them to proceed. The user is then routed to the KYC flow, where they are presented with a form that is used to collect data required for KYC due diligence.
In the KYC flow, the user may be asked to provide the following:
- Country information
- Personal information, including birthdate
- Contact information, including address
- Extra files, in the form of identification documents (e.g., government-issued Photo ID, utility bill)
Upon completion, the data is submitted for KYC verification, and the flow returns information describing the account's KYC status. Possible values are:
Value | Description |
---|---|
NODATA |
No KYC data has been submitted for the account |
ACCEPT |
The account's KYC data has been verified. |
DENY |
The account's KYC data has been rejected. |
MANUAL_REVIEW |
The account's KYC data is under manual review by the Tilia Compliance Team. |
REVERIFY |
The account's KYC data must be resubmitted. |
Accounts must have valid KYC data on file (<kyc.result>
must return a value of ACCEPT
) in order to perform regulated activities, such as requesting and receiving payouts.
Widget flow
window.Tilia.execute({
rootId: "my-div", // for a div with id="my-div"
flow: "kyc",
redirect: widgetRedirectUrl,
onComplete: handleComplete,
onError: handleError,
theme: {
backgroundColor: "#323232",
primaryColor: "#47CC00"
}
});
The appearance of the widget can be customized by adjusting the values in theme
. Refer to UI Customization for more information.
The handleComplete
callback is invoked by the widget with the result of the flow.
If the user completes the flow with a KYC status of ACCEPT
:
{
source: "tilia",
event: "tilia.kyc.complete",
state: "complete",
result: "ACCEPT",
trigger: "continue-button"
}
If the user completes the flow with any KYC status other than ACCEPT
:
{
source: "tilia",
event: "tilia.kyc.complete",
state: "cancel",
result: "MANUAL_REVIEW", // or other possible KYC states
trigger: "close-button"
}
Redirect flow
<a href=”<redirectUrl>?flow=kyc&returnurl=<your.return.url>”>Start Identity Verification</a>
Upon completion, the user is routed to your redirect URL, which has the following query string parameters added:
- If the user cancels anywhere in the flow:
state=cancel
-
If the user completes the flow:
state=complete
result=<kyc.result>