M-Pesa Analysis

See where your money really goes

Your statement never leaves your phone or computer

Everything happens inside this page, in your browser. Your PDF and password are not uploaded, there is no server, no account and no tracking. The only thing remembered on your device is the category choices you make (for example “JOHN DOE → Other”) — never the statement itself.

How can I check that?
  • This is one plain HTML file. Use “View source” to read every line.
  • The page carries a security policy that forbids it from making any network connection (connect-src 'none'), so it technically cannot send data anywhere.
  • Open your browser’s developer tools → Network tab, then load a statement. Nothing is sent.
  • The only things fetched are two public libraries when the page opens: PDF.js (reads the PDF) and Chart.js (draws charts).
  • Closing or refreshing the page erases the statement from memory.

1. Add your statement

Where do I get my statement?
  1. Dial *334# → My Account → M-PESA Statement → Request Statement. You can also use the M-PESA app or the MySafaricom app.
  2. Choose a Full Statement (a mini statement lists only a few transactions) and the period you want.
  3. Enter your email address. Safaricom emails you the PDF and sends the PDF password by SMS.
  4. Open the email on this device, save the PDF, then add it here with the password.

Menu names change from time to time. If yours look different, search for “statement” in the app or menu.

Safaricom sends the password for the emailed statement by SMS. It is used only to open the PDF on this device.
No luck with the PDF? Paste a CSV instead
Needs a header row with: Receipt No, Completion Time, Details, Transaction Status, Paid In, Withdrawn, Balance. Comma, semicolon or tab separated.

The sample is entirely made up. A password-protected sample PDF (password demo1234) is in the sample folder next to this file.