KYC

General information

Know Your Client (KYC) is an important compliance measure used by financial institutions to prevent fraud, money laundering, terrorist financing and other financial crimes.

It is important for financial institutions and other businesses to incorporate them into the authorization process to ensure that only legitimate customers or businesses are granted access. This can also help financial institutions comply with legal and regulatory requirements, avoid fines, penalties, etc.

HyperID's KYC Procedure

HyperID has implemented a KYC procedure that can range from basic to complete, depending on the level of verification required. Service Providers can leverage this KYC process in their own workflows through HyperID.

To ensure that the KYC process complies with local regulations and requirements, HyperID integrates multiple KYC providers covering different countries and jurisdictions. This allows service providers to easily adapt to different regulatory environments and ensure that their KYC process meets local standards.

Another advantage of the HyperID KYC system is that a single KYC process is applied to all wallets. This means that users only have to go through the KYC process once, regardless of how many wallets or accounts they have with different service providers.

This not only saves users time and effort, but also ensures that all accounts are consistent and secure, making it easier to detect and prevent fraudulent activity. HyperID's KYC procedures are highly reliable and secure because they are designed to protect the privacy and security of customers' personal information.

When it comes to KYC data, users have full control over their information. This means that they have the ability to decide which services can access their data and can revoke access at any time.

Users can also control the type of information that is sent to each service, and they can choose to send only the information that is necessary for that particular service. Control over KYC data is very important to users because it allows them to protect their privacy and security.

If a user has completed KYC verification once, service providers can verify their identity information either on-chain or via traditional REST API by using HyperID MultiPass.

An Example of a KYC Procedure

Here’s the common instructions on how users can get whitelisted for the public token offerings that can be implemented for service providers through the use of HyperID access and account management platform.

Check these preliminaries to make sure you are aware of the sale conditions:

  1. Create a HyperID account on https://login.hypersecureid.com/.

  2. Complete Know-Your-Customer (KYC) procedure.

Please note that the sequence of steps and the content of some instructions may vary depending on the terms and conditions of the sale.

Common Steps

  1. Go to [a link of the offering].

  2. On the web page, read the sale conditions and сlick Continue.

  3. Click Continue to HyperID. You will be redirected to the https://login.hypersecureid.com/ HyperID’s login page.

  4. To register a new HyperID account, click Create account.

  5. In the opened window, specify your Email, create a Password, and then confirm the password.

  6. When you finished filling out the fields, click Create account.

  7. After you complete registration of the HyperID account, HyperID will redirect you back to the sale webpage.

  8. Specify a wallet address you will be using at sale.

  9. Select the country of your residence.

  10. Click Start KYC. To complete KYC, provide correct information about yourself. Before submitting the files, please check and ensure they meet the KYC conditions.

  11. Select the "I agree to processing my personal data, as described in the Consent to Personal Data Processing" checkbox, and click Next.

The KYC procedure consists of five steps. For successful completion of KYC, please follow the on-screen instructions carefully and provide correct information.

KYC flow

Flow starts at the final point of the sign-in / sign-up scenario and its details depend on the specific KYC provider (usually the user is redirected to KYC provider domain and HyperID receives only the result of KYC procedure).The KYC provider is the third-party service that manages the KYC process. During the KYC procedure, users are required to provide certain personal and confidential documents to prove their identity. The KYC provider is responsible for securely storing and processing the user's private information, such as passport or identification card numbers, bank statements, and other sensitive data. HyperID provides two types of KYC:

  • basic: requires identity document, phone number verification and liveness check (selfie)

  • full: additionally to basic mode requires proof of residence

HyperID is not present inside KYC procedure and has no access to user’s personal data, provided for KYC. Following parameters must be added to authorization request to run KYC flow after authorization:

  • Add kyc-verification to scope parameter

  • Set verification_level parameter to 3 (for basic KYC) or 4 (full KYC).

KYC flow is unavailable for guest account (verification_level parameter is ignored for this case.).

KYC API

Service providers can receive information about the user KYC status. Worth noticing, HyperID DOES NOT STORE the KYC-related information - all requests are forwarded to the KYC providers.A user may fulfill the KYC information during the sign-in procedure (for details, see the KYC authorization flow).Service Providers can obtain top-level KYC status or detailed KYC information using following REST API requests

Kyc user status get

Request

Value

Description

URI

https://rs0.hypersecureid.com/kyc/user/status-get

Sandbox URI

https://rs0-sandbox.hypersecureid.com/kyc/user/status-get

Method

POST

Authorization

