# What each session status means

Source: https://help.didit.me/verification-sessions/session-statuses
Updated: 2026-10-12

What each session status means, from Not started and In progress to In review, Approved and Declined, and why even a decided session can still change.

Ten statuses exist. **Approved**, **Declined** and **KYC expired** mean a
decision has been reached - but none of them is permanently immutable: a
reviewer can reopen a decision, and ongoing AML monitoring can move an approved
session later. **In review** is the only status that needs a person. Keep
handling updates after a session is decided.

Every verification session has a status that tells you where it is in the process. Here's what each one means in plain language, and whether it needs anything from you.

## Where to find a session's status

In the [Business Console](https://business.didit.me), open **Identity verification → User verifications** and open the session you want to check. The status is shown at the top, with a short explanation of why it has that status and the result of each check that ran.

![A verification record in the Didit console showing the overall status and each check's result](https://help.didit.me/screenshots/session-detail-light.webp)

*A session's status sits above the per-check results that produced it.*

## The statuses, explained

| Status | What it means | Action needed? |
|---|---|---|
| **Not started** | Created, but the link hasn't been opened yet. | No - wait, or remind them yourself. |
| **In progress** | The person is actively going through the checks. | No - resolves on its own. |
| **Approved** | Every check passed - identity verified. | No. |
| **Declined** | One or more checks failed. See [why a verification was declined](https://help.didit.me/verification-sessions/why-was-a-session-declined). | Only if you want to request resubmission. |
| **In review** | Flagged for a human decision - low score, data mismatch, AML hit. | Yes - approve, decline, or request resubmission. |
| **Resubmitted** | A reviewer asked for specific steps to be redone; re-evaluates once done. | No. |
| **Awaiting user** | KYB only - waiting on the linked people to finish their own verification. | No. |
| **Expired** | The link timed out before it was opened. | Yes - create a new session. |
| **Abandoned** | Opened but not finished in time. | Request resubmission or create a new session |
| **KYC expired** | A previously approved session passed its re-verification period. | Yes - ask them to verify again. |

## Which ones are decided

| Category | Statuses | Meaning |
|---|---|---|
| **Decided** | Approved, Declined, KYC expired | A verdict exists. Not necessarily permanent - see below. |
| **Still active** | Not started, In progress, Resubmitted, Awaiting user | Waiting on the user, on child sessions, or on processing. |
| **Needs you** | In review | Requires a decision from your team. |
| **Ended without a decision** | Expired, Abandoned | The person never completed it. |

> **Warning:** **A decided session can still change.** Do not stop processing updates for a
> session once it reaches Approved or Declined:
>
> - **Declined** can become **Resubmitted** when a reviewer asks the person to
>   redo a step, and then Approved.
> - **Approved** can become **In review** or **Declined** later, when
>   [ongoing AML monitoring](https://help.didit.me/aml-screening/ongoing-monitoring) finds a new hit
>   that crosses your threshold.
> - **Approved** can become **KYC expired** if you set an expiry policy.
>
> An Abandoned session can be resubmitted so the person can redo selected steps in the same session. If the link expired before it was opened, create a new session instead. Keep processing status updates after resubmission.

## How a session moves between them

- **Not started** → In progress (they open the link), or → Expired (they never do).
- **In progress** → Approved, Declined, In review, or Abandoned. In KYB it can also go to Awaiting user once the key-people step is submitted.
- **In review** → Approved, Declined, or Resubmitted, always by a reviewer's action.
- **Declined** → Resubmitted, if a reviewer asks for another attempt.
- **Resubmitted** → Approved, Declined, or In review, once the person redoes the steps.
- **Awaiting user** → Approved, Declined, or In review, once every required party is decided.
- **Approved** → KYC expired, if a KYC expiration policy applies.

> **Note:** The console shows statuses in sentence case, such as **In review**. Via the API or a webhook, statuses are exact, case-sensitive strings **with
> spaces** - for example `"In Review"`, not `"in_review"` or `"IN_REVIEW"`. Use
> strict equality when matching them. One oddity to watch: the expiry status is
> `"Kyc Expired"` with a single capital K, not `"KYC Expired"`. Full reference:
> [verification statuses](https://docs.didit.me/integration/verification-statuses).

## Statuses that look like problems but aren't

- **In progress that isn't moving.** The person simply hasn't finished. There's no way to fast-forward a session; it updates when they complete the remaining steps.
- **Awaiting user on a KYB session.** Expected. The company submitted its list of people and the parent session is waiting for each of them. Watch the child sessions, not the parent.
- **Resubmitted going back to Awaiting user.** In KYB, if a child session is resubmitted the parent returns to Awaiting user until it completes.

## Mapping these onto your own states

If you're storing a status of your own, two mappings are worth getting right:

- **Abandoned** and **Awaiting user** are not resubmissions. Resubmitted specifically means a reviewer asked for steps to be redone; Abandoned means the person walked away; Awaiting user means other parties are still verifying.
- **Expired** and **KYC expired** are different. Expired means the link was never opened. KYC expired means an approved verification aged out of your policy - so the person was verified once, and now needs to be again.

## Next steps

- **In review**: see [sessions stuck in review, and how to reduce them](https://help.didit.me/verification-sessions/session-in-review).
- **In review** or **Declined**: see [letting someone try a verification again](https://help.didit.me/verification-sessions/retry-a-verification).
- **Declined**: see [why a verification was declined](https://help.didit.me/verification-sessions/why-was-a-session-declined).
- Get statuses pushed to your backend automatically: see [getting verification results with webhooks](https://help.didit.me/integration/webhooks-basics).
