Currency
- All amounts in TZS (Tanzanian Shilling)
- Stored as integers (no floating point) — e.g., 500000 = TZS 500,000
- Display with thousand separators:
new Intl.NumberFormat('en-TZ').format(amount)
- International payments via Stripe use USD conversion
Mobile Money Integration
| Provider | Coverage | API |
|---|
| M-Pesa (Vodacom) | ~40% market share | Vodacom M-Pesa API |
| Airtel Money | ~25% market share | Airtel Money API |
| Tigo Pesa | ~20% market share | Tigo Pesa API |
Mobile Money Flow
1. Client selects mobile money provider
2. Client enters phone number
3. System sends payment request to provider API
4. Provider sends USSD push to client's phone
5. Client confirms with PIN on their phone
6. Provider sends webhook callback with status
7. System updates booking payment status