Who we are
m0xy is operated by MOXY EXPENSE TRACKER, a business registered in Kenya and run by Brian Kinyua. We are the data controller for all personal data processed through the m0xy app — meaning we decide what is collected and why.
| Detail | Information |
|---|---|
| Business name | MOXY EXPENSE TRACKER |
| Operated by | Brian Kinyua |
| Country | Kenya |
| Privacy contact | privacy@m0xy.app |
| Website | https://m0xy.app |
What we collect
We collect only what is necessary to make m0xy work. Here is a plain breakdown.
Account data
- Your phone number — used as your account identifier and to send M-PESA payment requests to your device
- Your name — asked for when you first sign in, and used to greet you and personalise the app. You can change it any time in your profile, or ask us to delete it by deleting your account
Transaction data
- M-PESA phone number used for each payment
- Payment amount and status (pending, confirmed, failed)
- M-PESA receipt number — for your records and reconciliation
- Checkout request ID — Safaricom's reference for each STK Push
- Date and time of each transaction
- Transaction category (e.g. food, transport) — assigned by you
- Paybill or till number associated with the payment
Budget and category data
- Spending limits you set per category
- Custom categories you create (name and icon)
Merchant data (merchant accounts only)
- Business name and M-PESA shortcode
- Payment session details (name, type, amount, status, timestamps)
- Session count — used for tier management
Technical data
- Crash reports — device type, OS version, app version (via Sentry — no payment data included)
- Anonymised app usage events — screen views, feature interactions (via PostHog — no financial data included)
- Randomly generated, per-install session IDs — cannot identify you across reinstalls
M-PESA payments
m0xy uses the Safaricom Lipa Na M-PESA Online (STK Push) API. Here is exactly what happens when you make a payment:
- m0xy sends your phone number, the payment amount, and the merchant shortcode to Safaricom over an encrypted connection
- Safaricom sends a payment prompt to your phone — you confirm by entering your M-PESA PIN directly on your device
- m0xy never sees or stores your M-PESA PIN
- Safaricom sends a payment result to our backend, which we store as your transaction record
What we never do: We never initiate a charge without your explicit action in the app. We never share your transaction data with advertisers. We never use your financial data for automated decisions that affect you.
Safaricom's handling of your data through M-PESA is governed by Safaricom's own Privacy Policy and M-PESA Terms, which are separate from this policy.
How we use your data
All processing is based on a lawful reason under the Kenya Data Protection Act, 2019 (Section 30).
| Purpose | Lawful basis |
|---|---|
| Processing your M-PESA payments | Performance of contract |
| Showing your transaction history | Performance of contract |
| Budget tracking and spending categories | Performance of contract |
| Payment confirmations and status updates | Performance of contract / Legitimate interest |
| Merchant payment sessions | Performance of contract |
| Diagnosing app crashes (Sentry) | Legitimate interest — maintaining a reliable app |
| Understanding feature usage (PostHog) | Legitimate interest — you may opt out anytime |
| M-PESA API compliance and transaction logging | Legal obligation (Safaricom Daraja API terms) |
| Kenya Data Protection Act compliance | Legal obligation |
How long we keep your data
| Data category | Kept for |
|---|---|
| Transaction records | 3 years from the transaction date, or until account deletion |
| Account and profile data | Until you delete your account (processed within 30 days) |
| Budget and category data | Until you delete your account or the data within the app |
| Crash logs (Sentry) | 90 days — then automatically deleted by Sentry |
| Usage analytics (PostHog) | 24 months, then anonymised or deleted |
| M-PESA callback data | 3 years — required for payment reconciliation |
Your rights
Under the Kenya Data Protection Act, 2019, you have the following rights over your personal data. To exercise any of these, email privacy@m0xy.app — we respond within 21 days.
| Right | What it means |
|---|---|
| Access | Request a copy of the personal data we hold about you |
| Rectification | Ask us to correct inaccurate or incomplete data |
| Erasure | Ask us to delete your data — except where we have a legal obligation to retain it (e.g. transaction records) |
| Object | Object to processing based on legitimate interest, including PostHog analytics |
| Opt out of analytics | Disable PostHog usage tracking in the app settings — this does not affect payments or core features |
| Data portability | Request an export of your transaction and budget data in a machine-readable format |
| Lodge a complaint | If you believe your rights have been violated, complain to the ODPC at odpc.go.ke |
How we protect your data
Technical measures
- All data in transit between the app and our backend is encrypted using HTTPS/TLS
- All communication with the Safaricom Daraja API is encrypted using HTTPS/TLS
- Firebase access control rules ensure each user can only access their own data
- M-PESA API credentials are stored as environment variables — never in app code or client-side code
- Sentry is configured with PII scrubbing — no payment or phone number data reaches Sentry
Data breach response
If a data breach occurs that puts your rights at risk, we will notify the ODPC within 72 hours and notify affected users without undue delay — as required by Section 43 of the Kenya Data Protection Act, 2019.
Analytics and monitoring tools
Sentry — crash monitoring
We use Sentry to detect and fix app crashes. Sentry collects error stack traces, device type, OS version, and app version. It uses a randomly generated per-install ID — not your phone number or any payment data. PII scrubbing is enabled. Data is held on Sentry servers in the USA for 90 days.
PostHog — product analytics
We use PostHog to understand how users move through the app. PostHog captures screen views and feature interactions using a randomly generated per-install identifier. Your M-PESA phone number, payment amounts, and transaction receipts are never sent to PostHog. You can opt out at any time in app settings.
Neither Sentry nor PostHog is used for advertising. Both act as data processors under our instruction and are bound by data processing agreements.
Children's privacy
m0xy is not intended for users under 18. M-PESA accounts in Kenya require the account holder to be 18 or older, which acts as a natural constraint. If we become aware that we have collected data from a minor, we will delete it promptly.
Changes to this policy
When we make material changes to this policy, we will notify you via a prominent in-app notice before the changes take effect, and update the effective date at the top of this page. The current version is always available at m0xy.app/privacy.
Your continued use of m0xy after a policy update constitutes acceptance of the revised terms.
Contact us
Questions, requests, or concerns about your data:
Within 21 days of receipt
If you are not satisfied with our response, you may lodge a complaint with the Office of the Data Protection Commissioner (ODPC):
odpc.go.ke · Britam Towers, 12th Floor, Hospital Road, Upperhill, Nairobi