> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pawapass.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verification lifecycle

> Understand the full lifecycle of a verification

## Overview

A verification goes through several states from creation to completion.

<Steps>
  <Step title="CREATED" icon="circle-plus">
    Verification created via `POST /verifications/`. The user has not yet opened the verification link.
  </Step>

  <Step title="STARTED" icon="play">
    The user has opened the verification link. The status stays `STARTED` from that point, whether they keep going or abandon the flow, until their data is collected.
  </Step>

  <Step title="USER_DATA_COLLECTED" icon="clipboard-check">
    Every check the [workflow](/verification-workflows) requires has been collected and is now being processed by the pawaPass system.
  </Step>

  <Step title="REVIEW (optional)" icon="magnifying-glass">
    Manual action is required. A pawaPass agent reviews the verification when automated checks are inconclusive.
  </Step>

  <Step title="Final status" icon="flag-checkered">
    The verification resolves to one of three final states (see below).
  </Step>
</Steps>

## Final statuses

<CardGroup cols={3}>
  <Card title="APPROVED" icon="circle-check" color="#22c55e">
    Identity verified. Document data extracted.
  </Card>

  <Card title="DECLINED" icon="circle-xmark" color="#ef4444">
    Failed face scan attempts or agent decision.
  </Card>

  <Card title="EXPIRED" icon="clock" color="#f59e0b">
    Session expired. Default: **30 days**.
  </Card>
</CardGroup>

## Re-verifying the same user

A verification is active until it reaches one of the final statuses above. While a verification for an `externalId` is still active, creating another verification with the same `externalId` returns the existing one (`200 OK`) instead of starting a new flow.

Once the verification reaches a final status (`APPROVED`, `DECLINED`, or `EXPIRED`), creating a verification with the same `externalId` starts a fresh one (`201 Created`). If short links are enabled, the new verification reuses the same `url` as the previous one, so any link you already shared keeps pointing to the latest verification.

## Example flows

<AccordionGroup>
  <Accordion title="Successful verification (auto-approved)" icon="check">
    `CREATED` → `STARTED` → `USER_DATA_COLLECTED` → `APPROVED`

    The most common flow. User completes all steps, system auto-approves.
  </Accordion>

  <Accordion title="Manual review then declined" icon="xmark">
    `CREATED` → `STARTED` → `USER_DATA_COLLECTED` → `REVIEW` → `DECLINED`

    Automated checks are inconclusive, agent reviews and declines.
  </Accordion>

  <Accordion title="User never starts" icon="clock">
    `CREATED` → `EXPIRED`

    User doesn't open the verification link within the expiration window.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.