# How to use ShuftiPro

This article provides instructions on how to configure B2CORE to use the KYC provider, [ShuftiPro](https://shuftipro.com/). With ShuftiPro, you can conduct document and face verification to validate the identity of *individual* clients, as well as address and location verification.

In addition to document verification, you can enable the SuftiPro Anti-money laundering (AML) check to screen your clients against multiple AML data sources, helping to protect your company from potential money laundering activities.

{% hint style="info" %}
Before proceeding with the instructions, you must have signed up for SuftiPro and have an active account.
{% endhint %}

## How to configure a connection to ShuftiPro

Only admins who are assigned the permissions to manage external connections can set up a connection to ShuftiPro.

To set up a connection:

{% stepper %}
{% step %}
In the B2CORE Back Office, navigate to **System** > **External Connections**.
{% endstep %}

{% step %}
Click **+Create** in the upper-right page corner.
{% endstep %}

{% step %}
On the **Create connection** page, fill in the following fields:

* In the **Name** field, specify a name that you want to use for the connection.
* In the **Caption** field, specify a caption that will be applied to the connection in the Back Office.
* In the **Provider** dropdown, select **ShuftiPro**.
  {% endstep %}

{% step %}
Click **Save** to create the connection.
{% endstep %}

{% step %}
In the connections list, find the ShuftiPro connection that you've created and click **Edit** to enter the connection details.
{% endstep %}

{% step %}
On the **Edit connection** page, specify the following settings:

* In the **API host** field, specify `https://api.shuftipro.com`.
* In the **Client ID** and **Secret key** fields, specify the client ID and secret key value to access ShuftiPro.
* In the **New signature (for secrets after March 2023)** field, select either:
  * **No** — for clients who registered with ShuftiPro before March 15, 2023.
  * **Yes** — for clients who registered with ShuftiPro or updated their secret keys after March 15, 2023. This is needed to validate a key signature returned in ShuftiPro API responses (for details, refer to [Response Signature](https://developers.shuftipro.com/docs/verification_endpoints/responses#response-signature) in the ShuftiPro documentation).
* In the **Allow documents screenshots** dropdown, select **Enabled** to allow clients to upload document screenshots for verification, instead of requiring only live captures.

  By default, this option is disabled.
* In the **Check AML** dropdown, select **Enabled** to use the SuftiPro Anti-money laundering (AML) check. In this case, when clients submit documents for upgrading their verification levels they will be additionally screened against SuftiPro AML data sources, including multiple global watchlists, FATF lists, PEP lists, and Sanction lists, to prevent the risk of money laundering.

  By default, this option is disabled.

  When the AML check is enabled, a client must meet two conditions to obtain a higher verification level: the submitted documents must be verified, and the AML check must be successful. If either condition fails, the verification level upgrade will be rejected.
* In the **Show OCR form**, select:

  * **Enabled** — to display the OCR form during verification, enabling clients to review and confirm the information extracted from their submitted documents.
  * **Disabled** — to hide the form and skip the confirmation step.

  By default, the form is enabled.
  {% endstep %}

{% step %}
In the **Enabled** dropdown, select **Yes**.
{% endstep %}

{% step %}
Click **Save** to apply the settings.
{% endstep %}
{% endstepper %}

## How to create document groups for ShuftiPro verification

For **document verification**, create three document groups named `passport`, `id_card`, and `driving_license`. These groups enables you to request your clients to submit passports, national identity cards, and driving licenses for identity verification.

For **address verification**, multiple documents recognized by [SuftiPro for address verification](https://developers.shuftipro.com/docs/coverage/documents#address-verification--validation) are supported, including the document type named `any`. Therefore, create the necessary document groups using names that match the ShuftiPro document types, such as `rent_agreement`, `bank_letter_receipt`, `employer_letter`, `utility_bill`, `tax_bill`, `any`, or others. These groups enable you to request your clients to submit respective documents to confirm their address and location details, such as city or country.

{% hint style="info" %}
The document type `any` enables clients to submit any document that includes their name and address for address verification. It's not tied to any specific document type, providing more flexibility and convenience for clients when confirming their addresses.
{% endhint %}

For **face verification**, create the document group named `selfie`.

To create a document group:

{% stepper %}
{% step %}
In the B2CORE Back Office, navigate to **Verification** > **Document groups**.
{% endstep %}

{% step %}
Click **+Create** in the upper-right page corner.
{% endstep %}

{% step %}
On the **Create document group** page, fill in the following fields:

* In the **Name** field, specify the name of a document group.

{% hint style="info" %}
Ensure to specify document group names exactly as provided above, in lower case. For example: `passport`, `id_card`, `driving_license`, `selfie`, and so on.

For address verification, make sure to specify document group names exactly as listed in the [supported ShuftiPro document types](https://developers.shuftipro.com/docs/coverage/documents#address-verification--validation). For example: `rent_agreement`, `bank_letter_receipt`, `employer_letter`, `utility_bill`, `tax_bill`, `any`, or others.

The document group named `any` allows clients to submit any document that includes their name and address, rather than a specific document type. This gives clients more flexibility when verifying their address.
{% endhint %}
{% endstep %}

{% step %}

* In the **Caption** field, specify a document group caption that will be displayed in the B2CORE UI.
* In the **Type** dropdown, select **One**.
* In the **Description** field, specify a description for the document group that is used in the Back Office.
  {% endstep %}

{% step %}
Make sure that **Yes** is selected in the **Enabled** dropdown.
{% endstep %}

{% step %}
Click **Save** to create the document group.
{% endstep %}
{% endstepper %}

## How to create document types for ShuftiPro verification

For each document group that you've created, create a document type.

To create a document type:

{% stepper %}
{% step %}
In the B2CORE Back Office, navigate to **Verification** > **Document types**.
{% endstep %}

{% step %}
Click **+Create** in the upper-right page corner.
{% endstep %}

{% step %}
On the **Create document type** page, fill in the following fields:

* In the **Name** field, specify the name of a document type.

{% hint style="info" %}
Document type names must be the same as the names of the previously created document groups. For example: `passport`, `id_card`, `selfie`, `rent_agreement`, `bank_letter_receipt`, `employer_letter`, `utility_bill`, `tax_bill`, `any`, or others.
{% endhint %}
{% endstep %}

{% step %}

* In the **Caption** field, specify a document type caption that will be displayed in the B2CORE UI.
* In the **Description** field, specify a description for the document type that will be displayed in the B2CORE UI.
* In the **Group** dropdown, select a previously created document group with which this document type must be associated.
* In the **Max files** field, specify the maximum number of files that clients can upload for this document type.
  {% endstep %}

{% step %}
In the **Status** dropdown, select **Enabled**.
{% endstep %}

{% step %}
Click **Save** to create the document type.
{% endstep %}
{% endstepper %}

## How to create verification levels for ShuftiPro

You can create verification levels or modify the existing levels to use ShuftiPro for document, address, and face verification.

To create a verification level:

{% stepper %}
{% step %}
In the B2CORE Back Office, navigate to **Verification** > **Levels**.
{% endstep %}

{% step %}
Click **+Create** in the upper-right page corner.
{% endstep %}

{% step %}
On the **Create verification level** page, fill in the following fields:

* In the **Index** field, specify a non-zero integer value.

  The zero (`0`) index is always assigned to the default verification level. For other verification levels, the index must be greater than zero, such as `1` for Level 1, `2` for Level 2 and so on.
* In the **Wizard** dropdown, select `ShuftiProSDK`.

  The ShuftiPro popup will open in the B2CORE UI, enabling clients to follow the verification instructions and submit the required documents.
* In the **Caption** field, specify a level name that will be displayed in the B2CORE UI and mobile app, such as `Level 1`. If required, specify the localization properties for this field by clicking the button located on the right side of the field.
* In the **Desktop Description** field, specify a description of the level to be displayed in the B2CORE UI. This description can include the permissions granted to clients once they obtain this level.

  The description for the B2CORE UI can be specified in the HTML format. If required, specify the localization properties for this field.
* In the **Mobile Description** field, specify a level description to be displayed in the mobile app.

  The description for the mobile app can be specified in the JSON format. If required, specify the localization properties for this field.
* In the **Visible** dropdown, select **Yes**.
* In the **Default** dropdown, select **No**. (`Level 0` is always the default verification level).
* In the **Assigned Client Right** dropdown, select a permission level defining the set of permissions that you want to grant to your clients after obtaining this verification level (for details, refer to [Client rights](https://docs.b2core.b2broker.com/back-office-guide/system/client-rights)).
* In the **Document groups** dropdown, select one or more required document groups. For example, you can select `passport` and `selfie` if you want your clients to submit their passports and pass face verification to receive this level.
* In the **Client tests** dropdown, optionally select one or more accreditation tests if you want to force your clients to pass these tests before they can submit their documents for verification. The list of available tests includes all the tests with visibility set to **Yes**, which are displayed on the [Client tests](https://docs.b2core.b2broker.com/back-office-guide/verification/client-tests) page.
  {% endstep %}

{% step %}
Click **Save** to create the level.
{% endstep %}
{% endstepper %}

## How to add the domain for callbacks in ShuftiPro

To ensure that callbacks from ShuftiPro are successfully delivered and verification updates are received in B2CORE, you must add the domain part of your callback URL in your ShuftiPro account settings.

To add the domain:

{% stepper %}
{% step %}
Sign in to your SuftiPro account.
{% endstep %}

{% step %}
Go to **Settings** > **API Keys** > **Callback/Redirect URLs**.
{% endstep %}

{% step %}
Add the domain part of your callback URL. The domain of your callback URL is the same as the domain of your B2CORE Back Office.

{% hint style="warning" %}
For example, if your Back Office URL is `https://{your-Back-Office-URL}`, enter only `{your-Back-Office-URL}` — without `https://`.

Make sure to replace `{your-Back-Office-URL}` with the actual domain of your B2CORE Back Office.
{% endhint %}

<figure><img src="https://514898401-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGoRxAprhHu1goANW7FXt%2Fuploads%2Fgit-blob-8966b3b5c123199aa196808cebe624994eb0c7ed%2Fshuftipro-callback-domain.png?alt=media" alt="Add the domain for callbacks in ShuftiPro"><figcaption><p>Add the domain for callbacks in ShuftiPro</p></figcaption></figure>
{% endstep %}

{% step %}
Save your changes.
{% endstep %}
{% endstepper %}
