---
title: "KYC review state change"
method: POST
path: "kyc-reviews#state-change"
tags: ["webhook-event", "kyc-review"]
---

# KYC review state change

`POST kyc-reviews#state-change` (webhook)

Triggered when a KYC review state has changed.

{% admonition type="info" %}
In previous versions, this event fired only when the overall KYC review state changed. In **v5.0.0**, it fires on every requirement or additional requirement state change, which may result in receiving more events. See `data.resource.prevState` and `data.resource.requirementChanges` for details on what changed.
{% /admonition %}

* Event type: `kyc-reviews#state-change`
* Profile level subscriptions: Not Supported
* Application level subscriptions: Supported

See the [Webhooks guide](/guides/developer/webhooks) for setup instructions, signature verification, and best practices.

## Headers

- `X-Signature-SHA256` string
- `X-Delivery-Id` string, uuid
- `X-Test-Notification` boolean

## Payload

- union
  - V500
    - `schema_version` '5.0.0' — Version of the event schema. Determined by the `schema_version` on your [webhook subscription](/api-reference/webhook).
    - `subscription_id` string, uuid — ID of the webhook subscription that triggered this event.
    - `event_type` string — Event type identifier
    - `sent_at` string, date-time — Timestamp when the event was sent.
    - `data` object
      - `resource` object
        - `id` string, uuid — ID of the KYC Review.
        - `state` string — Status of the KYC Review. See [KYC review status](/guides/product/kyc/wise-kyc/hosted-kyc/kyc-review-status.md) for possible values.
        - `prevState` string — Previous status of the KYC review. See [KYC review status](/guides/product/kyc/wise-kyc/hosted-kyc/kyc-review-status.md) for possible values.
        - `profileId` integer — ID of the profile KYC review belongs to.
        - `requiredBy` string, date-time — Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is `PASSED_WITH_REQUIREMENTS`.
        - `createdAt` string, date-time — Timestamp marking the creation of the KYC review.
        - `updatedAt` string, date-time — Timestamp marking the last update of the KYC review.
        - `triggerReferences` object[] — List of trigger references for this KYC review.
          - `type` 'QUOTE' | 'TRANSFER' | 'PROACTIVE_SEND_MONEY' | 'ADD_MONEY' | 'CARD' | 'BANK_ACCOUNT_DETAILS' | 'INFO_REQUEST' — Type of the underlying action/process this KYC review is for. Usually a reference to which product this KYC review is for (like `QUOTE` or `TRANSFER`) or a reference to a KYC process on the profile that isn't related to a specific product (like `REFRESH_CYCLE` or `REPAPERING`).
          - `triggerData` object — Key-value Object containing metadata of the underlying product object that triggered the KYC review. For `QUOTE`, `TRANSFER` and `ADD_MONEY` types, `triggerData` contains an `id` field that refers to their respective IDs. For `BANK_ACCOUNT_DETAILS`, `triggerData` has a field called `currencies` that contains a list of currencies (ex: USD, SGD, EUR) the bank details have been created for. | `triggerReference.type` | Field | Type | |-----------------------|-------------|----------------| | `QUOTE` | `id` | uuid | | `TRANSFER` | `id` | long | | `ADD_MONEY` | `id` | long | | `BANK_ACCOUNT_DETAILS` | `currencies` | list of string | This ID might be null if underlying action is a process like `REPAPERING`.
        - `requirements` array[] — Nested list of [KYC requirement](/api-reference/kyc-review/kyc-requirement) objects in `[[Requirement]]` format, where each inner list represents a combination of possible requirements to be provided. To fulfil the whole KYC review, at least one item from each inner list should be provided. For example, if the requirements are `[[a, b], [c, d]]` then it should be read as `(a or b) and (c or d)`. Please refer to the [KYC requirement](/api-reference/kyc-review/kyc-requirement) documentation for full examples of the schema.
          - KycRequirement[]
            - `key` string — The name of the KYC requirement. A single KYC Requirement should appear in the requirements list at most once.
            - `state` 'NOT_PROVIDED' | 'IN_REVIEW' | 'VERIFIED' — The state of the KYC requirement. - `NOT_PROVIDED` — the information is pending. Either the Hosted KYC flow or [KYC Requirement Submit](/api-reference/kyc-review/kycreviewrequirementsubmit) endpoint should be used to fulfil the requirement. - `IN_REVIEW` — the required information has been retrieved and the KYC requirement is being reviewed. No action is needed. - `VERIFIED` — the required information has been received and verified on our side. No action is needed.
            - `apiCollectionSupported` boolean — Indicates if the requirement can be provided via the [KYC Requirement Submit](/api-reference/kyc-review/kycreviewrequirementsubmit) endpoint. If `false`, the requirement should be provided via the Hosted KYC flow.
            - `additionalRequirements` object[], nullable — List of additional submissions that are needed to fulfill this requirement. These can appear when the originally submitted evidence is a wrong document, wrong format, incomplete or otherwise insufficient. Only provided if not empty.
              - …
            - `versions` object[] — **Conditional:** Only present when `apiCollectionSupported` is `true`. Lists the available versions and their validity.
              - …
            - `attributes` object, nullable — **Conditional:** Only present for certain requirement types that provide additional contextual information. The keys within this object vary depending on the parent requirement `key`. See the [KYC requirement types](/guides/product/kyc/wise-kyc/kyc-requirement-types) guide for details on which requirement types support attributes and what keys they contain.
        - `requirementChanges` object[] — List of requirement changes that triggered this event.
          - `key` string — The [key](/api-reference/kyc-review/kyc-requirement#path=key) of the requirement that has changed.
          - `newState` string — The new [state](/api-reference/kyc-review/kyc-requirement#path=state) of the requirement that has changed.
          - `prevState` string — *Not provided when requirement is new.* The previous [state](/api-reference/kyc-review/kyc-requirement#path=state) of the requirement that has changed. In case only an [additional requirement](/api-reference/kyc-review/kyc-requirement#path=additionalRequirements) has changed, this state can be equal to `newState`.
          - `additionalRequirements` object[] — A list of additional requirements that have changed. Not shown if empty.
            - `additionalRequirementId` string, uuid — The [UUID](/api-reference/kyc-review/kyc-requirement#path=additionalRequirements/additionalRequirementId) of the additional requirement that has changed.
            - `newState` string — The new [state](/api-reference/kyc-review/kyc-requirement#path=additionalRequirements/state) of the additional requirement that has changed.
            - `prevState` string — *Not provided when additional requirement is new.* The previous [state](/api-reference/kyc-review/kyc-requirement#path=additionalRequirements/state) of the additional requirement that has changed.
  - V40017
    - `schema_version` '4.0.0' — Version of the event schema. Determined by the `schema_version` on your [webhook subscription](/api-reference/webhook).
    - `subscription_id` string, uuid — ID of the webhook subscription that triggered this event
    - `event_type` string — Event type identifier
    - `sent_at` string, date-time — Timestamp when the event was sent
    - `data` object
      - `resource` object
        - `id` string, uuid — ID of the KYC Review.
        - `state` string — Status of the KYC Review. See [KYC Review Status](/guides/product/kyc/wise-kyc/hosted-kyc/kyc-review-status.md) for possible values.
        - `profileId` integer — ID of the profile KYC Review belongs to.
        - `requiredBy` string, date-time — Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is `PASSED_WITH_REQUIREMENTS`.
        - `createdAt` string, date-time — Timestamp marking the creation of the KYC Review.
        - `updatedAt` string, date-time — Timestamp marking the last update of the KYC Review.
        - `triggerReferences` object[] — List of trigger references for this KYC Review.
          - `type` 'QUOTE' | 'TRANSFER' | 'PROACTIVE_SEND_MONEY' | 'ADD_MONEY' | 'CARD' | 'BANK_ACCOUNT_DETAILS' — Type of the underlying action/process this KYC Review is for. Usually a reference to which product this KYC Review is for (like `QUOTE` or `TRANSFER`) or a reference to a KYC process on the profile that isn't related to a specific product (like `REFRESH_CYCLE` or `REPAPERING`).
          - `triggerData` object — Key-value Object containing metadata of the underlying product object that triggered the KYC Review. For `"QUOTE"`, `"TRANSFER"` and `"ADD_MONEY"` types, triggerData contains an `"id"` field that refers to their respective IDs. For `"BANK_ACCOUNT_DETAILS"`, triggerData has a field called `"currencies"` which contains a list of currencies (i.e USD, SGD, EUR) that the bank details have been created for. | triggerReference.type | field | type | |-----------------------|-------------|----------------| | `QUOTE` | id | uuid | | `TRANSFER` | id | long | | `ADD_MONEY` | id | long | | `BANK_ACCOUNT_DETAILS` | currencies | list of string | This ID might be null if underlying action is a process like `REPAPERING`.
        - `requirements` array[] — Nested list of KYC requirement objects.
          - object[]
            - `key` string — The unique identifier of the KYC requirement.
            - `state` string — The status of the KYC requirement. Either `NOT_PROVIDED`: requires information `IN_REVIEW`: requires internal review of the requirement
            - `apiCollectionSupported` boolean — A boolean value to indicate if the API collection is available for this evidence. To submit the evidence, refer to [KYC Requirement Submit endpoint](/api-reference/kyc-review/kycreviewrequirementsubmit).
            - `versions` object[] — Available versions to be submitted for the requirement.
              - …
  - V20017
    - `schema_version` '2.0.0' — Version of the event schema. Determined by the `schema_version` on your [webhook subscription](/api-reference/webhook).
    - `subscription_id` string, uuid — ID of the webhook subscription that triggered this event
    - `event_type` string — Event type identifier
    - `sent_at` string, date-time — Timestamp when the event was sent
    - `data` object
      - `resource` object
        - `id` string, uuid — ID of the KYC Review.
        - `state` string — Status of the KYC Review. See [KYC Review Status](/guides/product/kyc/wise-kyc/hosted-kyc/kyc-review-status.md) for possible values.
        - `profileId` integer — ID of the profile KYC Review belongs to.
        - `requiredBy` string, date-time — Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is `PASSED_WITH_REQUIREMENTS`.
        - `createdAt` string, date-time — Timestamp marking the creation of the KYC Review.
        - `updatedAt` string, date-time — Timestamp marking the last update of the KYC Review.
        - `triggerReferences` object[] — List of trigger references for this KYC Review.
          - `type` 'QUOTE' | 'TRANSFER' | 'PROACTIVE_SEND_MONEY' | 'ADD_MONEY' | 'CARD' | 'BANK_ACCOUNT_DETAILS' — Type of the underlying action/process this KYC Review is for. Usually a reference to which product this KYC Review is for (like `QUOTE` or `TRANSFER`) or a reference to a KYC process on the profile that isn't related to a specific product (like `REFRESH_CYCLE` or `REPAPERING`).
          - `triggerData` object — Key-value Object containing metadata of the underlying product object that triggered the KYC Review. For `"QUOTE"`, `"TRANSFER"` and `"ADD_MONEY"` types, triggerData contains an `"id"` field that refers to their respective IDs. For `"BANK_ACCOUNT_DETAILS"`, triggerData has a field called `"currencies"` which contains a list of currencies (i.e USD, SGD, EUR) that the bank details have been created for. | triggerReference.type | field | type | |-----------------------|-------------|----------------| | `QUOTE` | id | uuid | | `TRANSFER` | id | long | | `ADD_MONEY` | id | long | | `BANK_ACCOUNT_DETAILS` | currencies | list of string | This ID might be null if underlying action is a process like `REPAPERING`.
        - `requirements` array[] — Nested list of KYC requirement objects.
          - object[]
            - `key` string — The unique identifier of the KYC requirement.
            - `state` string — The status of the KYC requirement. Either `NOT_PROVIDED`: requires information `IN_REVIEW`: requires internal review of the requirement
            - `apiCollectionSupported` boolean — A boolean value to indicate if the API collection is available for this evidence. To submit the evidence, refer to [KYC Requirement Submit endpoint](/api-reference/kyc-review/kycreviewrequirementsubmit).
            - `versions` object[] — Available versions to be submitted for the requirement.
              - …

## Acknowledgement `200`

Return any `2xx` status to acknowledge receipt of the event.

- object
  - `status` string

---

[API](https://skmtc.net/wise/apis/platform-api.md) · [All operations](https://skmtc.net/wise/apis/platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wise/platform-api/revisions/4907a1d269ab/schema)
