YeboVerify (KYC)
Identity verification infrastructure for the Yebo ecosystem.
Overview
YeboVerify is a standalone KYC/identity verification API that powers verification across all Yebo products. It's also available as a B2B API for third-party businesses.
Capabilities
| Feature | Description |
|---|---|
| Document OCR | Extract data from IDs, passports, driver's licenses |
| Face Matching | Compare selfie to ID photo (>60% threshold) |
| Liveness Detection | Ensure selfie is live, not a photo of a photo |
| Address Verification | Validate addresses (optional) |
| Watchlist Screening | Check against sanctions/PEP lists |
Architecture
┌─────────────────────────────────────────────────┐
│ YeboVerify API │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ Document │ │ Face │ │ Liveness │ │
│ │ OCR │ │ Matching │ │ Detection│ │
│ │ (Gemini) │ │(Rekognition)│ │ │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │ │ │ │
│ └──────────────┼──────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ Verification Engine │ │
│ │ • Orchestrate checks │ │
│ │ • Risk scoring │ │
│ │ • Decision engine │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ Secure Document Storage │ │
│ │ (Cloudflare R2, encrypted) │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘Verification Levels
Level 1: Basic
Required:
- Government-issued ID (front + back if applicable)
Extracts:
- Full name
- Date of birth
- ID number
- Nationality
- Expiry date
Unlocks:
- KES 50,000/month transaction limit
- Basic buying/selling
Level 2: Full
Required:
- Basic verification completed
- Selfie (face match)
- Address (optional)
Checks:
- Face matches ID photo (>60% confidence)
- Liveness detection passed
Unlocks:
- Unlimited transactions
- Withdrawals to bank
- Business account eligibility
API Reference
Create Verification Session
json
POST /api/v1/verifications
Headers:
Authorization: Bearer <api_key>
{
"externalUserId": "user_123",
"level": "basic",
"callbackUrl": "https://yourapp.com/webhook/kyc",
"redirectUrl": "https://yourapp.com/kyc-complete"
}
Response:
{
"verificationId": "ver_abc123",
"status": "pending",
"sessionUrl": "https://verify.yebo.com/session/ver_abc123"
}Submit Documents
json
POST /api/v1/verifications/:id/documents
{
"documentType": "national_id",
"frontImage": "<base64>",
"backImage": "<base64>"
}
Response:
{
"success": true,
"extractedData": {
"fullName": "John Kamau",
"dateOfBirth": "1995-03-15",
"idNumber": "12345678",
"nationality": "KE",
"expiryDate": "2028-03-15"
},
"documentValid": true
}Submit Selfie
json
POST /api/v1/verifications/:id/selfie
{
"selfieImage": "<base64>"
}
Response:
{
"success": true,
"faceMatchScore": 0.94,
"livenessScore": 0.98,
"passed": true
}Get Verification Status
json
GET /api/v1/verifications/:id
Response:
{
"verificationId": "ver_abc123",
"externalUserId": "user_123",
"status": "approved",
"level": "full",
"createdAt": "2026-03-18T10:00:00Z",
"completedAt": "2026-03-18T10:05:00Z",
"extractedData": { ... },
"scores": {
"faceMatch": 0.94,
"liveness": 0.98
}
}Webhook Events
json
POST <your_callback_url>
{
"event": "verification.completed",
"verificationId": "ver_abc123",
"status": "approved",
"level": "full",
"timestamp": "2026-03-18T10:05:00Z"
}Event Types:
verification.startedverification.document_submittedverification.selfie_submittedverification.completedverification.failedverification.expired
Supported Documents
| Country | Document Types |
|---|---|
| 🇰🇪 Kenya | National ID, Passport, Driver's License |
| 🇳🇬 Nigeria | National ID, Passport, Driver's License, Voter's Card |
| 🇿🇦 South Africa | National ID, Passport, Driver's License |
| 🇬🇭 Ghana | National ID, Passport, Driver's License, Voter's ID |
| 🇹🇿 Tanzania | National ID, Passport, Driver's License |
| 🇺🇬 Uganda | National ID, Passport, Driver's License |
| 🇷🇼 Rwanda | National ID, Passport |
Data Retention
| Data Type | Retention |
|---|---|
| Verification result | Indefinite |
| Extracted data | Indefinite (encrypted) |
| Document images | 90 days, then deleted |
| Selfie images | 90 days, then deleted |
Security
- All images transmitted over HTTPS
- Images encrypted at rest (AES-256)
- No images stored on device
- GDPR compliant
- Data deletion on request
Pricing (B2B)
| Tier | Price per verification |
|---|---|
| Basic (document only) | $0.50 |
| Full (document + selfie) | $1.00 |
| Volume (>10k/month) | Custom pricing |
Integration with YeboID
When a user verifies on YeboID:
- YeboID calls YeboVerify API
- User completes verification flow
- YeboVerify sends webhook on completion
- YeboID updates user's
kyc_level - User unlocks transaction capabilities
Open Questions
- [ ] Liveness detection: build or buy?
- [ ] PEP/sanctions screening provider?
- [ ] Document verification for more countries?
- [ ] Business verification (company docs)?