Bearer AA.BB.CC

Content-type

application/json

Scopes

email, kyc-verification

Body Json Field

Name

Required

Type

Description

request_id

false

int64

Opaque value used to maintain id between the request and response.

verification_level

false

int

See table bellow

Verification level

Value

Name

3

kyc basic

4

kyc full (default)

Example

POST /kyc/user/status-get
Host: rs0.hypersecureid.com
Authorization: Bearer AA.BB.CC
content-Type: application/json
{
    "request_id":         42,
    "verification_level": 3
}

Response

Body Json Field

Name

Type

Description

request_id

int64

Opaque value used to maintain id between the request and response.

verification_level

int

See table above

user_status

int

See table below

kyc_id

string

Applicant Id

first_name

string

last_name

string

birthday

string

country_a2

string

Country alpha 2 (two letters)

country_a3

string

Country alpha 3 (three letters)

provided_country_a2

string

Provided country alpha 2 (two letters)

provided_country_a3

string

Provided country alpha 3 (three letters)

address_country_a2

string

Address country alpha 2 (two letters)

address_country_a3

string

Address country alpha 3 (three letters)

phone_number_country_a2

string

Phone number country alpha 2 (two letters)

phone_number_country_a3

string

Phone number country alpha 3 (three letters)

phone_number_country_code

string

ip_countries_a2

json_array

ip_countries_a3

json_array

moderation_comment

string

Comments from moderator, if any

reject_reasons

json_array

Rejection reasons, if any

support_link

string

create_dt

uint64

review_create_dt

uint64

review_complete_dt

uint64

expiration_dt

uint64

result

int

See table below

KYC user status

Value

Name

0

none

1

pending

2

complete success

3

complete fail retrayable

4

complete fail final

5

deleted

Result

Value

Name

0

success

-1

fail by token invalid

-2

fail by token expired

-3

fail by access denied

-4

fail by service temporary not valid

-5

fail by invalid parameters

-6

fail by billing

-7

fail by user not found

-8

fail by user kyc deleted

Example

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{
    "request_id":                42,
    "result":                    0,
    "verification_level":        3,
    "user_status":               1,
    "kyc_id":                    "applicant_id",
    "first_name":                "fn",
    "last_name":                 "ln",
    "birthday":                  "birthday",
    "country_a2":                "country_a2",
    "country_a3":                "country_a3",
    "provided_country_a2":       "provided_country_a2",
    "provided_country_a3":       "provided_country_a3",
    "address_country_a2":        "address_country_a2",
    "address_country_a3":        "address_country_a3",
    "phone_number_country_a2":   "phone_number_country_a2",
    "phone_number_country_a3":   "phone_number_country_a3",
    "phone_number_country_code": "phone_number_country_code",
    "ip_countries_a2":           ["ip", "ip"...],
    "ip_countries_a3":           ["ip", "ip"...],
    "moderation_comment":        "moderation_comment",
    "reject_reasons":            ["reason", "reason"...],
    "support_link":              "support_link",
    "create_dt":                 1(uint64_t),
    "review_create_dt":          1(uint64_t),
    "review_complete_dt":        1(uint64_t),
    "expiration_dt":             1(uint64_t)
}

Kyc user status top level get

Request

Value

Description

URI

https://rs0.hypersecureid.com/kyc/user/status-top-level-get

Sandbox URI

https://rs0-sandbox.hypersecureid.com/kyc/user/status-top-level-get

Method

POST

Authorization

Bearer AA.BB.CC

Content-type

application/json

Scopes

email, kyc-verification

Body Json Field

Name

Required

Type

Description

request_id

false

int64

Opaque value used to maintain id between the request and response.

Example

POST /kyc/user/status-top-level-get
Host: rs0.hypersecureid.com
Authorization: Bearer AA.BB.CC
content-Type: application/json
{
    "request_id": 42
}

Response

Body Json Field

Name

Type

Description

request_id

int64

Opaque value used to maintain id between the request and response.

verification_level

int

See table below

user_status

int

See table below

create_dt

uint64

review_create_dt

uint64

review_complete_dt

uint64

result

int

See table below

Verification level

Value

Name

3

kyc basic

4

kyc full

KYC user status

Value

Name

0

none

1

pending

2

complete success

3

complete fail retrayable

4

complete fail final

5

deleted

Example

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
{
    "request_id":         42,
    "result":             0,
    "verification_level": 3,
    "create_dt":          1679314049,
    "review_create_dt":   1679314069,
    "review_complete_dt": 1679314349
}

Last updated