URL: /baas/api/integration/flows/individual-customer/verification
---
title: 'Phase 3: Verification Process'
description: '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 |
**High-risk customers** (PEP, high-risk countries, etc.) require POWER_TENANT approval which may take 1-3 business days.
---
## Step 1: Initiate Verification
**Endpoint:** `POST /api/v2.1/customer/individual/{customerId}/verification/initiate`
**Headers:**
```http
X-Tenant-Id: 97e7ff29-15f3-49ef-9681-3bbfcce4f6cd
Authorization: Bearer {customer-jwt-token}
```
**Status:** `200 OK`
```json
{
"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"
}
}
```
---
## Step 2: Submit Verification Documents
**Endpoint:** `POST /api/v2.1/customer/individual/{customerId}/verification`
**Request Body (Identity Verification):**
```json
{
"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
}
}
}
```
**Status:** `200 OK`
```json
{
"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"
]
}
}
```
---
## 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
**Endpoint:** `GET /api/v2.1/verifications/{verificationId}`
**Headers:**
```http
Authorization: Bearer {jwt-token}
```
**Status:** `200 OK`
```json
{
"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"
}
]
}
}
```
```json
{
"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
}
}
```
---
## Verification Status Flow
```mermaid
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)
**Endpoint:** `POST /api/v2.1/verifications/{verificationId}/approve`
**Headers:**
```http
Authorization: Bearer {admin-jwt-token}
X-User-ID: admin-user-id
X-User-Roles: COMPLIANCE_OFFICER
```
**Request Body:**
```json
{
"adminNotes": "All documents verified. Customer identity confirmed.",
"approvedBy": "ADMIN_USER",
"approvalReason": "All documents verified for individual customer"
}
```
**Status:** `200 OK`
```json
{
"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"
}
}
```
---
## Next Step
After verification is APPROVED, proceed to **Phase 4: Consent Management**.
Accept mandatory consents before activation