Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

API for (mobile) commercial accounts

branch: master

I removed the database.sql as it contained a very old version of the …

…database structure.

This seems to have caused some confusion as this database file was used by some to install pesapi, and subsequently the install script only checked if the database had the correct tables not if it actually had the correct structure.

My appologies for leaving this "old" structure behind.
The "official" way to install Pesapi database structure is to use the supplied install script which will automatically create the database structure if it is not present.
latest commit a3781f7f35


PesaPI is an unofficial open source API for mobile money systems, released under the BSD(lite) license.
The system currently support:

  • Kenya: Mpesa paybill accounts
  • Kenya: Mpesa private accounts
  • Kenya: Airtel private accounts
  • Kenya: Yu private accounts (experimental)
  • Ghana: Airtel private accounts (experimental)
  • Rwanda: MNT private accounts (experimental)
  • Tanzania: Mpesa private accounts
  • Tanzania: Tigo private accounts

The API supports both PUSH and PULL versions. The PHP version of the API is generally the most mature and recomended at this point - the system is build using Mysql and Curl. Please direct all questions to the public mailing-list "pesaPi" on Google-groups:

Short example

For a short usage example please see:

Current status

The current system should be considered as beta version - at least one commercial solution is using it as its payment gateway. However it is not recomended that you deploy the system without having a developer available to support the setup.

Version 0.1.0 was recently released and is contains a major rework of the internal structures of PesaPi - be alert that things that worked previously may not be fully working yet - as detailed testing is ongoing.

Currently we are looking for people to provide copies of the SMS messages they are getting from various payment systems.

System design overview

  • Supports both push and pull notifications.
  • Does synchroization between local and server database.
  • Transaction data are available even when main server is down.
  • Super easy to utilize for integrators.
  • Fast response on historical data.
  • Keep the load on servers as low as possible.
  • Hopefully more reliable than other APIs.

API Overview

The PesaPi class contains several static methods, these methods are the main interface.

  • availableBalance(time) -- returns the balance at a given point in time
  • locateByReceipt(receipt) -- returns a payment or null for the given receipt number
  • locateByPhone(phone, from, until) -- returns an array of payments from a particular phone
  • locateByName(name, from, until) -- returns an array of payments from a particular client name
  • locateByAccount(account, from, until) -- returns an array of payments from a particular account-no
  • locateByTimeInterval(from, until) -- returns an array of all payments within a given time interval

As an alternative you can ask PesaPi to call a your on your site when a new transaction is received (push mechanics).

Way forward

The following is a highlevel "todo" list for the project

  • Getting the code to release/production quality.
  • Getting more developers onboard.
  • Add support for more payment systems.
Something went wrong with that request. Please try again.