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