KYC & Compliance
Tiered KYC Model
Nav.Wallet implements a progressive Know-Your-Customer system that balances financial inclusion with regulatory compliance. Customers start with minimal documentation and unlock higher limits as they provide additional verification.
Tier Structure
| Tier | Requirements | Daily Limit | Max Balance |
|---|---|---|---|
| Tier 1 | Phone number + name | R1,000 | R5,000 |
| Tier 2 | ID document verified (guided capture) | R5,000 | R25,000 |
| Tier 3 | Biometric selfie + liveness check + proof of address | R50,000 | R100,000 |
Upgrade Path
- Customers can upgrade at any time directly from the app
- Tier upgrades take effect immediately — new limits apply to the next transaction
- The KYC Engine deterministically classifies customers based on verified documents
- Rejected documents trigger notification with reason and resubmission guidance
Biometric Identity Verification
Guided ID Document Capture (Tier 2+)
The wallet app provides an in-app guided camera experience for capturing identity documents:
- Rear-facing camera opens with a dashed frame overlay showing “Hold your ID card steady”
- 3-second countdown — user holds the document in frame, then auto-capture fires
- Alternatively, users can upload a file from their gallery
- Backend validates the document image quality before proceeding
Selfie + Face Comparison (Tier 3)
After ID capture, customers complete biometric verification:
- Front-facing camera opens with a circular face-frame overlay
- Active liveness challenge — “Please blink” instruction with real-time frame capture
- Blink detection — client-side intensity analysis provides UX feedback; backend performs real validation
- 10 frames captured during the 3-second challenge window for anti-spoofing analysis
- Final high-quality selfie captured after liveness completes
Backend Processing (ONNX Pipeline)
All biometric verification runs on-device models deployed via ONNX Runtime:
| Model | Purpose | File |
|---|---|---|
| det_10g.onnx | Face detection | InsightFace Buffalo-L |
| w600k_r50.onnx | Face embedding (512-d vectors) | ArcFace ResNet-50 |
| MiniFASNetV2.onnx | Passive liveness / anti-spoofing | FAS model |
Verification flow:
- Extract face from ID document → generate 512-dimensional embedding
- Extract face from selfie → generate embedding
- Compute cosine similarity → match threshold determines pass/fail
- Liveness score from MiniFASNetV2 must exceed threshold (rejects printed photos, screen replays)
- Active liveness frames analyzed for temporal consistency (blink pattern)
Anti-Spoofing Measures
- Passive liveness — Distinguishes real faces from printed photos, screen replays, and masks
- Active liveness — Blink detection challenge ensures a live person is present
- Frame consistency — Multiple frames captured to detect static image attacks
- Configurable thresholds — Match confidence and liveness scores tunable per environment
Limit Enforcement
The KYC Engine applies limits as a cross-cutting concern at the Wallet API layer:
- Daily transaction limit — Sum of all outgoing transactions in a calendar day
- Maximum balance — Post-transaction balance check prevents exceeding tier cap
- Applies uniformly — Same limits for P2P transfers, cash-in, and cash-out
- Actionable rejections — Limit-exceeded responses include current limits and upgrade prompt
Fraud Detection
Every transaction passes through multiple security gates:
- IFraudDetection — Real-time risk scoring; transactions above threshold are rejected
- IVelocityCheckService — Detects unusual patterns (rapid successive transfers, impossible travel)
- ISanctionsScreening — Triggered for all transfers exceeding R5,000
- PIN lockout — 3 consecutive failed PIN attempts lock the account for 30 minutes
SIM Swap Protection
- SIM swap detection triggers immediate account suspension
- Customer notified via alternative contact method
- Re-verification required before account reactivation
- All account data preserved during suspension
Security Features
| Feature | Description |
|---|---|
| PIN lockout | 3 failures → 30-minute lock |
| New device verification | OTP to registered phone |
| Biometric re-verification | Periodic identity confirmation for high-tier accounts |
| Idempotency keys | Prevents duplicate transactions |
| Transaction notifications | Real-time alerts on all activity |
| Reversal notifications | Immediate alert on failed/reversed transactions |
Regulatory Alignment
Nav.Wallet is designed to comply with:
- SARB — South African Reserve Bank guidelines for e-money issuers
- FSCA — Financial Sector Conduct Authority requirements
- FICA — Financial Intelligence Centre Act for customer due diligence
- POPIA — Protection of Personal Information Act for data handling