Mpesa Express is an open source library Designed, Developed and Maintained by Dev Thagichu [ https://github.com/devthagichu ].
The Library is a wrapper around Safaricom's Daraja API that can be used in Node JS Applications
Safaricom Daraja API: https://developer.safaricom.co.ke/
- Typescript
- Promises
npm install mpesa-express
or
yarn add mpesa-express
Add to project
const Mpesa = require ('mpesa-express');
// Initialize with options
const options = {
// Cousumer Key and Consumer Secret are found on your Client Dashboard
// https://developer.safaricom.co.ke/user/me/apps
consumer_key: "<STRING>",
consumer_secret: "<STRING>",
// Passkey , Business Shortcode and Shortcode are found on the Test Credentials Page
// https://developer.safaricom.co.ke/test_credentials
passkey: "<STRING>", // bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919
BusinessShortCode: "<INTEGER>", // 174379
ShortCode: "<INTEGER>", //600000
// Secruity Credentials is generated by adding the consumer secret as
// the Initiator Security Password and clicking Generate Credentials
SecurityCredential: "<STRING>", //Safaricom147!
Initiator: "<STRING>", //testapi
callBackBaseUrl: "<STRING>",
};
const mpesa = new Mpesa(options)
https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpush/v1/processrequest
// The Lipa Na M-Pesa Online Payment options are found on the API Section under Lipa Na M-Pesa Online Payment API
// https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpush/v1/processrequest
// The transaction amount you want to simulate
const Amount = "<INTEGER>" // 1
// The Transacting Mobile Number
const PhoneNumber = "<INTEGER>" // 2547xxxxxxxx
// Any Refferance or ID that you would what to associate the
// transaction with
const AccountReference = "<STRING>" // Invoice-001
// Any Description that you would what to associate the
// transaction with
const TransactionDesc = "<STRING>" // Admission fee
mpesa.sktPush(Amount, PhoneNumber, AccountReference, TransactionDesc)
.then((result) => console.log(result))
.catch((error) => console.error(error));
https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpushquery/v1/query
// The Lipa Na M-Pesa Query Request API options are found on the API Section under Lipa Na M-Pesa Query Request API
// https://developer.safaricom.co.ke/lipa-na-m-pesa-online/apis/post/stkpushquery/v1/query
// This is a global unique identifier of the processed checkout transaction request.
const CheckoutRequestID = "<STRING>" // ws_CO_DMZ_123212312_2342347678234
mpesa.stkCheck(CheckoutRequestID)
.then((result) => console.log(result))
.catch((error) => console.error(error));
https://developer.safaricom.co.ke/c2b/apis/post/registerurl
// The C2B options are found on the API Section under C2B Register URL
// https://developer.safaricom.co.ke/c2b/apis/post/registerurl
// Confirmation URL is the CALLBACK URL to your app
// Safaricom will send a POST request to this url once a C2B payment is confirmed
const ConfirmationURL = "<STRING>" // https://youapp/confirm
// Validation URL is the CALLBACK URL to your app
// Safaricom will send a POST request to this url once a C2B payment is confirmed
const ValidationURL = "<STRING>" // https://youapp/valid
// Both ConfirmationURL and ValidationURL must be HTTPS
// Response types are: Completed or Cancelled.
const ResponseType = "<STRING>"
// This is the Business C2B shortcode
const ShortCode = "<INTEGER>" // 600000
mpesa.c2bRegister( ConfirmationURL, ValidationURL, ResponseType, ShortCode)
.then((result) => console.log(result))
.catch((error) => console.error(error));
the client phone's STK/SIM Toolkit menu, and enables you to receive the payment requests in real time.
https://developer.safaricom.co.ke/c2b/apis/post/simulate
// The C2B options are found on the API Section under C2B Simulate Transaction
// https://developer.safaricom.co.ke/c2b/apis/post/simulate
// This is the Business C2B shortcode
const ShortCode = "<INTEGER>" // 600000
// The transaction type you want to simulate
// CommandID types are: CustomerPayBillOnline OR CustomerBuyGoodsOnline.
const CommandID = "<STRING>"
// The transaction amount you want to simulate
const Amount = "<INTEGER>" // 1
// The Transacting Mobile Number
const Msisdn = "<INTEGER>" // 2547xxxxxxxx
// Any Refferance or ID that you would what to associate the
// transaction with
const BillRefNumber = "<STRING>" // Invoice-001
mpesa.c2bTransact(ShortCode, CommandID, Amount, Msisdn, BillRefNumber)
.then((result) => console.log(result))
.catch((error) => console.error(error));
https://developer.safaricom.co.ke/b2c/apis/post/paymentrequest
// The B2C Payment Request options are found on the API Section under B2C Payment Request
// https://developer.safaricom.co.ke/b2c/apis/post/paymentrequest
// The transaction amount you want to simulate
const Amount = "<INTEGER>" // 1
// The B2C shortcode
const PartyA = "<INTEGER>" // 600000
// The Phone Number receiving the money
const PartyB = "<INTEGER>" // 254722000000
// Comments that are sent along with the transaction.
const Remarks = "<STRING>" // Monthly check
// The transaction type you want to simulate
// CommandID types are:
// SalaryPayment
// BusinessPayment
// PromotionPayment
const CommandID = "<STRING>" // BusinessPayment
// Any additional information to be associated with the transaction.
const Occassion = "<STRING>" // Payment for ...
// Secruity Credentials is generated by adding the consumer secret as the Initiator Security
// Password and clicking Generate Credentials
const SecurityCredential = "<STRING>" // 32SzVdmCvjpmQfw3X2RK8UAv7xuhh304dXxFC5+3lslkk2TDJY/Lh6ESVwtqMxJzF7qA==
mpesa.b2c(Amount, PartyA, PartyB, Remarks, CommandID, Occassion, SecurityCredential)
.then((result) => console.log(result))
.catch((error) => console.error(error));
https://developer.safaricom.co.ke/account-balance/apis/post/query
// The Account Balance Request options are found on the API Section under Account Balance Request
// https://developer.safaricom.co.ke/account-balance/apis/post/query
// Type of commands
const CommandID = "<STRING>" // AccountBalance
// Type of organization receiving the transaction
// Types examples
// 1 – MSISDN
// 2 – Till Number
// 4 – Organization short code
const IdentifierType = "<INTEGER>" // 1
// Comments that are sent along with the transaction.
const Remarks = "<STRING>" // Monthly check
mpesa.checkAccountBalance(CommandID, IdentifierType, Remarks)
.then((result) => console.log(result))
.catch((error) => console.error(error));
Shortcode 1: 600147
Initiator Name: (Shortcode 1) testapi
Security Credential: (Shortcode 1) Safaricom147!
Shortcode 2: 600000
Test MSISDN: 254708374149
ExpiryDate: 2017-11-13T18:59:13+03:00
Lipa Na Mpesa Online Shortcode: 174379
Lipa Na Mpesa Online PassKey: bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919
All the support for this library is done through: https://github.com/devthagichu/mpesa-express/issues
Anthony Gitau Thagichu
Twitter: https://twitter.com/devthagichu
Facebook: https://www.facebook.com/devthagichu
Youtube: https://www.youtube.com/channel/UC7_SdKhua8Ysxzj2y_1km3Q?view_as=subscriber
Linkedn: https://www.linkedin.com/in/devthagichu/
This project is licensed under the MIT License.