Money+ Congo

Complete System Architecture Document — the all-in-one mobile money, banking, IBAN, crypto, lending, QR payments, USSD, and WhatsApp bot platform for the Democratic Republic of Congo and East Africa.

CONFIDENTIAL Version 2.0 April 2026 Technical Architecture

System at a Glance

55+
API Endpoints
40+
App Screens
22
Database Tables
7
Access Channels
19
External API Rails
39
African Countries
6
Languages
3
Currency Types

Table of Contents

  1. High-Level System Overview
  2. Technology Stack & Justification
  3. Access Channels (App, USSD, WhatsApp, QR)
  4. API Architecture & Endpoint Map
  5. Data Model & Database Design
  6. Security Architecture
  7. Payment Rails & IBAN Infrastructure
  8. Agent Network Architecture
  9. Crypto & Digital Assets Architecture
  10. Loan & Credit Architecture
  11. Concurrency & Scalability
  12. Infrastructure & Deployment
  13. Compliance & Regulatory Framework
  14. Technical Roadmap

1. High-Level System Overview

Complete end-to-end architecture across all access channels

graph TB subgraph CHANNELS["Access Channels"] APP["Mobile App
(Flutter - iOS & Android)"] USSD["USSD Gateway
Dedicated Short Code
Offline Access"] WHATSAPP["WhatsApp Bot
Payment & Transfers"] QR["QR Code Payments
Scan-to-Pay"] WEB["Admin Dashboard
(React Web)"] MERCHANT["Merchant Portal
(Future)"] end subgraph GATEWAY["API Gateway & Load Balancer"] LB["Nginx / AWS ALB
SSL Termination
Rate Limiting"] WAF["Web Application Firewall
DDoS Protection"] end subgraph CORE["Core Backend (Go / Gin)"] AUTH["Auth Service
JWT + OTP + PIN + 2FA"] TXN["Transaction Engine
Atomic Operations
Mutex Locking"] WALLET["Wallet Service
Multi-currency
Fiat + Crypto"] AGENT_SVC["Agent Service
Float Management
Commission Engine"] CARD_SVC["Card Issuance
Virtual + Physical"] IBAN_SVC["IBAN Service
International Transfers
SWIFT/SEPA"] LOAN_SVC["Lending Engine
Credit Scoring
Loan Management"] NOTIF_SVC["Notification Service
Push + SMS + Email"] KYC_SVC["KYC/AML Engine
Identity Verification"] ANALYTICS_SVC["Analytics Engine
Real-time Reporting"] end subgraph DATA["Data Layer"] MYSQL[(MySQL Primary
100 conn pool)] REDIS[(Redis Cache
Sessions + OTP + Rates)] S3["Object Storage
KYC Docs + Avatars"] end subgraph EXTERNAL["External Service Providers"] direction LR MM["Mobile Money
M-Pesa, Airtel, Orange"] BANK["Banking Rails
SWIFT, SEPA, Local Banks"] CRYPTO_EX["Crypto Exchanges
Binance, Coinbase"] CARD_NET["Card Networks
Visa, Mastercard"] SMS_GW["SMS Gateway
Africa's Talking"] EMAIL_SVC["Email Service
SendGrid"] KYC_PRV["KYC Provider
Smile Identity"] IBAN_PRV["IBAN Provider
Banking Circle / CurrencyCloud"] WA_API["WhatsApp Business API
Meta Cloud API"] USSD_GW["USSD Aggregator
Africa's Talking"] end APP -->|HTTPS + JWT| LB USSD -->|USSD Protocol| USSD_GW USSD_GW -->|HTTPS| LB WHATSAPP -->|Webhook| WA_API WA_API -->|HTTPS| LB QR -->|Deep Link| APP WEB -->|HTTPS + Admin JWT| LB LB --> WAF --> CORE CORE --> DATA TXN --> MM TXN --> BANK IBAN_SVC --> IBAN_PRV IBAN_SVC --> BANK CARD_SVC --> CARD_NET WALLET --> CRYPTO_EX NOTIF_SVC --> SMS_GW NOTIF_SVC --> EMAIL_SVC KYC_SVC --> KYC_PRV LOAN_SVC --> ANALYTICS_SVC AUTH --> REDIS style CHANNELS fill:#e3f2fd,stroke:#1565c0,stroke-width:2px style GATEWAY fill:#fce4ec,stroke:#c62828,stroke-width:2px style CORE fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style DATA fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px style EXTERNAL fill:#fff3e0,stroke:#e65100,stroke-width:2px

2. Technology Stack & Justification

Every technology choice and why it was selected

Go (Golang) — Backend

Compiled language with native concurrency (goroutines), ideal for financial transaction processing. Handles 100K+ concurrent connections. Used by Monzo, Nubank, and Paystack.

Gin FrameworkGORM ORMJWT Auth

Flutter — Mobile App

Single codebase for iOS and Android. 120fps rendering. Used by Nubank (150M+ users), Google Pay, Alibaba. Reduces development cost by 40% vs native.

DartMaterial Design40+ Screens

React — Admin Dashboard

Industry standard for web admin panels. Component-based architecture with TypeScript for type safety. Real-time data visualization with Recharts.

TypeScriptReact RouterRecharts

MySQL — Primary Database

ACID-compliant relational database. Proven at scale (Facebook, Uber, Netflix). Connection pooling with 100 max concurrent connections. Supports row-level locking for financial transactions.

InnoDBConnection PoolAuto-Migration

Redis — Cache & Sessions

In-memory data store for OTP codes (with TTL expiry), session tokens, exchange rate caching, and rate limiting. Sub-millisecond response times.

OTP CacheRate LimitingSession Store

Nginx — API Gateway

Reverse proxy with SSL termination, load balancing, request rate limiting, and WebSocket support for real-time features.

SSL/TLSLoad BalancerRate Limit

3. Access Channels

Seven ways users interact with Money+ Congo

graph LR subgraph MOBILE["Mobile App (Primary)"] FLUTTER["Flutter App
iOS + Android
40+ screens
Full feature set"] end subgraph USSD_CH["USSD Channel"] USSD_FLOW["Dedicated Short Code
Works on any phone
No internet required
Menu-based navigation"] end subgraph WA_CH["WhatsApp Bot"] WA_FLOW["WhatsApp Business API
Send/Receive money
Check balance
Pay bills via chat"] end subgraph QR_CH["QR Code Payments"] QR_FLOW["Dynamic QR Generation
Merchant scan-to-pay
P2P payments
Amount pre-filled"] end subgraph WEB_CH["Web Admin"] WEB_FLOW["React Dashboard
User management
Agent monitoring
KYC review"] end subgraph API_CH["Developer API"] API_FLOW["RESTful API
Merchant integration
Payment gateway
Webhooks"] end subgraph AGENT_CH["Agent Network"] AGENT_FLOW["Agent App (Flutter)
Cash-in / Cash-out
Float management
Commission tracking"] end FLUTTER --> CORE((Core API)) USSD_FLOW --> CORE WA_FLOW --> CORE QR_FLOW --> FLUTTER WEB_FLOW --> CORE API_FLOW --> CORE AGENT_FLOW --> CORE style MOBILE fill:#e3f2fd,stroke:#1565c0,stroke-width:2px style USSD_CH fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style WA_CH fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style QR_CH fill:#fff3e0,stroke:#e65100,stroke-width:2px style WEB_CH fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px style API_CH fill:#fce4ec,stroke:#c62828,stroke-width:2px style AGENT_CH fill:#fff3e0,stroke:#e65100,stroke-width:2px

USSD Architecture

flowchart LR PHONE["Any Phone
(No internet needed)"] -->|"Dial USSD Code"| TELCO["Telco Network
(Vodacom/Airtel/Orange)"] TELCO -->|"USSD Session"| AGG["USSD Aggregator
(Africa's Talking)"] AGG -->|"HTTP Callback"| API["Money+ API Server"] API -->|"Menu Response"| AGG AGG -->|"USSD Response"| PHONE subgraph USSD_MENUS["USSD Menu Tree"] M1["1. Send Money"] M2["2. Check Balance"] M3["3. Buy Airtime"] M4["4. Pay Bills"] M5["5. Withdraw"] M6["6. Mini Statement"] M7["7. Request Loan"] end

WhatsApp Bot Architecture

flowchart LR USER["User on WhatsApp"] -->|"Message"| META["Meta WhatsApp
Business API"] META -->|"Webhook POST"| BOT["Money+ Bot Server
(Go microservice)"] BOT -->|"Process Command"| CORE["Core Transaction API"] CORE -->|"Result"| BOT BOT -->|"Reply Message"| META META -->|"Deliver"| USER subgraph COMMANDS["Bot Commands"] C1["'send 5000 to +243...' → Transfer"] C2["'balance' → Check Balance"] C3["'topup 2000' → Buy Airtime"] C4["'pay SNEL 12345' → Bill Payment"] C5["'loan 50000' → Loan Application"] C6["'statement' → Mini Statement"] end

QR Code Payment Flow

flowchart LR MERCHANT["Merchant displays
QR Code"] -->|"Customer scans"| APP["Money+ App
Camera/Scanner"] APP -->|"Decode QR payload"| PARSE["Parse: merchant_id
amount, currency, ref"] PARSE -->|"Show confirmation"| CONFIRM["Confirm Payment
Enter PIN"] CONFIRM -->|"POST /api/v1/send"| API["Core API
Process Payment"] API -->|"Notification"| MERCHANT API -->|"Receipt"| APP subgraph QR_TYPES["QR Code Types"] STATIC["Static QR
Fixed merchant ID
Customer enters amount"] DYNAMIC["Dynamic QR
Pre-filled amount
One-time use"] P2P_QR["P2P QR
User-to-user
Share payment link"] end

4. API Architecture

RESTful API v1 — 55+ endpoints across 15 resource groups

GroupEndpointsAuthDescription
Authregister, login, verify-otp, forgot-password, reset-passwordPublicUser registration, authentication, password recovery
ProfileGET/PUT profile, change-password, GET/PUT preferencesJWTUser profile management and preferences
PINset, verify, change, statusJWTTransaction PIN management (bcrypt hashed)
SecurityGET/PUT security, sessions, signout-allJWT2FA, biometrics, login alerts, session management
KYCPOST kyc, GET statusJWTIdentity verification submission and tracking
WalletsGET walletsJWTMulti-currency wallet management (fiat + crypto)
Transactionssend, deposit, withdraw, GET list, GET filteredJWT + PINCore money movement with atomic DB operations
IBANcreate-iban, international-transfer, incoming-webhookJWT + PINInternational bank transfers via SWIFT/SEPA
Servicestopup, pay-bill, internet bundlesJWTAirtime, data, utility bill payments
Cryptobuy, sell, send, swap, portfolio, pricesJWT + PINCryptocurrency trading and management
CardsCRUD cards, update controlsJWTVirtual and physical card issuance
ContactsCRUD contacts, favorites, recentJWTSaved beneficiaries
SplitsCRUD splits, settle memberJWTGroup expense splitting
Loansapply, status, repay, history, eligibilityJWT + KYCLoan applications and repayment
Agentdashboard, cash-in, cash-out, float, commissionsJWT + Agent RoleAgent-specific operations
Admin25+ endpoints for user/agent/KYC/txn managementAdmin JWTBack-office operations

5. Data Model & Database Design

22 tables with relationships, indexing, and soft deletes

erDiagram User ||--o{ Wallet : has User ||--o{ Transaction : sends User ||--o{ Transaction : receives User ||--o{ Card : owns User ||--o{ Contact : saves User ||--o{ Notification : receives User ||--|| TransactionPIN : secures User ||--|| KYCSubmission : verifies User ||--|| SecuritySettings : configures User ||--|| NotificationSettings : configures User ||--|| UserPreferences : sets User ||--|| Budget : defines User ||--o{ UserSession : logs User ||--o{ CryptoHolding : holds User ||--o{ ChatMessage : chats User ||--o{ PaymentRequest : creates User ||--o| AgentFloat : manages User ||--o{ AgentCommission : earns User ||--o| IBAN : assigned User ||--o{ Loan : applies SplitPayment ||--o{ SplitMember : includes AdminUser ||--o{ AuditLog : creates User { uint id PK string name string email UK string phone UK string password_hash string country string role "user | agent" bool kyc_verified string iban } Wallet { uint id PK uint user_id FK string currency "CDF | USD | EUR" float balance string type "fiat | crypto" } Transaction { uint id PK uint sender_id FK uint receiver_id FK float amount float fee string type "send | deposit | withdraw | cash_in | cash_out" string status "pending | completed | failed" string reference UK } Loan { uint id PK uint user_id FK float amount float interest_rate int term_months float monthly_payment string status "pending | approved | active | repaid | defaulted" } IBAN { uint id PK uint user_id FK string iban_number UK string bic string currency string provider "banking_circle | currencycloud" }
Key Design Decisions: All financial amounts stored as DECIMAL(18,2). Soft deletes on user-facing records. Unique indexes on email, phone, card_number, IBAN, and transaction references. Per-wallet mutex locking for concurrent balance updates. All passwords and PINs bcrypt hashed.

6. Security Architecture

Multi-layered security at every level

flowchart TB subgraph L1["Layer 1: Network"] WAF["WAF - DDoS Protection"] SSL["TLS 1.3 Encryption"] RATE["Rate Limiting
100 req/min per IP"] end subgraph L2["Layer 2: Authentication"] JWT_AUTH["JWT Tokens
72-hour expiry"] OTP_2FA["OTP via SMS/Email
6-digit, 10-min expiry"] BIO["Biometric Auth
Face ID / Fingerprint"] end subgraph L3["Layer 3: Authorization"] ROLE["Role-Based Access
user | agent | admin"] PIN_V["Transaction PIN
4-digit, bcrypt hashed
Required before every txn"] GUARD["Route Guards
AgentOnly / AdminRequired"] end subgraph L4["Layer 4: Data"] BCRYPT["bcrypt Password Hashing
Cost factor: 10"] ENCRYPT["AES-256 Encryption
Sensitive fields at rest"] AUDIT["Full Audit Trail
Admin action logging"] end subgraph L5["Layer 5: Compliance"] KYC_AML["KYC/AML Verification
Smile Identity"] TXN_MON["Transaction Monitoring
Chainalysis"] SANCTIONS["Sanctions Screening
PEP / OFAC lists"] LIMITS["Transfer Limits
Daily: 5M CDF
Single: 1M CDF"] end L1 --> L2 --> L3 --> L4 --> L5 style L1 fill:#fce4ec,stroke:#c62828,stroke-width:1px style L2 fill:#fff3e0,stroke:#e65100,stroke-width:1px style L3 fill:#e3f2fd,stroke:#1565c0,stroke-width:1px style L4 fill:#e8f5e9,stroke:#2e7d32,stroke-width:1px style L5 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px

7. Payment Rails & IBAN Infrastructure

How money moves — domestically and internationally

graph TB subgraph DOMESTIC["Domestic Payments (DRC)"] MM_MPESA["Vodacom M-Pesa
STK Push / B2C / C2B"] MM_AIRTEL["Airtel Money
Collection & Disbursement"] MM_ORANGE["Orange Money
Payment API"] MM_AFRICELL["Africell Money"] LOCAL_BANK["Local Banks
Rawbank, TMB, Equity
Account-to-account"] AGENT_NET["Agent Network
10,000+ Cash Points
Cash-in / Cash-out"] end subgraph IBAN_SYS["IBAN & International Transfers"] IBAN_ISSUE["IBAN Issuance
Each user gets a unique IBAN
via Banking Circle / CurrencyCloud"] SEPA["SEPA Transfers
EUR zone, 0-2 days
Low cost"] SWIFT_NET["SWIFT Network
Global coverage
1-5 business days"] CORRESPONDENT["Correspondent Banks
USD nostro/vostro accounts"] end subgraph CARD_PAY["Card Payments"] VISA["Visa Network
Card issuance + processing"] MC["Mastercard Network
Card issuance + processing"] THREE_DS["3D Secure
Transaction verification"] end subgraph QR_PAY["QR Payments"] STATIC_QR["Static Merchant QR
Printed at POS"] DYNAMIC_QR["Dynamic QR
Generated per transaction"] NFC["NFC Tap-to-Pay
(Future)"] end USER((User)) --> DOMESTIC USER --> IBAN_SYS USER --> CARD_PAY USER --> QR_PAY IBAN_ISSUE -->|"Receive international
wire transfers"| SWIFT_NET IBAN_ISSUE -->|"Receive EUR
transfers"| SEPA SWIFT_NET --> CORRESPONDENT style DOMESTIC fill:#e8f5e9,stroke:#2e7d32,stroke-width:1px style IBAN_SYS fill:#e3f2fd,stroke:#1565c0,stroke-width:2px style CARD_PAY fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px style QR_PAY fill:#fff3e0,stroke:#e65100,stroke-width:1px

IBAN Architecture

How IBANs Work: Each verified user receives a personal IBAN (International Bank Account Number) issued through a banking-as-a-service provider (Banking Circle or CurrencyCloud). This IBAN allows users to receive international wire transfers (SWIFT) and EUR transfers (SEPA) directly into their Money+ wallet — just like Revolut, Wise, or N26. Incoming funds are automatically converted to the user's preferred currency at competitive FX rates.
FeatureImplementationProvider
IBAN IssuanceUnique IBAN per KYC-verified user (e.g., CD12 MPLUS 0001 2345 6789)Banking Circle / CurrencyCloud
SEPA IncomingReceive EUR from any EU bank account, 0-2 day settlementBanking Circle SEPA Access
SWIFT IncomingReceive USD/EUR/GBP from any bank worldwideCorrespondent Banking Network
SWIFT OutgoingSend to any bank account globally using IBAN/BICSWIFT gpi (Global Payments Innovation)
FX ConversionAuto-convert incoming foreign currency to CDF at market rateOpen Exchange Rates + markup
Diaspora RemittanceCongolese abroad send EUR/USD to family's Money+ IBANSWIFT + SEPA rails

8. Agent Network Architecture

The cash-to-digital bridge — modeled on M-Pesa's agent system

Cash-In (Deposit)

Customer hands physical cash to agent. Agent's e-money float decreases, cash float increases. Customer's wallet is credited instantly.

0.5% Commission

Cash-Out (Withdrawal)

Customer requests withdrawal. Agent's cash float decreases, e-money float increases. Customer receives physical cash.

0.5% Commission

Float Management

Agents maintain dual float: physical cash + e-money balance. Starting float: 500,000 CDF each. Rebalancing via bank deposit or super-agent network.

Real-time Tracking

Commission Engine

Automatic 0.5% commission per transaction. Daily/monthly reporting. Commission payouts to agent wallet. Tiered rates for high-volume agents.

Auto-calculated

9. Crypto & Digital Assets Architecture

Buy, sell, send, swap, and hold cryptocurrencies

AssetBuySellSendSwapExchange Provider
BTC BitcoinYesYesYesYesBinance / Coinbase
ETH EthereumYesYesYesYesBinance / Coinbase
USDT TetherYesYesYesYesBinance
BNB Binance CoinYesYesNoYesBinance
SOL SolanaYesYesYesYesCoinbase
XRP RippleYesYesYesYesBinance

10. Loan & Credit Architecture

Micro-lending powered by transaction history and credit scoring

flowchart TD APPLY([User Applies for Loan]) --> ELIGIBLE{"Eligibility Check
- KYC verified?
- Account age > 30 days?
- Transaction history?
- No active defaults?"} ELIGIBLE -->|Fail| DENIED["Application Denied
Show reason + retry date"] ELIGIBLE -->|Pass| SCORE["Credit Scoring Engine"] subgraph SCORING["Credit Scoring Model"] S1["Transaction Frequency
Weight: 25%"] S2["Average Balance
Weight: 20%"] S3["Income Regularity
Weight: 20%"] S4["Repayment History
Weight: 25%"] S5["Account Age
Weight: 10%"] end SCORE --> SCORING SCORING --> CREDIT_SCORE["Credit Score: 0-1000"] CREDIT_SCORE --> OFFER["Generate Loan Offer
Amount: up to 3x avg monthly income
Interest: 5-15% per month
Term: 7-90 days"] OFFER --> ACCEPT{User Accepts?} ACCEPT -->|No| CANCEL[Application Cancelled] ACCEPT -->|Yes| DISBURSE["Instant Disbursement
Credit user's M+ Wallet"] DISBURSE --> REPAY_SCHED["Repayment Schedule
Auto-deduct from wallet
SMS reminders"] REPAY_SCHED --> REPAID{Fully Repaid?} REPAID -->|Yes| SCORE_UP["Improve Credit Score
Unlock higher limits"] REPAID -->|No, Overdue| COLLECT["Collection Process
SMS reminders → Restrict withdrawals
→ Report to credit bureau"] style SCORING fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px
Loan ProductAmount RangeInterestTermRequirements
Nano Loan1,000 - 10,000 CDF5% flat7 daysActive account, min 5 transactions
Micro Loan10,000 - 100,000 CDF8% flat14-30 daysKYC verified, 30+ day account
Personal Loan100,000 - 1,000,000 CDF10-15%/month30-90 daysFull KYC, income proof, credit score 600+
Agent Float Loan500,000 - 5,000,000 CDF8%/month30 daysAgent role, 60+ day history, good float utilization
Regulatory Note: Micro-lending in DRC requires authorization from the Central Bank of Congo (BCC). Interest rate caps and consumer protection rules apply. All loan products must be registered with the BCC before launch.

11. Concurrency & Scalability Architecture

Handling thousands of concurrent transactions safely

flowchart TB subgraph CONCURRENT["Concurrent Requests"] R1["User A: Send 5000 CDF"] R2["User B: Withdraw 3000 CDF"] R3["Agent C: Cash-In 10000 CDF"] R4["User D: Buy BTC"] R5["USSD: Check Balance"] R6["WhatsApp: Pay Bill"] end R1 & R2 & R3 & R4 & R5 & R6 --> GIN["Gin HTTP Server
1 goroutine per request
Zero-allocation router"] GIN --> POOL["MySQL Connection Pool
Max Open: 100
Max Idle: 25
Lifetime: 5 min"] subgraph LOCKING["Balance Protection"] MUTEX["sync.Map per-wallet Mutex
Prevents double-spend"] DEADLOCK["Deadlock Prevention:
Always lock lower wallet ID first"] ATOMIC["Atomic SQL Updates:
SET balance = balance - ?
(not read-modify-write)"] GORM_TX["GORM Transaction:
Begin → Debit → Credit → Commit
Auto-rollback on failure"] end POOL --> LOCKING subgraph SCALE["Horizontal Scaling"] LB2["Load Balancer"] S1["Server 1"] S2["Server 2"] S3["Server N"] REDIS2["Redis (shared state)
Distributed locks
Session store"] end LB2 --> S1 & S2 & S3 S1 & S2 & S3 --> REDIS2 style CONCURRENT fill:#e3f2fd,stroke:#1565c0,stroke-width:1px style LOCKING fill:#fce4ec,stroke:#c62828,stroke-width:1px style SCALE fill:#e8f5e9,stroke:#2e7d32,stroke-width:1px

12. Infrastructure & Deployment

Cloud-native deployment with CI/CD

graph TB subgraph CI_CD["CI/CD Pipeline"] GIT["GitHub Repository"] --> GH_ACTIONS["GitHub Actions"] GH_ACTIONS --> TEST["Run Tests
Unit + Integration"] TEST --> BUILD["Build Docker Images"] BUILD --> PUSH["Push to Container Registry"] end subgraph PROD["Production (AWS / Azure)"] ALB["Application Load Balancer
+ WAF + SSL"] ECS1["Go API Server
(Container x3)"] ECS2["WhatsApp Bot
(Container x1)"] ECS3["USSD Handler
(Container x1)"] RDS["MySQL RDS
Multi-AZ Replica"] ELASTI["Redis ElastiCache
Cluster Mode"] S3_STORE["S3 Bucket
KYC Documents"] CLOUDFRONT["CloudFront CDN
Admin Dashboard"] end PUSH --> ALB ALB --> ECS1 & ECS2 & ECS3 ECS1 --> RDS ECS1 --> ELASTI ECS1 --> S3_STORE CLOUDFRONT --> WEB_APP["React Admin App"] subgraph MONITORING["Monitoring & Observability"] CW["CloudWatch Metrics"] SENTRY["Sentry Error Tracking"] GRAFANA["Grafana Dashboards"] PAGER["PagerDuty Alerts"] end ECS1 --> CW & SENTRY CW --> GRAFANA --> PAGER style CI_CD fill:#e3f2fd,stroke:#1565c0,stroke-width:1px style PROD fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style MONITORING fill:#fff3e0,stroke:#e65100,stroke-width:1px

13. Compliance & Regulatory Framework

Regulatory requirements for operating in the DRC and East Africa

RequirementAuthorityStatusImplementation
Payment Service Provider LicenseBanque Centrale du Congo (BCC)RequiredApplication via BCC portal, capital requirements
Electronic Money Institution LicenseBCCRequiredFor wallet issuance and float management
KYC / Customer Due DiligenceBCC / FATFImplemented3-step KYC: personal info + ID document + selfie (Smile Identity)
AML / CFT ComplianceCENAREF (DRC FIU)ImplementedTransaction monitoring, suspicious activity reporting, sanctions screening
Data ProtectionDRC Constitution Art. 31ImplementedEncryption at rest + transit, data minimization, user consent
Crypto Asset RegulationBCC (evolving)MonitoringCompliance-ready architecture, can disable crypto module via admin settings
Consumer Credit LicenseBCCRequired for lendingInterest rate caps, cooling-off period, transparent fee disclosure
Cross-border Transfer LicenseBCC / SWIFTRequired for IBANCorrespondent banking relationships, SWIFT membership or BaaS partnership
USSD Short Code RegistrationARPTC (Telecom regulator)RequiredRegister dedicated USSD short code with ARPTC, agreements with each telco

14. Technical Roadmap

Four-phase deployment strategy

Phase 1 — MVP Launch (Q3 2026)

  • M-Pesa + Airtel Money integration
  • SMS OTP (Africa's Talking)
  • KYC (Smile Identity)
  • P2P transfers + agent cash-in/out
  • Airtime top-up
  • USSD short code registration + basic menu
  • Admin dashboard live

Phase 2 — Expansion (Q4 2026)

  • Orange Money + Africell
  • Virtual card issuance (Visa)
  • WhatsApp bot payments
  • QR code merchant payments
  • Bill payments (SNEL, Regideso)
  • Push notifications (Firebase)
  • Email service (SendGrid)

Phase 3 — Financial Products (Q1 2027)

  • IBAN issuance (Banking Circle)
  • SWIFT/SEPA international transfers
  • Crypto trading (Binance API)
  • Nano & micro loan products
  • Credit scoring engine
  • Physical card shipping
  • Multi-country: Kenya, Tanzania

Phase 4 — Scale (Q2-Q4 2027)

  • Full SWIFT membership
  • Business/merchant accounts
  • Insurance products
  • Savings & investment products
  • Open banking API (developer portal)
  • 10+ African country expansion
  • 1M+ user target

External API Provider Map

All 19+ external service integrations

CategoryProviderPurposePhase
Mobile MoneyVodacom M-PesaSTK Push, B2C, C2B paymentsPhase 1
Airtel MoneyCollection & disbursementPhase 1
Orange MoneyPayment APIPhase 2
Africell MoneyTop-up & transferPhase 2
BankingBanking Circle / CurrencyCloudIBAN issuance, SEPA accessPhase 3
SWIFT NetworkInternational wire transfersPhase 3
Rawbank / TMB / EquityLocal bank account APIPhase 2
Card NetworksVisaVirtual + physical card issuancePhase 2
MastercardCard processing, 3D SecurePhase 3
CryptoBinance APITrading engine, prices, order executionPhase 3
Coinbase APIFiat on/off rampPhase 4
CommunicationAfrica's TalkingSMS OTP, USSD gateway, airtimePhase 1
SendGridTransactional emailPhase 2
PushFirebase FCMPush notificationsPhase 2
WhatsAppMeta Cloud APIWhatsApp Business bot for paymentsPhase 2
IdentitySmile IdentityKYC document + face verification (Africa-focused)Phase 1
ComplianceChainalysisAML transaction monitoringPhase 3
FX RatesOpen Exchange RatesLive forex rates (CDF, USD, EUR, etc.)Phase 1
Crypto PricesCoinGecko APIReal-time crypto pricingPhase 3