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

LevelApproverCustomer Type
TENANT_VERIFIEDTenant AdminStandard/Low-risk
POWER_TENANT_VERIFIEDPower Tenant (Sonnect)High-risk

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 TypeRequired Documents
IDENTITY_VERIFICATIONPASSPORT or GOVERNMENT_ID
DOCUMENT_VERIFICATIONPROOF_OF_ADDRESS
ENHANCED_DUE_DILIGENCESOURCE_OF_FUNDS, BENEFICIAL_OWNERSHIP, PEP_DECLARATION
SANCTIONS_CHECKAll above documents

Document Specifications

Document TypeAccepted FormatsMax Size
PASSPORTPDF, JPEG, PNG5 MB
GOVERNMENT_IDPDF, JPEG, PNG5 MB
PROOF_OF_ADDRESSPDF, JPEG5 MB
SOURCE_OF_FUNDSPDF10 MB
PEP_DECLARATIONPDF5 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

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

StatusDescription
INITIATEDVerification process started
IN_PROGRESSCustomer submitting documents
PENDING_REVIEWAll documents submitted, awaiting review
UNDER_REVIEWAdmin reviewing documents
APPROVEDVerification approved ✅
REJECTEDVerification rejected ❌
ADDITIONAL_INFO_REQUIREDMore 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.

Phase 4: Consent Management

Accept mandatory consents before activation

Type to search…

↑↓ navigate open esc close