# Compliance

## Option 1. Import User KYC Verification <a href="#option-1.-import-user-kyc-verification" id="option-1.-import-user-kyc-verification"></a>

Service - [![](https://sumsub.com/raw/favicon.svg)Sumsub - Online Identity Verification Service](https://sumsub.com/)

We support SumSub KYC Applicant Sharing, meaning you can use their service to provide KYC processing of a user and then share their data with Kriptomat. Allowing the user to be KYC approved on Kriptomat.

To do this you will need a SumSub account and our Sumsub client\_id. Please refer to [![](https://developers.sumsub.com/favicon/favicon-16x16.png)API Reference | Sumsub Developer Hub](https://developers.sumsub.com/api-reference/#sharing-applicants-between-partner-services) for more information about the process.

\
Generate a share token on SumSub API /resources/accessTokens/-/shareToken?applicantId={applicantId}\&forClientId={clientId}

```
{ 
    "token": "_act-460a698b-d2bc-4cbc-9456-5f36fee38083", 
    "forClientId": "CoolCoinLtd" 
}
```

Pass the token to us - importing their KYC data into Kriptomat

### `POST v1/users/{user}/kyc-import` <a href="#post-v1-users-user-kyc-import" id="post-v1-users-user-kyc-import"></a>

```
Example here 
```

This will return

```
{ 
    "status": true 
}
```

You can get User’s verification results via webhook:

When we are talking about verification results we typically mean two labels:

| Value | Description           |
| ----- | --------------------- |
| GREEN | Everything is fine    |
| RED   | Some violations found |

Once verification finished, we will send you a POST request with JSON payload to the URL provided to us while integrating. Oftentimes, there are different URLs for staging and production environments. We may send several types of webhooks, but the one of interest here is the `applicantReviewed` webhook. This type of webhook is expected to arrive at average after 3-5 minutes, but can take up to 24 hours, in theory.

You can also check the status of the User’s KYC status via `GET v1/users/{user}`

kyc\_status in the response will indicate the status of User’s KYC check

| **kyc\_status** | **Description**                                                                                      |
| --------------- | ---------------------------------------------------------------------------------------------------- |
| not\_started    | If ‘not\_started’ the user has not undergone KYC and you can start that process by using a 3rd Party |
| verified        | If ‘verified’, you can carry on with the user flow.                                                  |
| failed          | If ‘failed’ or ‘declined’ you will not be able to serve that user.                                   |
| declined        | If ‘failed’ or ‘declined’ you will not be able to serve that user.                                   |

## Option 2. Request KYC verification

You can take advantage of KriptoRamp’s KYC Integration and use it to verify your Users, by requesting request for a KYC check.

### `POST v1/users/{user_id}/kyc-request` <a href="#post-v1-users-user_id-kyc-request" id="post-v1-users-user_id-kyc-request"></a>

This will return the link for the KYC check.

```
{ 
        "status": true, 
        "data": { 
                "vefificationLink": https://sumsub.io/check-link 
        } 
}
```

Once you receive the link to the verification check, by accessing it Users can continue with KriptoRamp’s User verification.

You can get User’s verification results via webhook or you can check the status of User’s KYC status via `GET v1/users/{user}` as explained in Option 1 above

## Option 3. Share KYC check <a href="#option-3.-share-kyc-check" id="option-3.-share-kyc-check"></a>

In case you use another KYC provider, you can post gathered User information to KriptoRamp, and request a verification check from KriptoRamp using its KYC provider.

### 1. Create applicant <a href="#id-1.-create-applicant" id="id-1.-create-applicant"></a>

Pass collected information about the user:

`1POST v1/users/{user_id}/kyc-share`

| Name           | Type   | Required | Description                                                                                                 |
| -------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------- |
| firstName      | String | Yes      | First name.                                                                                                 |
| lastName       | String | Yes      | Last name.                                                                                                  |
| middleName     | String | No       | Middle name.                                                                                                |
| firstNameEn    | String | No       | Automatic transliteration of the first name.                                                                |
| lastNameEn     | String | No       | Automatic transliteration of the last name.                                                                 |
| middleNameEn   | String | No       | Automatic transliteration of the middle name.                                                               |
| legalName      | String | No       | Legal name.                                                                                                 |
| gender         | String | No       | Sex of a person (`M` or `F`).                                                                               |
| dob            | String | No       | Date of birth (format `YYYY-mm-dd`, e.g. 2001-09-25).                                                       |
| placeOfBirth   | String | Yes      | Place of birth.                                                                                             |
| countryOfBirth | String | Yes      | Country of birth.                                                                                           |
| stateOfBirth   | String | No       | State of birth.                                                                                             |
| country        | String | Yes      | Alpha-3 country code (e.g. `DEU` or `RUS`) ([Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3)). |
| nationality    | String | No       | Alpha-3 country code ([Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3)).                       |
| addresses      | Array  | No       | List of addresses.                                                                                          |

**`addresses` ELEMENTS FIELDS:**

| Name           | Type   | Required | Description                                                                    |
| -------------- | ------ | -------- | ------------------------------------------------------------------------------ |
| postCode       | String | Yes      | Postal code.                                                                   |
| town           | String | Yes      | Town or city name.                                                             |
| street         | String | Yes      | Street name.                                                                   |
| subStreet      | String | No       | Additional street information.                                                 |
| state          | String | No       | State name if applicable.                                                      |
| buildingName   | String | No       | Building name if applicable.                                                   |
| flatNumber     | String | No       | Flat or apartment number.                                                      |
| buildingNumber | String | Yes      | Building number.                                                               |
| startDate      | String | No       | Start date of stay in current building (format `YYYY-mm-dd`, e.g. 2001-09-25). |
| endDate        | String | No       | End date of stay in current building (format `YYYY-mm-dd`, e.g. 2002-10-26).   |

response

```
{ 
    "status": true, 
    "data": { 
        "user_id": "5f80e6b7155a6336271e4677", 
        "email": "john@doe.io", 
        "name": "John", 
        "surname": "Doe", 
        "phone": "+381631283023", 
        "place_of_birth":"City A", 
        "country_of_birth":"Country B", 
        "date_of_birth": "1963-09-23", 
        "address": "Some street 123", 
        "building_number": "123", 
        "city": "Frankfurt", 
        "postal_code": "60306", 
        "country": "DEU", 
        "status": "active", 
        "kyc_status": "initiated", 
        "IdDocType": { 
            "PASSPORT", 
            "DRIVERS", 
            "ID_CARD" 
        } 
    } 
} 

```

In the response we will return the collected information from the request and the information about supported documents based in the `country` parameter value.

### 2. Upload the documents <a href="#id-2.-upload-the-documents" id="id-2.-upload-the-documents"></a>

`POST v1/users/{user_id}/kyc-share/upload-documents`

Share the documents with KriptoRamp

**FORM DATA**

| Name     | Type   | Required | Description                           |
| -------- | ------ | -------- | ------------------------------------- |
| metadata | Object | Yes      | An object representing an ID document |
| content  | Binary | No       | A photo of a document                 |

**REQUEST `metadata` BODY PART FIELDS**

| Name         | Type   | Required | Description                                                                                                |
| ------------ | ------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| idDocType    | String | Yes      | See supported document types [here](https://developers.sumsub.com/api-reference/#supported-document-types) |
| idDocSubType | String | No       | `FRONT_SIDE`, `BACK_SIDE` or null                                                                          |
| country      | String | Yes      | 3-letter country code ([Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3))                      |

* If a document is double-sided submit two images and set up `idDocSubType` properly (`FRONT_SIDE` and `BACK_SIDE`)
* Make sure to send `BACK_SIDE` if `FRONT_SIDE` was already sent otherwise verification step won't be completed, and you won't be able to initiate a check.

**Response**

```
{
    "status": true, 
    "data": { 
        "idDocType": "PASSPORT", 
        "country": "FRA", 
        "error":"" 
    } 
}
```

```
{
    "status": false,
    "data": {
        "idDocType": "PASSPORT",
        "country": "FRA",
    }
}
```

KriptoRamp will perform User verification check with its KYC provider based on the information received from you.

You can get User’s verification results via webhook or you can check the status of User’s KYC status via `GET v1/users/{user}` as explained in Option 1 above.
