An Android SMS gateway that intercepts incoming SMS messages from whitelisted financial providers, filters for money-received transactions, and forwards them to a configurable webhook endpoint in real-time. Built for the Ethiopian financial ecosystem
# MufasaPay SMS Gateway
An Android SMS gateway that intercepts incoming SMS messages from whitelisted financial providers, filters for money-received transactions, and forwards them to a configurable webhook endpoint in real-time.
Built for the Ethiopian financial ecosystem — supports CBE Birr, Telebirr, M-PESA, HelloCash, and more out of the box.
## How It Works
```
SMS Received → Sender Whitelisted? → Matches Money Pattern? → Save to DB → Forward to Webhook
↓ No ↓ No ↓ Failed
Discard Discard Retry via WorkManager
```
1. A `BroadcastReceiver` (priority 999) intercepts incoming SMS — non-invasively, the SMS still reaches the default SMS app
2. A foreground service validates the sender against a whitelist
3. The message body is checked against a configurable pattern (or a built-in "money received" fallback)
4. Matching messages are saved to a local Room database
5. A webhook payload is built and sent to your configured endpoint via Retrofit
6. On failure, WorkManager schedules retries with exponential backoff
7. A daily cleanup worker removes messages older than 30 days
## Features
- **Sender Whitelisting** — only process SMS from configured senders
- **Pattern Matching** — filter for "money received" messages using extracted patterns from sample messages
- **Webhook Forwarding** — POST/PUT/PATCH to any endpoint with Bearer, Basic, API Key, or no auth
- **Retry Logic** — automatic retries with exponential backoff via WorkManager
- **Delivery Tracking** — full audit trail with status (PENDING, SUCCESS, FAILED, RETRYING), HTTP response codes, and duration
- **Real-time Dashboard** — reactive stats powered by Room Flows
- **Connection Testing** — test your webhook endpoint before going live
- **Ethiopian Providers** — 10 pre-configured financial providers for quick onboarding
## Architecture
Clean Architecture with MVVM presentation layer:
```
┌─────────────────────────────── …