---
updatedAt: 2026-10-08T14:54:50.000Z
agentTools:
  projectIndex: https://docs.sumsub.com/llms.txt
---

# Create applicant action

# Table of contents

* [Overview](#overview)
  * [Required permissions](#required-permissions)
  * [Auto-parser](https://docs.sums#auto-parser-for-bank-statement-transactions)
  * [Specifics of questionnaire action](#specifics-of-questionnaire-action)
* [Request examples](#request-examples)
* [Response explained](#response-explained)

# Overview

Use this method to create an [applicant action](https://docs.sumsub.com/sumsub/docs/applicant-actions) for a specific applicant with the [required steps](/docs/get-started-with-verification-level#configure-required-steps) configured in the specified [verification level](/docs/verification-levels).

You can create an applicant action to check the following:

* [Liveness & Face match](https://docs.sumsub.com/sumsub/docs/liveness#prevent-unauthorized-applicant-activities)
* [Payment source](https://docs.sumsub.com/sumsub/docs/payment-method-check-advanced)
* [Verification of Payee](https://docs.sumsub.com/sumsub/docs/verification-of-payee)
* [Short video fragment](https://docs.sumsub.com/sumsub/docs/short-video-fragment#prevent-unauthorized-applicant-activities)
* [Questionnaire](https://docs.sumsub.com/sumsub/docs/questionnaire)

Additionally, you can enable [auto-parser](#auto-parser-for-bank-statement-transactions) to search for a matching transaction in a bank statement.

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

  Any check specified in the request body must also be configured as a required step in the verification level; otherwise, it will not be performed. For example, if you add the `email` string to the request but do not include it as a required step in the level, the request will proceed without performing the email check.
</Callout>

## Required permissions

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

## Auto-parser for bank statement transactions

The system can automatically search for a matching transaction in a bank statement (PDF or screenshot) uploaded by an applicant as proof of account or payment. The search is based on transaction details that you provide via API when creating an applicant action.

### How it works

The auto-parser works as follows:

1. You submit transaction data in `paymentSource.checksum.txns` (see the auto-parsing [request example](#request-examples)).
2. The applicant uploads a bank statement (PDF or screenshot) as proof of account or payment.
3. The system automatically searches the statement for a matching transaction.

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

  If you submit an empty `paymentSource.checksum.txns` array, no check will be performed.
</Callout>

### How to enable

To enable this functionality, submit transaction data in `paymentSource.checksum.txns`. Matching is performed using the following parameters from your API request:

* `date` — transaction date.
* `amount` — transaction amount.
* `currencyCode` — currency code of the transaction.

### How to view results

The results of the automatic parsing are displayed in the Dashboard as cross-check indicators:

* **Green** — a matching transaction was found.
* **Red** — no matching transaction was found or the values do not match.

## Specifics of questionnaire action

If you want to include the answers to your [questionnaire](/docs/questionnaire) into the action request, add the questionnaire properties to the body parameters. The questionnaire object should be added to the `questionnaires` array (see the [example](#request-examples) below).

**Questionnaire object example:**

```json
{
  "id": "Example_Questionnaire",
  "sections": {
    "section_id_1": { // Section ID
      "items": {
        "item_id_0": { // Item ID
          "values": [ // Item values
            "EUR",
            "USD"
          ]
        },
        "item_id_1": { // Item ID
          "value": "String Value", // Item values, string
        }
      }
    },
    "section_id_2": { // Section ID
      "items": {
        "item_id_3": { // Item ID
          "value": null // Item values, null
        }
      }
    }
  }
}
```

# Request examples

```curl Typical action
curl -X POST \
     'https://api.sumsub.com/resources/applicantActions/-/forApplicant/63e096c51b6b4030f2e00000?levelName=some-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 '{
          "externalActionId": "yourActionId",
          "email": "example@email.com",
          "phone": "+49 123456789"
        }'
```
```curl Payment source action
curl -X POST \
     'https://api.sumsub.com/resources/applicantActions/-/forApplicant/63e096c51b6b4030f2e00000/?levelName=action%20paymentSource%20level-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 '{
            "paymentSource": {
              "fixedInfo": {
                "accountIdentifier": "XXX000333",
                "email": "example@email.com",
                "fullName": "John Doe",
                "type": "bankCard",
                "institutionName": "someBank"
              }
            },
            "externalActionId": "yourActionId"
          }'
```
```curl Payment Source VoP action
curl -X POST \
     'https://api.sumsub.com/resources/applicantActions/-/forApplicant/63e096c51b6b4030f2e00000/?levelName=action%20paymentSource%20level-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 '{
            "paymentSource": {
              "fixedInfo": {
                "type": "bankStatement",
                "fullName": "John Doe",
                "accountIdentifier": "GB82MTCH00000000000000"
              }
            },
            "externalActionId": "yourActionId"
          }'
```
```curl Auto-parsing action
curl -X POST \
     'https://api.sumsub.com/resources/applicantActions/-/forApplicant/63e096c51b6b4030f2e00000/?levelName=action%20paymentSource%20level-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 '{
          "paymentSource": {
            "fixedInfo": {
              "type": "bankStatement"
            },
            "checksum": {
              "txns": [
                {
                  "date": "2024-01-23 23:00:00",
                  "amount": 9.99,
                  "currencyCode": "USD"
                },
                {
                  "date": "2024-01-22 23:00:00",
                  "amount": 10.00,
                  "currencyCode": "USD"
                },
                {
                  "date": "2023-08-08 23:00:00",
                  "amount": 15.00,
                  "currencyCode": "USD"
                }
              ]
            }
          },
          "externalActionId": "123"
        }'
```
```curl Questionnaire action
curl -X POST \
     'https://api.sumsub.com/resources/applicantActions/-/forApplicant/63e096c51b6b4030f2e00000?levelName=questionnaire-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 '{
          "questionnaires": [
            {
              "id": "Example_Questionnaire",
              "sections": {
                "section_id_1": { // Section ID
                  "items": {
                    "item_id_0": { // Item ID
                      "values": [ // Item values
                        "EUR",
                        "USD"
                      ]
                    },
                    "item_id_1": { // Item ID
                      "value": "String Value", // Item values, string
                    }
                  }
                },
                "section_id_2": { // Section ID
                  "items": {
                    "item_id_3": { // Item ID
                      "value": null // Item values, null
                    }
                  }
                }
              }
            }
          ],
          "externalActionId": "yourActionId",
          "email": "example@email.com",
          "phone": "+49 123456789"
        }'
```

# Response explained

The response is a JSON file that represents the structured  information of the created action. You can see the response structure and possible content with descriptions on the [following page](https://docs.sumsub.com/sumsub/reference/get-action-information#root-variables).

## Response examples

### Successful example

If the request is successfully sent and processed, you will get a response like the one below.

```json
{
  "id": "6855288fd81d19bd5d6065e9",
  "createdAt": "2025-06-20 09:23:27",
  "clientId": "your_cool_id",
  "externalActionId": "yourActionId",
  "applicantId": "63e096c51b6b4030f2e00000",
  "type": "paymentMethod",
  "review": {
    "reviewId": "oaEgS",
    "attemptId": "UHQzN",
    "attemptCnt": 0,
    "levelName": "paymentSource",
    "createDate": "2025-06-20 09:23:27+0000",
    "reviewStatus": "init"
  },
  "requiredIdDocs": {
    "docSets": [
      {
        "idDocSetType": "PAYMENT_METHODS",
        "types": [
          "PAYMENT_SOURCE"
        ]
      }
    ]
  },
  "paymentSource": {
    "id": "b50c1d57-f603-480f-ae34-e9372d75612d",
    "createdAt": "2025-06-20 09:23:27",
    "fixedInfo": {
      "type": "bankCard",
      "institutionName": "cool_institution_name",
      "institutionNameEn": {
        "value": "cool_institution_name",
        "originalValue": null
      },
      "fullName": "John Doe",
      "fullNameEn": {
        "value": "John Doe",
        "originalValue": null
      },
      "accountIdentifier": "XXX000333"
    }
  }
}
```

### Error example

If the request fails, you will receive an HTTP response containing an error code along with a message explaining the error. For example:

```json
{
  "code": 400,
  "correlationId": "739729362eab0cff71570c16bf85a000",
  "description": "Action with externalActionId 111999333 already exists for applicant 6a3a31a5112f220818744427"
}
```

# 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/applicantActions/-/forApplicant/{applicantId}": {
      "post": {
        "summary": "Create applicant action",
        "description": "",
        "operationId": "create-applicant-action",
        "parameters": [
          {
            "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
          },
          {
            "name": "levelName",
            "in": "query",
            "description": "[Verification level](https://docs.sumsub.com/sumsub/docs/verification-levels) name. 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>The level must be of the <b>Applicant action</b> type. Otherwise, you will get a 400 error saying \"Level is not suitable for actions\".</li><li>The 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 does not allow creating an applicant with the level name 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></ul>",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "externalActionId"
                ],
                "properties": {
                  "externalActionId": {
                    "type": "string",
                    "description": "Unique identifier of the applicant action on your side.<br><br>⚠️ This value must be unique across your entire account — reusing an `externalActionId` for a different applicant action (whether for the same applicant or a different one) causes the request to be rejected."
                  },
                  "paymentSource": {
                    "type": "object",
                    "description": "Represents the payment source data and includes specific information about the payment method required from the applicant.",
                    "properties": {
                      "fixedInfo": {
                        "type": "object",
                        "description": "Additional fixed information related to a payment source.",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Payment source type that can be `bankCard`, `bankAccount`, `bankStatement`, `eWallet`, or `cryptoWallet`. <br><br>⚠️ This field is rather important as it determines what the applicant will see within the WebSDK flow.",
                            "enum": [
                              "bankCard",
                              "bankAccount",
                              "bankStatement",
                              "eWallet",
                              "cryptoWallet"
                            ]
                          },
                          "fullName": {
                            "type": "string",
                            "description": "Full name of the payment source account holder (for example, John Doe)."
                          },
                          "accountIdentifier": {
                            "type": "string",
                            "description": "Unique payment source account identifier."
                          },
                          "institutionName": {
                            "type": "string",
                            "description": "Name of the financial institution where the payment source account is held (for example, Revolut)."
                          },
                          "country": {
                            "type": "string",
                            "description": "Alpha-3 code of the country where the financial institution is registered (for example, `DEU`, `GBR`, `ARG`)."
                          },
                          "email": {
                            "type": "string",
                            "description": "Email address associated with the payment source account."
                          },
                          "phone": {
                            "type": "string",
                            "description": "Phone number associated with the payment source account."
                          },
                          "validUntil": {
                            "type": "string",
                            "description": "Date when the payment source account validity expires. Format: `YYYY-MM-DD`.",
                            "format": "date"
                          },
                          "cryptoChain": {
                            "type": "string",
                            "description": "Crypto chain name. Mandatory for crypto tokens only. Specifies the network name to which the token at currencyCode belongs. Empty for native tokens (for example, for `BTC`, `ETH`). For more information, see [Working with Crypto Assets](https://docs.sumsub.com/sumsub/reference/working-with-crypto-assets). \n\n⚠️ Applicable to the `cryptoWallet` type only."
                          },
                          "currencyCode": {
                            "type": "string",
                            "description": "Code of the currency the wallet holds (for example, `USD`, `GBP`, `BTC`). \n\n⚠️ Applicable to the `cryptoWallet` type only."
                          },
                          "memo": {
                            "type": "string",
                            "description": "Optional field to attach metadata or messages for identification, routing, or compliance purposes. \n\n⚠️ Applicable to the `cryptoWallet` type only."
                          }
                        }
                      },
                      "checksum": {
                        "type": "object",
                        "description": "Required only if you want to enable [auto-parsing for bank statement transactions](#auto-parser-for-bank-statement-transactions).",
                        "properties": {
                          "txns": {
                            "type": "array",
                            "description": "Transaction details.",
                            "items": {
                              "properties": {
                                "date": {
                                  "type": "string",
                                  "description": "Date and time (UTC) of the transaction, in the format `YYYY-MM-DD hh:mm:ss` (for example, `2024-01-23 23:00:00`).",
                                  "format": "date-time"
                                },
                                "amount": {
                                  "type": "number",
                                  "description": "Transaction amount. Must be a positive floating point value (> 0).",
                                  "format": "double"
                                },
                                "currencyCode": {
                                  "type": "string",
                                  "description": "Code of the currency used in the transaction (for example, `USD`, `GBP`, `BTC`)."
                                }
                              },
                              "type": "object"
                            }
                          }
                        }
                      }
                    }
                  },
                  "questionnaires": {
                    "type": "array",
                    "description": "Add the `questionnaire` object within. See [Specifics of questionnaire action](#specifics-of-questionnaire-action) for more details."
                  },
                  "email": {
                    "type": "string",
                    "description": "Applicant email address.<br><br>It is mandatory if the [email verification](https://docs.sumsub.com/sumsub/docs/email-and-phone-verification) is required. If not provided, the applicant cannot receive [verification status emails](https://docs.sumsub.com/sumsub/docs/review-results-in-applicant-profile#send-verification-status-email)."
                  },
                  "phone": {
                    "type": "string",
                    "description": "Applicant phone number.<br><br>It is mandatory if the [phone verification](https://docs.sumsub.com/sumsub/docs/email-and-phone-verification) is required."
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```