---
updatedAt: 2026-10-01T13:45:18.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Change level and reset steps

# Table of contents

* [Overview](#overview)
  * [Required permissions](#required-permissions)
* [Request examples](#request-examples)
  * [Change verification level](#change-verification-level)
  * [Change level and reset steps](#change-level-and-reset-steps)
  * [Reset verification steps](#reset-verification-steps)
  * [Available steps to reset](#available-steps-to-reset)
* [Response explained](#response-explained)

# Overview

Use this method to change a verification level and/or reset specific verification steps.

This endpoint is useful when your verification requirements change after an applicant has already started the process. For example, if you initially required only an ID document and a selfie, but now need to collect proof of address, you can use this method to adjust the flow accordingly.

Depending on your use case, you can do the following:

* [Change a verification level](#change-verification-level).
* [Change a verification level and reset one or several verification steps in the new level](#change-level-and-reset-steps).
* [Reset a specific verification step of the level](#reset-verification-steps).

This method supports both individual and company applicants. Refer to the [request examples](#request-examples) below for implementation details.

## Required permissions

To use this method, your [app token](https://docs.sumsub.com/sumsub/docs/app-tokens) must have the following [permissions](https://docs.sumsub.com/sumsub/docs/user-roles#permissions):

* **Reset applicants**
* **Change verification level**

<Callout icon="🚧" theme="warn">
  ### Attention

  Make sure to [check the applicant status](https://docs.sumsub.com/sumsub/reference/get-applicant-verification-steps-status) before applying the method. You will not be able to use it if `reviewStatus` of the applicant is `pending`, `queued` or `onHold`.
</Callout>

<Callout icon="📘" theme="info">
  ### Note

  If you are using our SDKs, you can initialize it with suitable `levelName` on `accessToken` and SDK will change the level automatically.
</Callout>

# Request examples

Below, you can see the request examples for different usage scenarios where the method can be applied.

## Change verification level

To change a verification level for a specific applicant, submit the applicant identifier (`applicantId`) along with the name of a new level (`name`) you want to assign to the applicant as shown in the examples below.

```curl For individual applicants
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5f80e6b7155a6336271e0000/moveToLevel?name=kyc-with-poa' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>'
```
```curl For company applicants
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5f80e6b7155a6336271e3333/moveToLevel?name=basic-kyb-level' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>'
```

[In the response](#response-explained), pay attention to the following updated fields:

* `requiredIdDocs` — configuration of steps for the applicant to complete verification.
* `levelName` — the name of the new verification level that you have assigned for the applicant.

## Change level and reset steps

You can also change a verification level and reset one or several [verification steps](#available-steps-to-reset) in this new level. To do this, submit the applicant identifier (`applicantId`) along with the name of a new level (`name`) and the `docSets` object with all `idDocSetType` attributes that have the value(s) representing the step(s) to reset as shown in the examples below.

<Callout icon="📘" theme="info">
  ### Notes

  - For individual applicants, you can add the `“resetOnlyIfUnsuitable”: true` parameter to the `idDocSetType` to enable flexible step reset. This parameter is only applicable to the following steps: `IDENTITY`, `IDENTITY2`, `IDENTITY3`, `IDENTITY4`, `PROOF_OF_RESIDENCE`, `PROOF_OF_RESIDENCE2`, `SELFIE`, `SELFIE2`, `QUESTIONNAIRE`.
  - For company applicants, you may include the `companyDocsGroupDefinitions` object to reset only specific sub-steps.
  - Resetting the `PHONE_VERIFICATION` step also clears the applicant's confirmed phone number stored in the top-level `phone` field, in addition to deactivating the phone-confirmation check. After the reset, the phone step no longer pre-fills the previously entered number in the SDK, and the applicant must enter and confirm a number again. The `info.phone` (extracted) and `fixedInfo.phone` (provided) numbers are stored separately and remain unaffected.
</Callout>

```curl For individual applicants
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5f80e6b7155a6336271e0000/moveToLevel?name=kyc-new-level' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>'
  -d '{
        "docSets": [
          {
            "idDocSetType": "IDENTITY",
            "resetOnlyIfUnsuitable": true  // Enable flexible reset
          },
          {
            "idDocSetType": "PROOF_OF_RESIDENCE"  // Enable reset
          }
        ]
      }'
```
```curl For company applicants
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5f80e6b7155a6336271e3333/moveToLevel?name=kyb-new-level' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>'
  -d '{
          "docSets": [
              {
                  "idDocSetType": "COMPANY_DATA"
              },
              {
                  "idDocSetType": "COMPANY_DOCUMENTS",
                  "companyDocsGroupDefinitions": [
                      "legalPresence",
                      "companyDetails"
                  ]
              }
          ]
      }'
```

## Reset verification steps

To reset only a verification step or a few steps, submit the applicant identifier (`applicantId`) along with the current level name (`name`) and the `docSets` object with all `idDocSetType` attributes that have the value(s) representing the step(s) to reset as shown in the examples below.

This method differs from [another dedicated endpoint](https://docs.sumsub.com/sumsub/reference/reset-single-verification-step) in that it allows resetting multiple verification steps simultaneously. See the list of [available steps for reset](#available-steps-to-reset) below.

<Callout icon="📘" theme="info">
  ### Notes

  - For individual applicants, you can add the `“resetOnlyIfUnsuitable”: true` parameter to the `idDocSetType` to enable flexible step reset. This parameter is only applicable to the following steps: `IDENTITY`, `IDENTITY2`, `IDENTITY3`, `IDENTITY4`, `PROOF_OF_RESIDENCE`, `PROOF_OF_RESIDENCE2`, `SELFIE`, `SELFIE2`, `QUESTIONNAIRE`.
  - For company applicants, you may include the `companyDocsGroupDefinitions` object to reset only specific sub-steps.
</Callout>

```curl For individual applicants
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5f80e6b7155a6336271e0000/moveToLevel?name=kyc-new-level' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>'
  -d '{
        "docSets": [
          {
            "idDocSetType": "IDENTITY",
            "resetOnlyIfUnsuitable": true  // Enable flexible reset
          },
          {
            "idDocSetType": "PROOF_OF_RESIDENCE"  // Enable reset
          }
        ]
      }'
```
```curl For company applicants
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5f80e6b7155a6336271e3333/moveToLevel?name=kyb-level-name' \
  -H 'Content-Type: application/json' \
  -H 'X-App-Token: <your-app-token>' \
  -H 'X-App-Access-Sig: <your-signature>' \
  -H 'X-App-Access-Ts: <unix-timestamp>'
  -d '{
          "docSets": [
              {
                  "idDocSetType": "COMPANY_DATA"
              },
              {
                  "idDocSetType": "COMPANY_DOCUMENTS",
                  "companyDocsGroupDefinitions": [
                      "legalPresence",
                      "companyDetails"
                  ]
              }
          ]
      }'
```

## Available steps to reset

The following table details the verification steps available for reset.

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>
        Step
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `COMPANY_DATA`
      </td>

      <td>
        Only dedicated for company applicants (KYB 2.0).

        It represents the Company required step for verification. The step configuration depends on what is set in the associated verification level.
      </td>
    </tr>

    <tr>
      <td>
        `COMPANY_DOCUMENTS`
      </td>

      <td>
        Only dedicated for company applicants (KYB 2.0).

        It represents the Company required step for verification. Depending on the step configuration in the associated verification level, it can have one or more document groups for verification.
      </td>
    </tr>

    <tr>
      <td>
        `APPLICANT_DATA`
      </td>

      <td>
        A verification type where applicants need to provide personal data in the fields pre-configured when adding the **Applicant data** step to the verification level.

        For example, you could select the field types from the predefined list and request such data as the first name, last name, phone number, date of birth, tax residence country, and so on, or add custom fields to request additional information.
      </td>
    </tr>

    <tr>
      <td>
        `IDENTITY`
      </td>

      <td>
        [ID verification](https://docs.sumsub.com/sumsub/docs/identity-verification) where applicants must submit a photo of identity document to be verified. This type is added to the verification level as the **Identity document** step.

        When adding this step, you can request to submit an ID card, passport, driver’s license, and residence permit as an identity document either all or some of them at one step, or configure additional steps (**IDENTITY2**, **IDENTITY3**, **IDENTITY4**) for each document.

        ⚠️ Mind that if you have selected all the available document types in one step, you will not be able to add another **IDENTITY** step to the level.
      </td>
    </tr>

    <tr>
      <td>
        `IDENTITY2`
      </td>

      <td>
        Same as **IDENTITY**. Used in case you decide to add a separate required step to the verification level for each document or some of them.
      </td>
    </tr>

    <tr>
      <td>
        `IDENTITY3`
      </td>

      <td>
        Same as **IDENTITY**. Used in case you decide to add a separate required step to the verification level for each document or some of them.
      </td>
    </tr>

    <tr>
      <td>
        `IDENTITY4`
      </td>

      <td>
        Same as **IDENTITY**. Used in case you decide to add a separate required step to the verification level for each document or some of them.
      </td>
    </tr>

    <tr>
      <td>
        `SELFIE`
      </td>

      <td>
        A verification type where applicants need to complete any of the following **Selfie** options:<ul><li>Go through the <a href="doc:liveness">advanced liveness check</a>.</li><li>Provide a <a href="doc:short-video-fragment">short video fragment</a>.</li><li>Submit a selfie with a document (only for WebSDK 1.0).</li><li>Create and submit a web camera photo.</li></ul>

        If you need an applicant to pass two steps of the above, add the 2nd selfie step to the verification level.
      </td>
    </tr>

    <tr>
      <td>
        `SELFIE2`
      </td>

      <td>
        Same as **SELFIE**. Used in case you need to add another **Selfie** option to the verification level.
      </td>
    </tr>

    <tr>
      <td>
        `PROOF_OF_RESIDENCE`
      </td>

      <td>
        [Address verification](https://docs.sumsub.com/sumsub/docs/address-verification) where applicants are required to provide proof of residency. At this step, the option of using geolocation is available.

        If you need an applicant to provide one more document for residence confirmation, add the **2nd proof of address** step to the verification level.
      </td>
    </tr>

    <tr>
      <td>
        `PROOF_OF_RESIDENCE2`
      </td>

      <td>
        Similar to `PROOF_OF_RESIDENCE`. Used in case you need to add another **Proof of address** step to the verification level.

        Mind that the option of using geolocation for PoA is unavailable at this step.
      </td>
    </tr>

    <tr>
      <td>
        `PAYMENT_METHODS`
      </td>

      <td>
        A verification type where applicants confirm which payment methods they use — bank card, bank account, e-wallet, or crypto wallet.
      </td>
    </tr>

    <tr>
      <td>
        `QUESTIONNAIRE`
      </td>

      <td>
        A verification type where applicants are required to fill in the pre-configured [questionnaire](https://docs.sumsub.com/sumsub/docs/questionnaire).

        Note that you cannot add this step to the verification level if no questionnaire is [created](https://docs.sumsub.com/sumsub/docs/questionnaire-get-started) in your system.
      </td>
    </tr>

    <tr>
      <td>
        `PHONE_VERIFICATION`
      </td>

      <td>
        A verification type where the [applicant’s phone number is checked](https://docs.sumsub.com/sumsub/docs/email-and-phone-verification) to verify whether it is blocklisted or not, and how much risk the specified phone number poses.
      </td>
    </tr>

    <tr>
      <td>
        `EMAIL_VERIFICATION`
      </td>

      <td>
        A verification type where the [applicant's email address is checked](https://docs.sumsub.com/sumsub/docs/email-and-phone-verification) to verify its credibility, whether it is blocklisted or not, and how much risk the specified email address poses.
      </td>
    </tr>

    <tr>
      <td>
        `E_KYC`
      </td>

      <td>
        Non-doc type of verification where applicants are verified through government databases and official bank verification systems without documents.

        For more information, see [Non-Doc Verification](https://docs.sumsub.com/sumsub/docs/no-document-verification).
      </td>
    </tr>
  </tbody>
</Table>

<br />

<Callout icon="📘" theme="info">
  ### Note

  The `COMPANY_BENEFICIARIES` step cannot be reset. To remove a beneficiary applicant from the company's control and ownership structure, use the [following method](https://docs.sumsub.com/sumsub/reference/unlink-beneficiary-from-company-kyb-20).
</Callout>

# Response explained

The response is a JSON object representing the applicant profile, enriched with structured data.

You can see the response structure, possible content with descriptions, and examples of response on [this page](https://docs.sumsub.com/sumsub/reference/get-applicant-data#response-explained).

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "sumsub-api",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.sumsub.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "name": "X-App-Token",
        "in": "header",
        "x-default": ""
      }
    }
  },
  "security": [
    {
      "sec0": []
    }
  ],
  "paths": {
    "/resources/applicants/{applicantId}/moveToLevel": {
      "post": {
        "summary": "Change level and reset steps",
        "description": "",
        "operationId": "change-level-and-reset-steps",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "The name of the [verification level](https://docs.sumsub.com/sumsub/docs/verification-levels) you want to assign to the applicant. The level determines the verification steps the applicant must complete and the [documents that are required](/reference/get-applicant-data#requirediddocs-attributes) for verification. <br><br>⚠ Mind the following: <ul><li>A level has to be created in the same [environment](https://docs.sumsub.com/sumsub/docs/sandbox-mode). For example, in the Sandbox mode, you may not be able to use a level configured to be only available in the Production environment.</li><li>A level name is case-sensitive. <code>Kyc-level</code> and <code>kyc-level</code> are considered as completely different level names. The system will not allow assigning a level that does not exist.</li><li>If a level name contains reserved characters (for example, <code>@</code>, <code>+</code>, white spaces as <code>%20</code>), it should be URL-encoded, otherwise you may get a signature mismatch.</li><li>The system does not allow updating the company profile with a level for individuals and vice versa.</li></ul>",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "applicantId",
            "in": "path",
            "description": "Unique applicant identifier in the Sumsub system. <br><br>This identifier is a random combination of 24 digits and lowercase Latin characters. It is automatically generated when the applicant is created on the Sumsub side, and can be found in the [Dashboard](https://cockpit.sumsub.com/checkus/#/applicants/individual?limit=10&page=0). <br><br>If the `applicantId` is unknown to you, use the [Get applicant data (externalUserId)](https://docs.sumsub.com/sumsub/reference/get-applicant-data-via-externaluserid) method to fetch it.",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "docSets": {
                    "type": "array",
                    "description": "Includes the objects representing specific configurations of document sets and their attributes.",
                    "items": {
                      "properties": {
                        "idDocSetType": {
                          "type": "string",
                          "description": "Human-readable identifiers of the document set types representing verification steps, for example, IDENTITY, SELFIE, PROOF_OF_RESIDENCE, and so on.  <br><br>ⓘ Refer to the [list of available steps](#available-steps-to-reset) below.",
                          "enum": [
                            "COMPANY_DATA",
                            "COMPANY_DOCUMENTS",
                            "APPLICANT_DATA",
                            "IDENTITY",
                            "IDENTITY2",
                            "IDENTITY3",
                            "IDENTITY4",
                            "SELFIE",
                            "SELFIE2",
                            "PROOF_OF_RESIDENCE",
                            "PROOF_OF_RESIDENCE2",
                            "PAYMENT_METHODS",
                            "QUESTIONNAIRE",
                            "PHONE_VERIFICATION",
                            "EMAIL_VERIFICATION",
                            "E_KYC"
                          ]
                        },
                        "resetOnlyIfUnsuitable": {
                          "type": "boolean",
                          "description": "If set to `true`, it enables flexible step reset when changing a level and resetting steps. The step is reset only if the verification conditions on the new level differ from the current ones (for example, `IDENTITY`: compared by document type, number of required sides, required fields, and document expiration date; `QUESTIONNAIRE`: compared by questionnaire ID). Default value: `false`. <br><br>⚠️ Applicable only for **individual applicants** and the following steps (`idDocSetType`): `IDENTITY`, `IDENTITY2`, `IDENTITY3`, `IDENTITY4`, `PROOF_OF_RESIDENCE`, `PROOF_OF_RESIDENCE2`, `SELFIE`, `SELFIE2`, `QUESTIONNAIRE`."
                        },
                        "companyDocsGroupDefinitions": {
                          "type": "array",
                          "description": "Definitions of required document groups that are <b>only applicable to company applicants</b> and represent verification substeps.  <br><br>Available values are the following: `legalPresence`, `companyDetails`, `ownershipStructure`, `controlStructure`, `representativesAuthorization`, `other1`, `other2`, `other3`. <br><br>⚠️ When submitted, only associated substeps will be reset.",
                          "default": [],
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": false
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```