📖 About the Project

📌 Inspiration

I was frustrated by how difficult it was to convert my personal M-Pesa statements into a clean, usable format. Every few months, I’d download a PDF statement, expecting a simple conversion process, only to spend hours manually copying and cleaning the data in Excel. When I realized there wasn’t a reliable, easy-to-use tool for this — especially one tailored for mobile money and African financial systems — I knew it was a problem worth solving. That’s how Statement To CSV was born.


📌 What it does

Statement To CSV is a clean, modern web application that converts M-Pesa and bank (mostly local and African) PDF statements into clean, ready-to-use CSV or Excel files. Users can upload their statements, and within seconds, download a structured file ready for analysis, record-keeping, or business accounting. The platform will later expand to support other African mobile wallets and banks.


📌 How we built it

I built Statement To CSV using:

  • Next.js for both frontend and backend API routes
  • Tailwind CSS for a modern, responsive UI
  • pdfjs-dist to extract transactions from PDF statements
  • ExcelJS and json2csv to generate downloadable files
  • *Stripe/Paystack * for payment integration
  • *Supabase * as the backend as a sevice and auth provider
  • *Netlify * for hosting
  • Modular API route structure for easy parser additions in the future

The system is designed to be serverless-ready, with built-in support for rate limiting, user feedback, and admin tools for monitoring conversions.


📌 Challenges we ran into

  • PDF parsing inconsistencies with varied M-Pesa formats
  • Stripe’s limited availability in Kenya, prompting research into local payment alternatives like Paystack and Flutterwave. Settled for Paystack
  • Handling file uploads and large statement conversions within the limits of serverless functions
  • Ensuring clean, reliable CSV/Excel generation from unstructured PDF data
  • Designing a flexible system architecture for easy addition of new statement parsers
  • Spending an entire day debugging a small issue after Bolt was unable to find the problem in 5 attempts.
  • Building the app several times, failing in each of those due to using some old packages.

📌 Accomplishments that we're proud of

  • Built a clean, reliable MVP for M-Pesa and bank conversions that actually works
  • Created a scalable, modern architecture that can easily grow to support banks and wallets across Africa
  • Developed a beautiful, accessible UI optimized for both desktop and mobile
  • Integrated a feedback mechanism so users can report conversion issues for continuous improvement
  • Designing and developing a fully fledged parser that accepts multiple variations of a statement from the same institution

📌 What we learned

  • PDF parsing is messy, and financial data formats vary wildly — but with the right abstractions, it’s manageable
  • Building for African markets requires thoughtful payment integration planning
  • Next.js is powerful for fullstack web apps, and serverless deployment saves a lot of infrastructure headaches. It does come with it's own headaches also, and they can be something else ;)
  • Structuring your backend to support pluggable parsers from day one makes future scaling way easier
  • Always build for real users — because if it annoyed me, it’s annoying someone else too

📌 What's next for Statement To CSV

  • Expanding support to other African financial providers like Airtel Money, Equity Bank, and Flutterwave wallets
  • Enabling bulk uploads and summary reports
  • Setting up a mobile-friendly web app and exploring a future native mobile version
  • Incorporating AI-powered transaction categorization and insights

Built With

Share this project:

Updates