# Submit a KYC Requirement

Submit a KYC requirement for a KYC Review.
- A KYC requirement can only be submitted if the KYC Review status is `WAITING_CUSTOMER_INPUT` or `PASSED_WITH_REQUIREMENTS`.
- A KYC requirement should only be submitted if its `state` is `NOT_PROVIDED` and `apiCollectionSupported` is `true`.

See the [KYC requirement types](/guides/product/kyc/wise-kyc/kyc-requirement-types) guide for the full list of supported requirement types, submission data structures, and accepted values.

Endpoint: POST /profiles/{profileId}/kyc-requirements/{requirementKey}
Version: 2026Q4
Security: UserToken

## Security:

  - `UserToken` (unknown)
    http bearer JWT

## Path parameters:

  - `profileId` (integer, required)
    The profile ID.

  - `requirementKey` (string, required)
    The KYC requirement type to submit.

See the [KYC requirement types](/guides/product/kyc/wise-kyc/kyc-requirement-types) guide for details on each type.

## Header parameters:

  - `X-External-Correlation-Id` (string)
    Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. [Learn more](/guides/developer/headers/correlation-id).

## Request fields (multipart/form-data):

  - `submissionData` (string, required)
    A JSON string containing the following fields:
- `data` — an object whose fields vary by requirement type. Some requirement types do not require a `data` field.
- `version` — the submission version, currently `"V1"`.
- `kycReviewId` — the ID of the KYC Review this submission belongs to.

For example, the JSON payload would look like below, but it should be included as a string value in the multipart form field:

```json
{
  "data": {
    "accountPurpose": "SENDING_MONEY_TO_FRIENDS_OR_FAMILY"
  },
  "version": "V1",
  "kycReviewId": "93a903ea-636c-4c86-a25c-cf6d2bd00e81"
}
```
See the [KYC requirement types](/guides/product/kyc/wise-kyc/kyc-requirement-types) guide for the `data` structure and accepted values for each requirement type.

  - `files` (array)
    One or more files to upload. Required for certain requirement types.
There are 3 accepted types for documents, they must be provided with the below content-type/Mime-type and have a matching file extension.
ContentType/MimeType & file extension:
- `image/png` & `.png`
- `image/jpeg` & (`.jpg` or `jpeg`)
- `application/pdf` & `.pdf`

See the [KYC requirement types](/guides/product/kyc/wise-kyc/kyc-requirement-types) guide for which types require files.

## Response 202:

  - `202` (unknown)
    KYC requirement successfully submitted.

## Response 202 headers:

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 400:

  - `400` (unknown)
    Invalid request. Common error scenarios:
- No `submissionData` provided
- No `kycReviewId` provided in submission data
- No `data` provided in submission data
- Invalid field values
- Missing required files

## Response 400 fields (application/json):

  - `type` (string)
    Example: /errors/types/validation

  - `title` (string)
    Example: Validation Error

  - `status` (integer)
    Example: 400

  - `instance` (string)

  - `detail` (string)

  - `errors` (array)

  - `errors.code` (string)

  - `errors.ref` (string)

  - `errors.detail` (string)

  - `errors.attributes` (object)

## Response 400 headers (application/json):

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 401:

  - `401` (unknown)
    User is not authorised to access the resource.

## Response 401 headers:

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 404:

  - `404` (unknown)
    KYC Review or provided requirement key not found.

## Response 404 headers:

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 429:

  - `429` (unknown)
    Rate limit exceeded. Retry after the number of seconds specified in the `Retry-After` header.

## Response 429 headers (application/json):

  - `Retry-After` (integer)
    Number of seconds to wait before retrying the request.
    Example: 5

  - `X-Rate-Limited-By` (string)
    Identifies the rate limiter that triggered the 429 response.
    Example: wise-public-api

  - `X-External-Correlation-Id` (string)
    Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
    Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

  - `x-trace-id` (string)
    Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
    Example: fba501b6d453b96789f52338f019341f

## Response 400 examples:

  - `No submissionData provided` (unknown)

  - `No kycReviewId provided` (unknown)

  - `No data provided` (unknown)

  - `Invalid field value` (unknown)

  - `Negative amount provided` (unknown)

  - `Invalid currency provided` (unknown)

  - `No files provided` (unknown)

  - `Mismatching fileNames provided` (unknown)

  - `Multiple files provided without frontFileName field` (unknown)

  - `Empty sourceOfWealthList provided` (unknown)

  - `No description when sourceOfWealthList is OTHER` (unknown)

  - `Short description when sourceOfWealthList is OTHER` (unknown)

  - `India transfer purpose submitted for non-INR currency` (unknown)

  - `India transfer purpose submitted to not accepted currency` (unknown)

  - `India transfer purpose invalid code` (unknown)

  - `India transfer purpose not required` (unknown)

  - `additionalDocumentFileName missing or empty` (unknown)

  - `educationPaidWithLoan missing` (unknown)

  - `educationPaidWithLoan not required` (unknown)

  - `loanDocumentFileName missing` (unknown)

  - `passportFileName missing or empty` (unknown)

  - `tcsTaxApplies missing` (unknown)

  - `Invalid sourceOfWealthList submission data` (unknown)

  - `Invalid sourceOfWealthType provided` (unknown)

  - `Invalid documentType provided` (unknown)

  - `File not matching fileName for shareholder` (unknown)

  - `Shareholder does not exist` (unknown)

  - `DocumentType not valid for shareholder` (unknown)

  - `Required array field empty` (unknown)

  - `Invalid values in array field` (unknown)

  - `No file matching specified fileName` (unknown)

  - `Invalid issuingCountry provided` (unknown)

  - `Golden visa declaration required` (unknown)

  - `Golden visa declaration values must be true` (unknown)

