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.

kyc flow redirect

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

Copy
Copied
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:

Copy
Copied
{
  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:

Copy
Copied
{
  source: "tilia",
  event: "tilia.kyc.complete",
  state: "cancel",
  result: "MANUAL_REVIEW", // or other possible KYC states
  trigger: "close-button"
}

Redirect flow

Copy
Copied
<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>