Skip to content

KYC Verification

Know Your Customer (KYC) verification is required for users to access full wallet functionality. The app implements a multi-step verification process with document capture and biometric validation.

Verification Levels

LevelRequirementsLimits
BasicPhone verifiedE50 daily
StandardID + SelfieE2,000 daily
PremiumFull KYC + AddressE10,000 daily

Verification Flow

┌─────────────────────────────────────────────────────────────────┐
│                      KYC Verification Flow                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────────┐     ┌─────────────┐     ┌─────────────┐        │
│  │   Profile   │────▶│   ID Doc    │────▶│   Selfie    │        │
│  │    Form     │     │   Capture   │     │   Capture   │        │
│  └─────────────┘     └─────────────┘     └──────┬──────┘        │
│                                                  │               │
│                                                  ▼               │
│                      ┌─────────────┐     ┌─────────────┐        │
│                      │  Submitted  │◀────│  Liveness   │        │
│                      │   Review    │     │   Check     │        │
│                      └──────┬──────┘     └─────────────┘        │
│                             │                                    │
│              ┌──────────────┼──────────────┐                    │
│              ▼              ▼              ▼                    │
│       ┌──────────┐   ┌──────────┐   ┌──────────┐               │
│       │ Approved │   │ Pending  │   │ Rejected │               │
│       │          │   │ Review   │   │          │               │
│       └──────────┘   └──────────┘   └──────────┘               │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Step 1: Profile Form

Users complete their personal information:

Required Fields:

  • Full name (as on ID)
  • Date of birth
  • Gender
  • Nationality
  • Physical address

Optional Fields:

  • Email address
  • Alternative phone number

Step 2: Document Capture

Supported Documents

Document TypeFrontBack
National IDRequiredRequired
PassportRequiredNot needed
Driver's LicenseRequiredRequired

Capture Requirements

RequirementValue
Image QualityMinimum 1200x800 pixels
File FormatJPEG, PNG
File SizeMax 5MB per image
LightingWell-lit, no shadows
AngleFlat, no tilting

OCR Processing

The app uses ML Kit for automatic data extraction from documents.

Step 3: Selfie Capture

Requirements

RequirementDescription
Face DetectionFace must be detected in frame
LightingEven lighting on face
ExpressionNeutral expression
ObstructionsNo glasses, hats, or masks

Face Matching

The selfie is compared against the ID document photo using facial recognition. Match threshold is 85% similarity.

Step 4: Liveness Detection

To prevent spoofing attacks, the app performs liveness checks:

Active Liveness

User performs prompted actions:

  1. Blink eyes
  2. Turn head left/right
  3. Smile

Passive Liveness

Background analysis during capture:

  • Texture analysis (detect printed photos)
  • Depth estimation (detect screens)
  • Motion analysis (detect videos)

Verification Status

StatusDescriptionUser Action
not_startedKYC not initiatedStart verification
in_progressDocuments submittedWait for review
pending_reviewManual review neededWait
approvedVerification completeFull access
rejectedVerification failedResubmit

API Endpoints

EndpointMethodDescription
/verification/statusGETGet current status
/verification/profilePOSTSubmit profile data
/verification/documentPOSTUpload ID document
/verification/selfiePOSTUpload selfie
/verification/livenessPOSTSubmit liveness data

Error Handling

ErrorCauseResolution
VERIF_001Blurry documentRetake photo
VERIF_002Face not detectedAdjust position
VERIF_003Liveness failedRetry check
VERIF_004Document expiredUse valid document
VERIF_005Face mismatchContact support
FilePurpose
lib/screens/kyc/kyc_intro_screen.dartIntro screen
lib/screens/kyc/profile_form_screen.dartProfile form
lib/screens/kyc/document_capture_screen.dartDocument capture
lib/screens/kyc/selfie_capture_screen.dartSelfie capture
lib/screens/kyc/liveness_screen.dartLiveness check
lib/screens/kyc/verification_status_screen.dartStatus screen
lib/controllers/verification_controller.dartController
lib/services/verification_service.dartVerification service
lib/services/liveness_service.dartLiveness service

Internal use only - Keshless Payment Platform