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

# Proof KYC User Journeys

> Verification flows for direct users, partner app users, and returning users

This page describes the three primary user journeys through Proof:

* [New users visiting directly](#new-user-direct).
* [New users redirected from a partner app](#new-user-from-partner-app).
* [Returning users](#returning-user).

## New User (Direct)

<div className="journey-diagram desktop">
  ```mermaid theme={null}
  flowchart LR
      subgraph direct [New User - Direct]
          direction LR
          D1[Visit Proof] --> D2[Authenticate]
          D2 --> D3[Verify Identity]
          D3 --> D4[Link Wallets]
          D4 --> D5[Manage Wallets]
      end
  ```
</div>

<div className="journey-diagram mobile">
  ```mermaid theme={null}
  flowchart TD
      subgraph direct [New User - Direct]
          D1[Visit Proof] --> D2[Authenticate]
          D2 --> D3[Verify Identity]
          D3 --> D4[Link Wallets]
          D4 --> D5[Manage Wallets]
      end
  ```
</div>

Users who visit Proof directly to verify their identity and link wallets.

### Flow

1. **User visits Proof directly**
   * User navigates to the Proof application
   * Landing page explains the verification process

2. **Authenticates with email**
   * User enters their email address
   * Proof sends a one-time code
   * User enters the code to authenticate

3. **Completes identity verification**
   * User uploads a government-issued ID
   * User completes a liveness check (selfie matching)
   * Verification processes (may take time)
   * User sees status: pending, verified, or failed
   * On successful verification, Proof sends an "Identity Verification Complete" email

4. **Links one or more wallets**
   * User connects a Solana wallet
   * User signs a message to prove ownership
   * Proof verifies the signature and links the wallet
   * User can optionally add a label

5. **Manages linked wallets over time**
   * User can view all linked wallets
   * User can add new wallets
   * User can update wallet labels
   * User can remove wallets

### Sequence Diagram

```mermaid theme={null}
sequenceDiagram
    participant User
    participant Proof
    participant Wallet
    
    User->>Proof: Visit Proof
    User->>Proof: Enter email
    Proof->>User: Send OTP
    User->>Proof: Enter OTP
    Proof->>User: Authenticated
    
    User->>Proof: Upload ID
    User->>Proof: Complete liveness check
    Proof->>User: Verification status
    
    User->>Wallet: Connect wallet
    Wallet->>User: Connected
    User->>Proof: Request signature message
    Proof->>User: Signature message
    User->>Wallet: Sign message
    Wallet->>User: Signature
    User->>Proof: Submit signature
    Proof->>User: Wallet linked
```

## New User (From Partner App)

<div className="journey-diagram desktop">
  ```mermaid theme={null}
  flowchart LR
      subgraph partner [New User - Partner App]
          direction LR
          P1[Partner Redirects] --> P2[Authenticate]
          P2 --> P3[Verify Identity]
          P3 --> P4[Auto-Link Wallet]
          P4 --> P5[Redirect Back]
      end
  ```
</div>

<div className="journey-diagram mobile">
  ```mermaid theme={null}
  flowchart TD
      subgraph partner [New User - Partner App]
          P1[Partner Redirects] --> P2[Authenticate]
          P2 --> P3[Verify Identity]
          P3 --> P4[Auto-Link Wallet]
          P4 --> P5[Redirect Back]
      end
  ```
</div>

Users redirected to Proof from a partner application that requires verification.

### Flow

1. **User initiates action in partner app**
   * User attempts an action requiring verification
   * Partner app detects user is not verified

2. **Partner app redirects to Proof**
   * Partner app generates a deep link with:
     * Wallet address to link
     * Pre-signed ownership proof (signature)
     * Return URL for post-verification redirect
   * User is redirected to Proof

3. **User authenticates**
   * User enters their email address
   * Proof sends a one-time code
   * User enters the code to authenticate

4. **User completes identity verification**
   * User uploads a government-issued ID
   * User completes a liveness check
   * Verification processes
   * On successful verification, Proof sends an "Identity Verification Complete" email

5. **Wallet is automatically linked**
   * Proof verifies the pre-signed ownership proof
   * Wallet is linked without additional user action

6. **User is redirected back to partner app**
   * Proof redirects to the provided return URL
   * Partner app can now query verification status

### Sequence Diagram

```mermaid theme={null}
sequenceDiagram
    participant User
    participant PartnerApp as Partner App
    participant Proof
    participant Wallet
    
    User->>PartnerApp: Initiate action
    PartnerApp->>User: Request wallet signature
    User->>Wallet: Sign message
    Wallet->>User: Signature
    User->>PartnerApp: Provide signature
    PartnerApp->>Proof: Redirect with wallet + signature + returnUrl
    
    User->>Proof: Enter email
    Proof->>User: Send OTP
    User->>Proof: Enter OTP
    Proof->>User: Authenticated
    
    User->>Proof: Upload ID
    User->>Proof: Complete liveness check
    Proof->>User: Verified
    
    Proof->>Proof: Verify signature
    Proof->>Proof: Link wallet
    Proof->>PartnerApp: Redirect to returnUrl
    
    PartnerApp->>Proof: Query verification status
    Proof->>PartnerApp: Verified
```

## Returning User

<div className="journey-diagram desktop">
  ```mermaid theme={null}
  flowchart LR
      subgraph returning [Returning User]
          direction LR
          R1[Visit or Redirect] --> R2[Authenticate]
          R2 --> R3[Skip Verification]
          R3 --> R4[Manage or Redirect]
      end
  ```
</div>

<div className="journey-diagram mobile">
  ```mermaid theme={null}
  flowchart TD
      subgraph returning [Returning User]
          R1[Visit or Redirect] --> R2[Authenticate]
          R2 --> R3[Skip Verification]
          R3 --> R4[Manage or Redirect]
      end
  ```
</div>

Users who have already completed verification and return to Proof.

### Flow

1. **User visits Proof or is redirected from partner app**
   * User navigates directly to Proof, or
   * Partner app redirects user to Proof

2. **Authenticates with email**
   * User enters their email address
   * Proof sends a one-time code
   * User enters the code to authenticate

3. **Skips verification (already complete)**
   * Proof recognizes the user is already verified
   * No additional verification required

4. **Manages wallets or is redirected back**
   * If direct visit: User can manage wallets
   * If from partner: User is redirected back with existing wallet linked, or can link a new wallet

### Sequence Diagram

```mermaid theme={null}
sequenceDiagram
    participant User
    participant Proof
    participant PartnerApp as Partner App
    
    alt Direct Visit
        User->>Proof: Visit Proof
        User->>Proof: Authenticate
        Proof->>User: Already verified
        User->>Proof: Manage wallets
    else From Partner App
        PartnerApp->>Proof: Redirect with wallet + signature
        User->>Proof: Authenticate
        Proof->>User: Already verified
        Proof->>Proof: Link wallet if new
        Proof->>PartnerApp: Redirect to returnUrl
    end
```

## Verification States

Throughout these journeys, users may encounter different verification states:

| State        | Description                       | Next Action                  |
| ------------ | --------------------------------- | ---------------------------- |
| `unverified` | User has not started verification | Begin verification           |
| `pending`    | Verification is processing        | Wait for completion          |
| `verified`   | Verification successful           | Link wallets or use services |
| `failed`     | Verification unsuccessful         | Contact support or retry     |

## Related Pages

* [Partner Integration](/resources/proof/partner-integration) — How to redirect users and query verification status
* [Proof API Reference](/resources/proof-api/verify-address) — API endpoints for all operations

<ContactUs />
