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

# Phase 3: Verification Process

> KYC verification, document submission, and approval workflow

# Phase 3: Verification Process

Verification is the **MOST CRITICAL** phase. Without APPROVED verification, customers CANNOT be activated.

## Verification Levels

| Level                   | Approver               | Customer Type     |
| ----------------------- | ---------------------- | ----------------- |
| `TENANT_VERIFIED`       | Tenant Admin           | Standard/Low-risk |
| `POWER_TENANT_VERIFIED` | Power Tenant (Sonnect) | High-risk         |

<Warning>
  **High-risk customers** (PEP, high-risk countries, etc.) require POWER\_TENANT approval which may take 1-3 business days.
</Warning>

***

## Step 1: Initiate Verification

<Tabs>
  <Tab title="Request">
    **Endpoint:** `POST /api/v2.1/customer/individual/{customerId}/verification/initiate`

    **Headers:**

    ```http theme={null}
    X-Tenant-Id: 97e7ff29-15f3-49ef-9681-3bbfcce4f6cd
    Authorization: Bearer {customer-jwt-token}
    ```
  </Tab>

  <Tab title="Response">
    **Status:** `200 OK`

    ```json theme={null}
    {
      "code": 200,
      "message": "Verification initiated successfully",
      "data": {
        "verificationId": "verif-880e8400-e29b-41d4-a716-446655440030",
        "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
        "status": "IN_PROGRESS",
        "level": "ENHANCED",
        "requiredDocuments": [
          "GOVERNMENT_ID",
          "PROOF_OF_ADDRESS",
          "SOURCE_OF_FUNDS",
          "PEP_DECLARATION",
          "BENEFICIAL_OWNERSHIP"
        ],
        "verificationTypes": [
          "IDENTITY_VERIFICATION",
          "DOCUMENT_VERIFICATION",
          "ENHANCED_DUE_DILIGENCE",
          "SANCTIONS_CHECK"
        ],
        "startedAt": "2026-01-13T12:00:00.000Z",
        "dueDate": "2026-01-16T12:00:00.000Z",
        "priority": "HIGH"
      }
    }
    ```
  </Tab>
</Tabs>

***

## Step 2: Submit Verification Documents

<Tabs>
  <Tab title="Request">
    **Endpoint:** `POST /api/v2.1/customer/individual/{customerId}/verification`

    **Request Body (Identity Verification):**

    ```json theme={null}
    {
      "verificationType": "IDENTITY",
      "verificationData": {
        "documentType": "PASSPORT",
        "documentNumber": "AB1234567",
        "issuingCountry": "US",
        "issuingAuthority": "U.S. Department of State",
        "issueDate": "2020-01-15",
        "expiryDate": "2030-01-14",
        "selfieImage": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
        "documentFrontImage": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
        "documentBackImage": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
        "additionalData": {
          "hologramPresent": true,
          "chipPresent": true,
          "biometricData": true
        }
      }
    }
    ```
  </Tab>

  <Tab title="Response">
    **Status:** `200 OK`

    ```json theme={null}
    {
      "code": 200,
      "message": "Verification submitted successfully",
      "data": {
        "verificationId": "verif-880e8400-e29b-41d4-a716-446655440030",
        "status": "PENDING_REVIEW",
        "submittedAt": "2026-01-13T12:30:00.000Z",
        "reviewedBy": null,
        "approvalRequired": "POWER_TENANT",
        "estimatedReviewTime": "1-3 business days",
        "nextSteps": [
          "Wait for power tenant review",
          "You will be notified via email when review is complete",
          "Additional documents may be requested if needed"
        ]
      }
    }
    ```
  </Tab>
</Tabs>

***

## Document Types

### Required Documents by Verification Level

| Verification Type        | Required Documents                                         |
| ------------------------ | ---------------------------------------------------------- |
| `IDENTITY_VERIFICATION`  | PASSPORT or GOVERNMENT\_ID                                 |
| `DOCUMENT_VERIFICATION`  | PROOF\_OF\_ADDRESS                                         |
| `ENHANCED_DUE_DILIGENCE` | SOURCE\_OF\_FUNDS, BENEFICIAL\_OWNERSHIP, PEP\_DECLARATION |
| `SANCTIONS_CHECK`        | All above documents                                        |

### Document Specifications

| Document Type      | Accepted Formats | Max Size |
| ------------------ | ---------------- | -------- |
| PASSPORT           | PDF, JPEG, PNG   | 5 MB     |
| GOVERNMENT\_ID     | PDF, JPEG, PNG   | 5 MB     |
| PROOF\_OF\_ADDRESS | PDF, JPEG        | 5 MB     |
| SOURCE\_OF\_FUNDS  | PDF              | 10 MB    |
| PEP\_DECLARATION   | PDF              | 5 MB     |

***

## Step 3: Check Verification Status

<Tabs>
  <Tab title="Request">
    **Endpoint:** `GET /api/v2.1/verifications/{verificationId}`

    **Headers:**

    ```http theme={null}
    Authorization: Bearer {jwt-token}
    ```
  </Tab>

  <Tab title="Response - Approved">
    **Status:** `200 OK`

    ```json theme={null}
    {
      "code": 200,
      "message": "Verification status retrieved successfully",
      "data": {
        "verificationId": "verif-880e8400-e29b-41d4-a716-446655440030",
        "customerId": "cust-550e8400-e29b-41d4-a716-446655440010",
        "status": "APPROVED",
        "type": "IDENTITY_VERIFICATION",
        "level": "POWER_TENANT_VERIFIED",
        "startedAt": "2026-01-13T12:00:00.000Z",
        "submittedAt": "2026-01-13T12:30:00.000Z",
        "reviewedAt": "2026-01-14T10:00:00.000Z",
        "approvedAt": "2026-01-14T10:00:00.000Z",
        "reviewedBy": "power-tenant-admin-id",
        "completedAt": "2026-01-14T10:00:00.000Z",
        "expiresAt": "2027-01-14T10:00:00.000Z",
        "submittedDocuments": 5,
        "reviewNotes": "All documents verified. Customer identity confirmed.",
        "verificationHistory": [
          {
            "status": "INITIATED",
            "timestamp": "2026-01-13T12:00:00.000Z",
            "actor": "system"
          },
          {
            "status": "IN_PROGRESS",
            "timestamp": "2026-01-13T12:00:00.000Z",
            "actor": "customer"
          },
          {
            "status": "PENDING_REVIEW",
            "timestamp": "2026-01-13T12:30:00.000Z",
            "actor": "customer"
          },
          {
            "status": "UNDER_REVIEW",
            "timestamp": "2026-01-14T09:30:00.000Z",
            "actor": "power-tenant-admin"
          },
          {
            "status": "APPROVED",
            "timestamp": "2026-01-14T10:00:00.000Z",
            "actor": "power-tenant-admin"
          }
        ]
      }
    }
    ```
  </Tab>

  <Tab title="Response - Pending">
    ```json theme={null}
    {
      "code": 200,
      "message": "Verification status retrieved successfully",
      "data": {
        "verificationId": "verif-880e8400-e29b-41d4-a716-446655440030",
        "status": "PENDING_REVIEW",
        "estimatedCompletionTime": "1-2 business days",
        "submittedDocuments": 5,
        "requiredDocuments": 5
      }
    }
    ```
  </Tab>
</Tabs>

***

## Verification Status Flow

```mermaid theme={null}
flowchart LR
    A[INITIATED] --> B[IN_PROGRESS]
    B --> C[PENDING_REVIEW]
    C --> D[UNDER_REVIEW]
    D --> E{Decision}
    E -->|Approved| F[APPROVED]
    E -->|Rejected| G[REJECTED]
    E -->|More Info| H[ADDITIONAL_INFO_REQUIRED]
    H --> B
```

### Status Descriptions

| Status                     | Description                              |
| -------------------------- | ---------------------------------------- |
| `INITIATED`                | Verification process started             |
| `IN_PROGRESS`              | Customer submitting documents            |
| `PENDING_REVIEW`           | All documents submitted, awaiting review |
| `UNDER_REVIEW`             | Admin reviewing documents                |
| `APPROVED`                 | Verification approved ✅                  |
| `REJECTED`                 | Verification rejected ❌                  |
| `ADDITIONAL_INFO_REQUIRED` | More documents needed                    |

***

## Verification Approval (Admin)

<Tabs>
  <Tab title="Request">
    **Endpoint:** `POST /api/v2.1/verifications/{verificationId}/approve`

    **Headers:**

    ```http theme={null}
    Authorization: Bearer {admin-jwt-token}
    X-User-ID: admin-user-id
    X-User-Roles: COMPLIANCE_OFFICER
    ```

    **Request Body:**

    ```json theme={null}
    {
      "adminNotes": "All documents verified. Customer identity confirmed.",
      "approvedBy": "ADMIN_USER",
      "approvalReason": "All documents verified for individual customer"
    }
    ```
  </Tab>

  <Tab title="Response">
    **Status:** `200 OK`

    ```json theme={null}
    {
      "code": 200,
      "message": "Verification approved successfully",
      "data": {
        "level": "TENANT_VERIFIED",
        "approvedBy": "admin-user",
        "approvedAt": "2026-01-14T10:00:00.000Z",
        "verificationId": "verif-880e8400-e29b-41d4-a716-446655440030",
        "status": "APPROVED"
      }
    }
    ```
  </Tab>
</Tabs>

***

## Next Step

After verification is APPROVED, proceed to **Phase 4: Consent Management**.

<Card title="Phase 4: Consent Management" icon="arrow-right" href="/baas/api/integration/flows/individual-customer/consent-management">
  Accept mandatory consents before activation
</Card>
