0% found this document useful (0 votes)
149 views

Developers Guide B2B Interface - v0.3

This document provides a developer's guide for an M-PESA B2B interface. It includes details on data types, message flows, and web service interfaces for the API. The guide defines structures for transactions, identities, requests, and responses. It also lists the operations available through the RequestMgrPortType, ResultMgrPortType, QueueTimeoutNotificationPort, QueryTransactionPort and Management interfaces.

Uploaded by

valentine mokaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
149 views

Developers Guide B2B Interface - v0.3

This document provides a developer's guide for an M-PESA B2B interface. It includes details on data types, message flows, and web service interfaces for the API. The guide defines structures for transactions, identities, requests, and responses. It also lists the operations available through the RequestMgrPortType, ResultMgrPortType, QueueTimeoutNotificationPort, QueryTransactionPort and Management interfaces.

Uploaded by

valentine mokaya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 93

PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Developer’s Guide
B2B Interface
V0.3

i
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Approvals

This document needs below approvals for implementation.

Author(s) Name Signature Date

Service Development Engineer Eneth Kubai

Reviewers Name Signature Date

Senior Manager Service Development Reginald Tole

HOD - Product Development, MPESA Brian Wamatu

Revision Log

Revision Revision Date Revision Revision made by


Number

0.1 September 7, Initial Draft Eneth Kubai


2014

0.2 October 1, Added new interface Eneth Kubai


2014

0.3 April 24, 2015 Updated the interface Eneth Kubai

ii
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Abbreviations

Term Definition

API Application Programming Interface

B2B Business to Business

Broker Service Access Gateway

SP Service Provider

References

Document Author Name

Eneth Kubai Response and Result Codes


V1.0
Response and
Result codesV1.0.xlsx

John Barii SSL Guide

SSL.pdf

iii
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Table of Contents
Approvals.......................................................................................................................................... ii
Revision Log..................................................................................................................................... ii
Abbreviations ................................................................................................................................. iii
References ........................................................................................................................................ iii
Introduction.................................................................................................................................... 7
1.1 Scope ................................................................................................................................................................ 7
1.2 Overview – API Framework............................................................................................................................. 7

Message Flow Description .......................................................................................................... 8


Data Type Definition ................................................................................................................... 9
3.1 IdentityType enumeration................................................................................................................................. 9
3.2 IdentifierType enumeration .............................................................................................................................. 9
3.3 ParameterType structure ................................................................................................................................... 9
3.4 Parameters structure ......................................................................................................................................... 9
3.5 ReferenceData structure ................................................................................................................................. 10
3.6 Transaction structure ...................................................................................................................................... 10
3.7 Caller structure ............................................................................................................................................... 11
3.8 Initiator structure ............................................................................................................................................ 12
3.8.1 Password Encryption............................................................................................................................. 12
3.9 PrimaryParty structure.................................................................................................................................... 13
3.10 ReceiverParty structure ................................................................................................................................ 13
3.11 AccessDevice structure ................................................................................................................................. 13
3.12 Identity structure .......................................................................................................................................... 14
3.13 Request structure .......................................................................................................................................... 14
3.14 Response structure ....................................................................................................................................... 14
3.15 ResultParameters structure ........................................................................................................................... 15
3.16 Result structure............................................................................................................................................. 15
3.17 Result code ................................................................................................................................................... 16

Web Service Interface Definition ............................................................................................ 21


4.1 Interface: RequestMgrPortType ..................................................................................................................... 21
4.1.1 Operation: GenericAPIRequest ............................................................................................................. 21
4.2 Interface: ResultMgrPortType ........................................................................................................................ 23
4.2.1 Operation: GenericAPIResult ............................................................................................................... 23
4.3 Interface: QueueTimeoutNotificationPort ...................................................................................................... 24
4.3.1 Operation: notifyQueueTimeout ........................................................................................................... 24

iv
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

4.4 Interface: QueryTransactionPort .................................................................................................................... 25


4.4.1 Operation: queryTransaction ................................................................................................................. 25
4.5 Interface: Management ................................................................................................................................... 27
4.5.1 Operation: changePassword .................................................................................................................. 27

Transaction Types ....................................................................................................................... 31


5.1 Request Party Matrix ...................................................................................................................................... 31
5.2 Business Paybill ............................................................................................................................................. 34
5.3 Disburse Funds to Business ............................................................................................................................ 36
5.4 Business Buy Goods ...................................................................................................................................... 38
5.5 BusinessToBusinessTransfer .......................................................................................................................... 39
5.6 BusinessTransferFromMMFToUtility ............................................................................................................ 41
5.7 BusinessTransferFromUtilityToMMF ............................................................................................................ 43
5.8 MerchantToMerchantTransfer ........................................................................................................................ 45
5.9 MerchantTransferFromMerchantToWorking ................................................................................................. 47
5.10 MerchantTransferFromWorkingToMerchant ............................................................................................... 49
5.11 OrgBankAccountWithdrawal ....................................................................................................................... 51
5.12 OrgRevenueSettlement ................................................................................................................................. 52
5.13 MerchantServicesMMFAccountTransfer ..................................................................................................... 53
5.14 AgencyFloatAdvance ................................................................................................................................... 55
5.15 Balance Query from the Business Customer ................................................................................................ 57
5.16 Transaction Status Query ............................................................................................................................. 60

Example ......................................................................................................................................... 62
6.1 B2B Transactions ........................................................................................................................................... 62
6.1.1 GenericApiRequest ............................................................................................................................... 62
6.1.2 GenericApiResponse ............................................................................................................................. 64
6.1.3 GenericAPiResult ................................................................................................................................. 65
6.2 OrgRevenueSettlement ................................................................................................................................... 66
6.2.1 GenericApiRequest ............................................................................................................................... 66
6.2.2 GenericApiResponse ............................................................................................................................. 68
6.2.3 GenericAPiResult ................................................................................................................................. 68
6.3 OrgBankAccountWithdrawal ......................................................................................................................... 69
6.3.1 GenericApiRequest ............................................................................................................................... 69
6.3.2 GenericApiResponse ............................................................................................................................. 71
6.3.3 GenericAPiResult ................................................................................................................................. 72
6.4 TransactionStatusQuery ................................................................................................................................. 72
6.4.1 GenericApiRequest ............................................................................................................................... 72
ReceiptNumber .............................................................................................................................................. 72

v
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

OriginatorConversationID ............................................................................................................................. 75
ConversationID .............................................................................................................................................. 77
6.4.2 GenericApiResponse ............................................................................................................................. 79
6.4.3 GenericAPiResult ................................................................................................................................. 80
6.5 Balance Check ................................................................................................................................................ 81
6.5.1 GenericApiRequest ............................................................................................................................... 81
6.5.2 GenericApiResponse ............................................................................................................................. 83
6.5.3 GenericAPiResult ................................................................................................................................. 83
6.6 notifyQueueTimeout ...................................................................................................................................... 84
6.6.1 The Broker send notification to the 3rd party ....................................................................................... 84
6.6.2 The 3rd party return response to the Broker .......................................................................................... 86
6.7 queryTransaction ............................................................................................................................................ 87
6.7.1 The 3rd party sends query request to the Broker ................................................................................... 87
6.7.2 The Broker return response to the 3rd party .......................................................................................... 88
6.8 changePassword ............................................................................................................................................. 92
6.8.1 Request example: .................................................................................................................................. 92
6.8.2 Response example: ................................................................................................................................ 92

vi
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Introduction

1.1 Scope
The present document specifies the real time B2B Web Service aspects of the interface. All aspects of B2B
Web Service are defined here, these being:
 Message Flow Description
 Data Type Definition
 Web Service Interface Definition
 Transaction Types description
 WSDL for this specification
 Example

1.2 Overview – API Framework


This document details the interface specification for a real time M-Pesa transaction API delivered within the
MPesa Core API Framework. The Core API defines an abstract model for API requests which includes 4 distinct
parties to API operations, as well as a generic set of API operation parameters.
Initiators are the organization or entity requesting that an API operation or transaction is performed.
The Caller is the actual piece of software which communicates with the MPesa Core API web service.
The Primary Party is (typically) the debit party within an existing MPesa financial transaction.
The Receiver Party is correspondingly the credit party in an MPesa financial transaction.

7
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Message Flow Description

third party SAG CoreAPI

1.GenericAPIRequest

2.Authentication

3.Authorization

3.SLA
4.GenericAPIRequest

5.ApiResponse

6.ApiResponse

{short delay}

7.GenericAPIResult

8.Authentication
9.GenericAPIResult

10.ApiResultResponse

11.ApiResultResponse

12.notifyQueueTimeout

13.notifyQueueTimeoutResponse

8
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Data Type Definition

3.1 IdentityType enumeration


List of IdentityType values.
Enumeration Description
1000 Customer
2000 SPOperator
3000 OrganizationOperator
5000 Organization
6000 Till
8000 SP

3.2 IdentifierType enumeration


List of IdentityType values.
Enumeration Description
1 MSISDN
2 TillNumber
3 SPShortCode
4 OrganizationShortCode
5 IdentityID
6 O2CLink
9 SPOperatorCode
10 POSNumber
11 OrganizationOperatorUserName
12 OrganizationOperatorCode
13 VoucherCode

3.3 ParameterType structure


Element name Element type Optional Description
Key xsd:string No It indicates a parameter name.
Value xsd:string No It indicates a parameter value.

3.4 Parameters structure


Element name Element type Optional Description
Parameter ParameterTyp No It is used to carry specific parameters for specific transaction or
e[1..unbounde business operation.
d]

9
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.5 ReferenceData structure


Element name Element type Optional Description
ReferenceItem ParameterTyp No It is used carry some reference data that MM need not analyze but
e[1..unbounde need to record it into transaction log..
d]

3.6 Transaction structure


Element name Element Optional Description
type
CommandID xsd:string No The unique identifier of transaction/business operation. Max length is
64.eg
 BusinessBuyGoods
 BusinessPayBill
 DisburseFundsToBusiness
 BusinessToBusinessTransfer
 BusinessTransferFromMMFToUtility
 BusinessTransferFromUtilityToMMF
 MerchantToMerchantTransfer
 MerchantTransferFromMerchantToWorking
 MerchantTransferFromWorkingToMerchant
 OrgBankAccountWithdrawal
 OrgRevenueSettlement
 MerchantServicesMMFAccountTransfer
 AgencyFloatAdvance
LanguageCode xsd:string Yes It indicates language. It’s reserved.
OriginatorConv xsd:string No The unique identifier of the request message generated by third party. It
ersationID is used to identify a request between the third party and MM. Max
length is 128.
Field must start with the Organisation short and name of organisation.
Eg.
232323_KCBOrg_XXXXXX
XXXXX must be unique for every transaction.

ConversationID xsd:string Yes The unique identifier generated by MM for a previous request message.
It is used to support communication multi-times between the third party
and MM for one operation/transaction.
Remark xsd:string Yes The remark information about this operation. Max length is 255
Parameters Parameters Yes It is used to carry specific parameters for specific transaction or
business operation.
If the element EncryptedParameters presents, this parameter should
not present.
ReferenceData ReferenceDa Yes It is used carry some reference data that MM need not analyze but
ta need to record it into transaction log.
Timestamp xsd:string No The timestamp generated by the third party.

10
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.7 Caller structure


Element name Element type Optional Description
CallerType xsd:integer No Indicates the type of the caller:
2-APICaller
3-Other(Reserved)
ThirdPartyID xsd:string No The unique identifier of a third party system defined in MM. It indicates
the third party which initiates the request. Max length is 20
Password xsd:string Yes This security credential of the ThirdPartyID defined in MM. If the
password feature for third party is used in MM, then this parameter
must be presented in the request message.
CheckSum xsd:string Yes Currently it is unused. It is reserved for API security.
ResultURL xsd:string Yes It indicates the destination URL where Broker should send the result
message to.

11
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.8 Initiator structure


Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the initiator. The value of this parameter
must be a valid identifier type supported by MM.
Identifier xsd:string No It indicates the identifier of the initiator. Its value must match the
inputted value of the parameter IdentifierType.
SecurityCrede xsd:string No It indicates the security credential of the initiator. Its value must match
ntial the inputted value of the parameter IdentifierType.
ShortCode xsd:string Yes When the initiator is an organization operator, this parameter must be
present in the request to indicate which organization the operator
belongs to.
If the initiator is not an organization operator, this parameter should not
be present.

3.8.1 Password Encryption


The Caller will be required to confirm its authority to act on behalf of the Initiator (in other words, a
specific M-PESA organisation) by presenting the user name and password for the Initiator, the latter
encrypted with the public key from an X509 certificate issued to the Initiator specifically for this purpose.
The following algorithm must be followed by the Initiator to encrypt passwords:
First, create the block of data to be encrypted:
 Write the unencrypted password value.
 Then, encrypt the block of data created in step 1 with the public portion of the password key
certificate. Use the RSA algorithm, and use PKCS #1.5 padding (not OAEP), and add the result to
the encrypted stream – this becomes the encrypted password which is submitted via the API.
 Convert the resulting encrypted byte array into a string using base64 encoding. Present this base64
encoded string in the API request as the initiator SecurityCredential value.

12
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.9 PrimaryParty structure


Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the primary party. The value of this
parameter must be a valid identifier type supported by MM and must
match the inputted value of the parameter IdentityType.
Identifier xsd:string No It indicates a parameter value.
ShortCode xsd:string Yes It is reserved

3.10 ReceiverParty structure


Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the recipient party. The value of this
parameter must be a valid identifier type supported by MM.
Identifier xsd:string No It indicates the identifier of the recipient party. Its value must match the
inputted value of the parameter IdentifierType.
ShortCode xsd:string Yes When the receiver party is an organization operator or a Till, this
parameter must be present in the request to indicate which organization
the receiver party belongs to.
If the receiver party is not an organization operator or a Till, this
parameter should not be present.

3.11 AccessDevice structure


Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the access device.
Identifier xsd:string No It indicates the identifier of the access device. Its value must
match the inputted value of parameter IdentifierType

13
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.12 Identity structure


Element Element Optional Description
name type
Caller Caller No It indicates the third party which initiates the request
Initiator Initiator No
It indicates the identity who makes the request. An initiator must be one
of the following identity types:
 SP operator
 Organization operator(11)
NOTE
The value “11”(Organization Operator)or ‘14’(SP Operator) will be
used for all the services in this document.

PrimartyParty PrimartyParty Yes If business operation/action, this element is not present; if transaction,
this can be either the debit party or the credit party according to the
transaction type.
ReceiverParty ReceiverParty Yes If business operation/action, this is the affected party; if transaction, it is
the opposite party to the PrimaryParty
AccessDevice AccessDevice Yes It indicates the access device which the initiator uses to initiate the
request.

3.13 Request structure


Element name Element type Optional Description
Transaction Transaction No It indicates a transaction.
Identity Identity No This section is used to specify all identities involved in the request
KeyOwner xsd:integer No It indicates which Key is used to encrypt the elements
Initator.SecurityCredential and the EncryptedParameters.
Its value are enumerated as follows:
1:the API Caller's Key
2:the Initiator's Key

3.14 Response structure


Element Element type Optional Description
name
ResponseCod xsd:string No It indicates whether MM accepts the request or not.
e
ResponseDesc xsd:string Yes Its value is a description for the parameter ResultCode.
ConversationI xsd:string Yes The unique identifier generated by M-Pesa for the request
D message.
OriginatorConv xsd:string Yes The unique identifier generated by the third party for the request
ersationID message.
ServiceStatus xsd: integer Yes It indicates the MM service status.

14
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.15 ResultParameters structure


Element name Element type Optional Description
ResultParamet ParameterType Yes It is used to carry specific parameters for specific transaction or
er [0…unbounded business operation.
]

3.16 Result structure


Element name Element type Optiona Description
l
ResultType xsd:integer Yes 0: completed 1: waiting for further messages
ResultCode xsd:string No It indicates whether MM processes the request successfully or not.
Max length is 10
ResultDesc xsd:string Yes Its value is a description for the parameter ResultCode.Max length is
1024
OriginatorConv xsd:string Yes The unique identifier of the request message generated by third
ersationID party. Its value comes from the request message.
ConversationI xsd:string Yes The unique identifier generated by MM for a request
D
TransactionID xsd:string Yes It’s only for transaction. When the request is a transaction request,
MM will generate a unique identifier for the transaction.
ResultParamet ResultParamet Yes It is used to carry specific parameters for specific transaction or
ers ers business operation.
ReferenceData ReferenceData Yes It comes from the request message

15
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

3.17 Result code


Error code Error Description
0 Success ApiResult
1 Insufficient Funds ApiResult
2 Less Than Minimum Transaction Value ApiResult
3 More Than Maximum Transaction Value ApiResult
4 Would Exceed Daily Transfer Limit ApiResult
5 Would Exceed Minimum Balance ApiResult
6 Unresolved Primary Party ApiResult
7 Unresolved Receiver Party ApiResult
8 Would Exceed Maxiumum Balance ApiResult
11 Debit Account Invalid ApiResult
12 Credit Account Invaliud ApiResult
13 Unresolved Debit Account ApiResult
14 Unresolved Credit Account ApiResult
15 Duplicate Detected ApiResult
17 Internal Failure ApiResult
18 Initiator Credential Check Failure ApiResult
19 Message Sequencing Failure ApiResult
20 Unresolved Initiator ApiResult
21 Initiator to Primary Party Permission Failure ApiResult
22 Initiator to Receiver Party Permission Failure ApiResult
23 Request schema validation error ApiResponse
24 Missing mandatory fields ApiResponse
25 Cannot communicate with Caller ApiResponse
26 Traffic blocking condition in place ApiResponse
0 Success ApiResponse
100000000 Request was cached, waiting for resending ApiResponse
100000001 The system is overload ApiResponse
100000002 Throttling error ApiResponse
100000003 Exceed the limitation of the LICENSE ApiResponse
100000004 Internal Server Error ApiResponse
100000005 Invalid input value:%1 ApiResponse
%1 indicates the parameter’s name.
100000006 SP’s status is abnormal ApiResponse
100000007 Authentication failed ApiResponse
100000008 Service’s status is abnormal ApiResponse
100000009 API’s status is abnormal ApiResponse
100000010 Insufficient permissions ApiResponse
100000011 Exceed the limitation of request rate ApiResponse
100000012 Insufficient balance ApiResponse
100000013 No route ApiResponse
100000014 Missing mandatory parameter:%1 ApiResponse
%1 indicates the parameter’s name.

The following table lists result codes and result descriptions which are provided to the third party. These may be
commincated either in the synchronous ApiResponse message, or in the asynchronous ApiResult message.

0 Success

16
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

This is indicated for both ApiResponse and ApiResult messages. An ApiResponse value of 0 indicates
that the request has passed basic validation tests and been passed on to the core system for further
processing. An ApiResult value of 0 means that the requested financial transaction has been completed
successfully.
1 InsufficientFunds

Typically indicates that the primary party does not have enough money to complete the requested
financial transaction. In the case of the B2C API, this means that the business organisation does not have
enough money in its utility account.

This is returned by the ApiResult and represented internally as a transaction reason.

2 LessThanMinimumTransactionValue
3 MoreThanMaximumTransactionValue

Each of these potential failures derive from the rules which govern MPesa financial transactions. In the
case of the B2C API, these are taken from DefaultBusinessUtilityAccount rules, which specify a lower
bound of 10 KE shillings and an upper bound of 70000. For promotion payments and salary payments to
unregistered users, the upper limit is lower: 35000. Likewise, the lower bound for these 2 transactions is
also different: 101 rather than 10.

These are both returned by the ApiResult and represented internally as a transaction reason.

4 WouldExceedDailyTransferLimit
This is a limit on daily activity. For the business organisation, this is very high: 100000000 KE shillings.
It is much more likely that this rule will apply to the customer, where the limit is 140000 KE shillings.
This is returned by the ApiResult and represented internally as a transaction reason.

5 WouldExceedMinimumBalance

This rule is rather confusingly named – it actually means that a transaction would bring the business
organisations utility account bellow the required minimum – which is currently 0.

This is returned by the ApiResult and represented internally as a transaction reason. It is computed during
execution of the financial transaction.

6 UnresolvedPrimaryParty
7 UnresolvedReceiverParty

The primary party or receiver party cannot be associated with an MPesa identity. For transactions (such
as promotion payment and salary payment) which are supported for unregistered users, the unresolved
receiver party rule is not applied.

These are returned in the ApiResult and checked before the linked financial transaction is created.

8 WouldExceedMaximumBalance

For the B2C API, this applies to the recipient MMF customer – the limit here is 100,000 KE shillings.

17
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

This is returned by the ApiResult and represented internally as a transaction reason. It is computed during
execution of the financial transaction.

9 LessThanMinAirtimeValue
10 MoreThanMaxAirtimeValue
Neither of these apply to B2C API operations.

11 DebitAccountInvalid
12 CreditAccountInvalid
13 UnresolvedDebitAccount
14 UnresolvedCreditAccount
These are all existing failure transaction reasons for B2C financial transactions – they would be issued to
the caller in the ApiResult message. The latter 2 in particular are unlikely to occur, as the request would
be rejected by Core API specific checks before the request reached the accounting engine.

15 DuplicateDetected
Currently, any requests which presents an originator conversation id which has been seen before will be
rejected. This rule will need to be reconsidered in contexts which require multi-stage conversations or
multiple Callers. This check (along with the message expiry check) is the first thing done by the
transaction processor when handling an API request. The outcome is reported in the ApiResult message.

16 PayUtilityInvalidAccountNumberFormat
Does not apply to the B2C API operations.

17 InternalFailure
A catch all for failures which are not identified more specifically – this can occur in either the
ApiResponse or ApiResult – although the intent is to replace any such error with a more precise message.

18 InitiatorCredentialCheckFailure
The password check for the initiator failed, either because the presented password is wrong, or something
has gone wrong in the encryption or decryption steps. This is issued in the ApiResult before the creation
of a financial transaction.

19 ApiRequestMessageExpiryFailure
Initiators have the option to specify a request timestamp. If the gap between this value and the time at
which the message is received by the transaction processor is too great, then the request is rejected. The
specific interval is configured separately for each API operation (and indeed, for each API operation
stage). This is the first check performed on an API request arriving at the transaction processor, and as
such is included in the ApiResult message.

20 UnresolvedInitiator

The initiator username presented with the request cannot be found. This is included in the ApiResult.

18
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

21 InitiatorToPrimaryPartyPermissionFailure
The initiator presented does not have the right to issue requests for the specified primary party (as
established during creation of the initiator on the admin web site). The is part of the ApiResult, and
computed prior to issuing a financial transaction.

22 InitiatorStatusCheckFailure
The presented initiator username can be received, but the initiator is not currently active. This fact is
returned in the ApiResult.

23 RequestSchemaValidationError
Incoming API requests are validated against the schema defined in CPSInterface_Request.xsd. This is
part of the ApiResponse message – the details of the validation error are included in the response.

24 MissingRequestParameters
Required input parameters are defined for each type of API operation. If these are missing, then this is
issued in the ApiResult message. The names of the missing parameters are included in the result
parameters field.

25 InvalidRequestParameters
If all required parameters are presented, then validation checks are performed. Specifically, the
parameter is checked to see if it can be converted to the intended type, and then checked against
(optional) configuration regular expression based validation rules. For the B2C API, only the type check
(i.e the amount specified is a valid decimal) is performed. Failures are indicated in the ApiResult
message, with the details included in the result parameters.

26 SystemTooBusy
Included in the ApiResponse message if a traffic blocking condition is in place. See section 5.1 for more
detail.

28 InitiatorAllowedOperationCheckFailure
Upon creation, initiators are assigned permissions for specific API operations – if the operation specified
in the request message is not included in this list, then this ApiResult message is received.

29 InvalidCommand

The command specified in the request is not defined – this is part of the ApiResult.

30 ErrorSerializingRequest

After XML schema validation, the API attempts to convert the XML request into an internal ApiRequest
object – any failures result in this ApiResponse message. The details of the exception are included.

31 InitiatorNotSpecified
The initiator username is not specified, or not specified in a way that can be parsed.

19
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

32 ErrorSerializingRequest
The presented identifier for the initiator is not a username.

33 PrimaryPartyNotSpecified
34 PrimaryPartyIdentifierInvalid
35 ReceiverPartyNotSpecified
36 ReceiverPartyIdentifierInvalid
In all these case, one of the API parties is either missing from the request, or has been presented with the
wrong identifier type., This kind of failure is indicated in the ApiResult message.,

37 MissingApiCommand
No command is included in the request – in general this problem should be captured by the XML schema
validation, but if it is not this ApiResult message is issued.

38 InvalidConversationId
39 UnknownConversationId
Not currently checked for – this will take place for multi-stage conversations.

40 InvalidParameterDefinition

20
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Web Service Interface Definition

4.1 Interface: RequestMgrPortType


4.1.1 Operation: GenericAPIRequest
The 3rd party invokes this operation to send a B2B request

4.1.1.1 Message Header: RequestSOAPHeader


Element name Element type Optional Description
SpId xsd: string No SP ID.
This is the Service Provider Identifier that is allocated by the
Broker to the 3rd party.
[Example] 000201
SpPassword xsd: string Yes This is an encrypted form of the SP password issued to an SP
when an account is created on the Broker.

The encrypted password is a Base64 encoded string of the SHA-


256 hash of the concatenation of the spId, password and the
timeStamp as illustrated below:

Given the following parameters


spId: 601399
password: spPassword
timestamp: 20130702212854

spPassword = BASE64(SHA-256(spId + Password + timeStamp))


e.g.
spPassword = BASE64(SHA-
256(601399spPassword20130702212854)
[Example]
e6434ef249df55c7a21a0b45758a39bb

21
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Element name Element type Optional Description


ServiceId xsd: string Yes Service ID.
This is the Service Identifier that is allocated by the Broker for
every service created.
[Example]
3500001000012
Timestamp xsd: string Yes Time stamp (UTC time).
The value is required during SHA-256 encryption for spPassword.
NOTE
If the spPassword parameter must be set, this parameter is
mandatory.
[Format]
yyyyMMddHHmmss
[Example]
20100731064245

4.1.1.2 Input Message: RequestMsg


Element name Element type Optional Description
RequestMsg xsd: string No Request Message from 3rd party. Its value should be an instance of
Request Type and a CDATA

Note:
1. If there is no configuration for notification URL on Broker side, which indicates the callback url for
accepting notification of GenericAPIResult, the ResultURL parameter inside Identity tag must present.
2. If there is no configuration for notification URL on Broker side, which indicates the callback url for
accepting notification of cached requests expired, the 3rd party must add a key-pair parameter into
ReferenceData and the key is QueueTimeoutURL.

4.1.1.3 Output Message: ResponseMsg


Element name Element type Optional Description
rd
ResponseMsg xsd: string No Response return to 3 party. Its value should be an instance of
Response Type and a CDATA.

22
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

4.2 Interface: ResultMgrPortType


4.2.1 Operation: GenericAPIResult
This operation must be implemented by a Web Service at the 3rd party side if it requires notification of the
final result for B2B request. It will be invoked by Broker to notify the 3rd party once Broker received the
notification from Core API.

4.2.1.1 Input Message: ResultMsg


Element name Element type Optional Description
ResultMsg xsd: string No Request Message from Broker. Its value should be a instance
of Result Type and a CDATA.

4.2.1.2 Output Message: ResponseMsg


Element name Element type Optional Description
ResponseMsg xsd: string No Response return to Broker. Its value should be a instance of
Response Type and a CDATA.

23
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

4.3 Interface: QueueTimeoutNotificationPort


4.3.1 Operation: notifyQueueTimeout
This operation must be implemented by a Web Service at the 3rd party side if it requires notification of
cached requests are expired. It will be invoked by Broker to notify the 3rd party once cached requests are
expired.

4.3.1.1 Input Message: notifyQueueTimeout


Element Element type Optiona Description
name l
OriginatorCo xsd:string originatorConversationID from the request sent by the 3rd party
nversationID
originRequest xsd:string No Original request without SOAP Header sent by 3rd party. Its value
is encoded with base64, when the 3rd party receive the request, it
should decode it.
ExtensionInfo Parameters Yes Extended parameters.

4.3.1.2 Output Message: notifyQueueTimeoutResponse


Element Element type Optional Description
name
Result Result No

Extensio Parameters Yes Extended parameters.


nInfo

4.3.1.3 Response Code


ResponseCode ResponseDesc
000000000 Success
000000001 Failed

24
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

4.4 Interface: QueryTransactionPort


4.4.1 Operation: queryTransaction
The 3rd party invokes this operation to query transaction information..

4.4.1.1 Message Header: RequestSOAPHeader


Element Element type Optional Description
name
SpId xsd: string No SP ID.
It’s allocated by the Broker to the 3rd party.
[Example]
000201
spPassword xsd: string Yes Encrypted authentication password for partners to access the
Broker.
The value is a character string encrypted from spId + Password +
timeStamp by SHA-256. The encryption formula is as follows:
spPassword =BASE64(SHA-256(spId + Password + timeStamp))
In the preceding formula:
 timeStamp: value of timeStamp.
 Password: authentication password for 3rd parties to access the
Broker. The value is allocated by the Broker.
NOTE
The authentication modes include SPID&Password,
SPID&IP&Password, and SPID&IP. When the authentication mode
is SPID&Password or SPID&IP&Password, this parameter is
mandatory.
[Example]
e6434ef249df55c7a21a0b45758a39bb
ServiceId xsd: string Yes Service ID.
The value is allocated by the Broker to the 3rd party.
[Example]
3500001000012

25
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Element Element type Optional Description


name
timeStamp xsd: string Yes Time stamp (UTC time).
The value is required during SHA-256 encryption for spPassword.
NOTE
If the spPassword parameter must be set, this parameter is mandatory.
[Format]
yyyyMMddHHmmss
[Example]
20100731064245

4.4.1.2 Input Message: queryTransaction


Element Element type Optional Description
name
originatorCon xsd:string The unique identifier of the request message generated by third
versationID party. It is used to identify a request between the third party and
MM. Max length is 128
extensionInfo Parameters Yes Extended parameters.

Table 4-1 extensionInfo Description

Parameter Optional Type Description


queryDate Yes String(20) The date of the original conversation.
Format is yyyyMMddHHmmss, for
example: 20131230134412
Note:
If this parameter does not present, it will
cost more time to get the result.

4.4.1.3 Output Message: queryTransactionResponse


Element Element type Optional Description
name
Result Response No
submitApiRe xsd:string[0- Y Requests sent by the 3rd party. Its value is the requests sent by the
questList unbounded] 3rd party with base64 encoded.
submitApiRes xsd:string[0- Y Responses returned from the Broker. Its value is the responses
ponseList unbounded] returned from the Broker with base64 encoded.

26
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Element Element type Optional Description


name
submitApiRes xsd:string[0- Y Results sent to the 3rd party. Its value is the requests sent by the
ultList unbounded] Broker with base64 encoded.
queueTimeOu xsd:string[0- Y QueueTimeout requests sent to the 3rd party. Its value is the
tList unbounded] requests sent by the Broker with base64 encoded.
extensionInfo Parameters Yes Extended parameters.

4.4.1.4 Response Codes


ResponseCode ResponseDesc
000000000 Success
100000001 The system is overload
100000002 Throttling error
100000003 Exceed the limitation of the LICENSE
100000004 Internal Server Error
100000005 Invalid input value:%1
%1 indicates the parameter’s name.
100000006 SP’s status is abnormal
100000007 Authentication failed
100000008 Service’s status is abnormal
100000010 Insufficient permissions
100000014 Missing mandatory parameter:%1
%1 indicates the parameter’s name.

4.5 Interface: Management


4.5.1 Operation: changePassword
The 3rd party invokes this operation to change his password.

Input Message: changePassword


Element Element type Optional Description
name

spId xsd: string No SP ID.


It’s allocated by the SAG to the 3rd party.
[Example]
000201

27
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Element Element type Optional Description


name

spPassword xsd: string Yes Encrypted authentication password for


partners to access the SAG.
The value is a character string encrypted
from spId + Password + timeStamp by
SHA-256. The encryption formula is as
follows: spPassword =BASE64(SHA-
256(spId + Password + timeStamp))
In the preceding formula:
timeStamp: value of timeStamp.
Password: authentication password for
3rd parties to access the SAG. The value
is allocated by the SAG.
NOTE
The authentication modes include
SPID&Password, SPID&IP&Password, and
SPID&IP. When the authentication mode is
SPID&Password or SPID&IP&Password,
this parameter is mandatory.
[Example]
e6434ef249df55c7a21a0b45758a39bb
timeStamp xsd: string Yes Time stamp (UTC time).
The value is required during SHA-256
encryption for spPassword.
NOTE
If the spPassword parameter must be set,
this parameter is mandatory.
[Format]
yyyyMMddHHmmss
[Example]
20100731064245

28
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Element Element type Optional Description


name

newPassword xsd:string No New authentication password for 3rd


parties to access the SAG. It should be
encrypted by AES-256 and encoded with
base64. Shared key and will be allocated
by the SAG.
For example:
New password is !QAZ2wsx,
Security key is AAAabcdefghijklm,
Vector is abcdefghijklmnop
AES(!QAZ2wsx, AAAabcdefghijklm,
abcdefghijklmnop) is
wi2a7BAH0QPd2LRdmcgC9w==
SP should fill
wi2a7BAH0QPd2LRdmcgC9w== as
newPassword
extensionInfo Parameters Yes Extended parameters.

Output Message: changePasswordResponse


Element Element type Optional Description
name

result Result No Result.


extensionInfo Parameters Yes Extended parameters.

Response Code
ResponseCode ResponseDesc
000000000 Success
100000001 The system is overload
100000002 Throttling error
100000003 Exceed the limitation of the LICENSE
100000004 Internal Server Error

29
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

ResponseCode ResponseDesc
100000005 Invalid input value:%1
%1 indicates the parameter’s name.
100000006 SP’s status is abnormal
100000007 Authentication failed
100000014 Missing mandatory parameter:%1
%1 indicates the parameter’s name.

30
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Transaction Types

5.1 Request Party Matrix

31
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Command Types InitiatorLinkedTo Primary Party


Receiver Party
BusinessBuyGoods C2B, B2C, Identity – C2B, Identity - Merchant
Merchant HO and B2C, Merchant HO and Store
Store HO and Store
IdentifierType - 4
IdentifierType - 4
Identifier -
Identifier - ShortCode
ShortCode
BusinessPayBill C2B, B2C, Identity - C2B, Identity - C2B
Merchant HO and B2C, Merchant Business
Store HO and Store
IdentifierType - 4
IdentifierType - 4
Identifier -
Identifier - ShortCode
ShortCode
DisburseFundsToBusiness B2C and C2B Identity –C2B and Identity - C2B,
Business B2C B2C, Merchant
HO and Store
IdentifierType - 4
IdentifierType - 4
Identifier –
ShortCode Identifier -
ShortCode
BusinessToBusinessTransfer C2B, B2C, Identity – C2B, Identity - C2B,
Merchant HO and B2C, Merchant B2C, Merchant
Store, Agency HO HO and Store HO and Store
and store
IdentifierType - 4 IdentifierType - 4
Identifier – Identifier -
ShortCode ShortCode
BusinessTransferFromMMFToUtility C2B, B2C Identity –C2B and Same as Primary
B2C Party
IdentifierType - 4
Identifier –
ShortCode
BusinessTransferFromUtilityToMMF C2B, B2C Identity –C2B and Same as Primary
B2C Party
IdentifierType - 4
Identifier –
ShortCode

32
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

MerchantTransferFromMerchantToWorking Merchant HO and Identity – Merchant Same as Primary


Store HO and Store Party
IdentifierType - 4
Identifier –
ShortCode
MerchantTransferFromWorkingToMerchant Merchant HO and Identity – Merchant Same as Primary
Store HO and Store Party
IdentifierType - 4
Identifier –
ShortCode
MerchantToMerchantTransfer Merchant HO and Identity – Merchant Identity – Merchant
Store (Out of HO and Store HO and Store
hierarchy). The
short code must be IdentifierType - 4 IdentifierType - 4
the Store Identifier – Identifier –
shortCode or HO ShortCode ShortCode
shortcode
MerchantServicesMMFAccountTransfer Merchant HO and Identity – Merchant Identity – Merchant
Store (Within HO and Store HO and Store
Hierachy). The
short code must be IdentifierType - 4 IdentifierType - 4
the Store shortcode Identifier – Identifier –
or HO shortcode ShortCode ShortCode
AgencyFloatAdvance Agency HO and Identity – Agency Identity – Agency
Store HO and Store HO and Store
IdentifierType - 4 IdentifierType - 4
Identifier – Identifier –
ShortCode ShortCode
OrgBankAccountWithdrawal C2B, B2C, Identity – C2B,
Merchant HO and B2C, Merchant Same as Primary
Store HO and Store Party

IdentifierType - 4
Identifier –
ShortCode
OrgRevenueSettlement C2B, B2C, Identity – C2B,
Merchant HO and B2C, Merchant Same as Primary
Store HO and Store Party

IdentifierType - 4

33
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Identifier –
ShortCode
AccountBalance B2C Business,
C2B Business, NA (0) NA(0)
Merchant HO,
MMF Organisation
TransactionStatusQuery B2C Business,
C2B Business, NA (0) NA(0)
Merchant HO,
MMF Organisation

5.2 Business Paybill


Description

This is a transaction type that moves money from Business customer (B2C, C2B, Merchant HO and Merchant Store
organizations) to a C2B organization. The request moves money from the Primary Party’s MMF/WORKING account
to the Receiver party’s Utility account. Primary party will be API Enabled Business Customer and receiver party will
be C2B Business. The initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (Mandatory)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

34
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.

35
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.3 Disburse Funds to Business


Description

This is a transaction type that moves money from B2C and C2B organizations to a Business Customer (B2C, C2B,
Merchant HO and Merchant Store organization). The request moves money from the Primary Party’s Utility account
to the Receiver party’s MMF account. Primary party will be API Enabled Business Customer and receiver party will
be a Business Customer. The initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

36
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

37
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

5.4 Business Buy Goods


Description

This is a transaction type that moves money from Business customer (B2C, C2B, Merchant HO and Merchant Store
organizations) to a Merchant HO or Store. The request moves money from the Primary Party’s MMF/WORKING
account to the Receiver party’s Merchant account. Primary party will be API Enabled Business Customer and receiver
party will be Merchant HO and Store Business. The initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.

38
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.5 BusinessToBusinessTransfer
Description

39
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

This is a transaction type that moves money from an Organization with an MMF/WORKING account (B2C, C2B,
Merchant HO and store and Agency HO and Store) to an organization with an MMF/WORKING account (B2C, C2B,
Merchant HO and store and Agency HO and Store). The organizations should not be in the same Hierarchy. The
request moves money from the Primary Party’s MMF/WORKING account to the Receiver party’s MMF/WORKING
account. Primary party should be API Enabled Business Customer and receiver party will be an Organization. The
initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,

40
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.6 BusinessTransferFromMMFToUtility
Description

This is a transaction type that moves money within an Organization (C2B and B2C). The request moves money from
the organization’s MMF/WORKING account to the organization’s Utility account. The organization should be API
Enabled Business Customer. The initiator would be linked to primary party.

41
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.

42
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Eg. <Key> DebitAccountCurrentBalance </Key>


<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.7 BusinessTransferFromUtilityToMMF
Description

This is a transaction type that moves money within an Organization (C2B and B2C). The request moves money from
the organization’s Utility account to the organization’s MMF/WORKING account. The organization should be API
Enabled Business Customer. The initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

43
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>

44
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.8 MerchantToMerchantTransfer
Description

This is a transaction type that moves money from an Organization with Merchant account (Merchant HO and store) to
an organization with a Merchant account (Merchant HO and store). The organizations should not be in the same
Hierarchy. The request moves money from the Primary Party’s Merchant account to the Receiver party’s Merchant
account. Primary party should be API Enabled Business Customer and receiver party will be an Organization. The
initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.

45
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>

46
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Public name of the Credit Party.


ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.9 MerchantTransferFromMerchantToWorking
Description

This is a transaction type that moves money within an Organization (Merchant HO and Store). The request moves
money from the organization’s Merchant account to the organization’s MMF/WORKING account. The organization
should be API Enabled Business Customer. The initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID

47
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Third party conversation id


OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。

48
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.10 MerchantTransferFromWorkingToMerchant
Description

This is a transaction type that moves money within an Organization (Merchant HO and Store). The request moves
money from the organization’s MMF/WORKING account to the organization’s Merchant account. The organization
should be API Enabled Business Customer. The initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount

49
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

50
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

5.11 OrgBankAccountWithdrawal
Description

This is a transaction type that moves money from an Organization (C2B, B2C, Agency and Merchant) to the Bank.
The request removes e-value from the MMF/Working account to the SP holding account. The organization should be
API Enabled Business Customer. The initiator would be linked to primary party.

Input Parameters

Amount decimal Value to be transferred

HeadOffice String Optional

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。

51
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.12 OrgRevenueSettlement
Description

This is a transaction type that moves money within an Organization (C2B and Merchant). The request settles the
charges accrued and moves the rest of the money to the MMF/Working account. The organization should be API
Enabled Business Customer. The initiator would be linked to primary party.

Input Parameters

HeadOffice String Optional

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

FundsMovement Decimal Describes the Fund movement.


Eg. <Key>FundsMovement</Key>

52
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<Value>Merchant Account|Organization Settlement


Account|KES|0.00&Organization Settlement Account|Charges
Paid Account|KES|0.00&Working Account|Organization
Settlement Account|KES|0.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

AccountBalanceAfterSettlement Decimal Amount of money in the organization.


Eg. <Key>AccountBalanceAfterSettlement</Key>
<Value>Working Account|KES|56.03|56.03|0.00|0.00&Utility
Account|KES|0.00|0.00|0.00|0.00&Charges Paid
Account|KES|0.00|0.00|0.00|0.00&Merchant
Account|KES|0.00|0.00|0.00|0.00&Organization Settlement
Account|KES|0.00|0.00|0.00|0.00</Value>

SettlementPlanID Decimal This field gives the settlementID.


Eg. <Key>SettlementPlanID</Key>
<Value>172110</Value>

5.13 MerchantServicesMMFAccountTransfer
Description

This is a transaction type that moves money from an Organization with Merchant account (Merchant HO and store) to
an organization with a Merchant account (Merchant HO and store). The organizations should be in the same
Hierarchy. The request moves money from the Primary Party’s Merchant account to the Receiver party’s Merchant
account. Primary party should be API Enabled Business Customer and receiver party will be an Organization. The
initiator would be linked to primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

53
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String
Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

54
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>
<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.14 AgencyFloatAdvance
Description

This is a transaction type that moves money from an Organization with a Float account (Agency HO and store) to an
organization with a Float account (Agency HO and store). The organizations should not be in the same Hierarchy. The
request moves money from the Primary Party’s Float account to the Receiver party’s Float account. Primary party
should be API Enabled Business Customer and receiver party will be an Organization. The initiator would be linked to
primary party.

Input Parameters

Amount Decimal

AccountReference String The third party account reference. (optional)

Output Parameters

ResultType ResultType It describes the state of the request, for single staged it would be
only completed.
Result code
ResultCode String

55
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Result description
ResultDesc String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

TransactionId String It takes the financial transaction unique receipt number.

ResultParameters

Amount Decimal The transactional Amount


Eg. <Key>Amount</Key><Value>7000.00</Value>

TransCompletedTime DateTime The date time when the transaction was completed.
Eg. <Key>TransCompletedTime</Key>
<Value>20150424170252</Value>

InitiatorAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key>InitiatorAccountCurrentBalance</Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

DebitPartyCharges Decimal

DebitAccountCurrentBalance Decimal Amount of money in the initiating organization.


Eg. <Key> DebitAccountCurrentBalance </Key>
<Value>{Amount={BasicAmount=2714803.00,
MinimumAmount=271480300, CurrencyCode=KES}}</Value>

Currency Currency used.


String
Eg. <Key>Currency</Key>
<Value>KES</Value>

DebitPartyPublicName Public name of the Debit Party.


String
Format: <Short Code>-<Organization Name>
Public name of the Credit Party.
ReceiverPartyPublicName String
Eg. <Key>ReceiverPartyPublicName</Key>

56
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<Value>888888 - KPLC TEST</Value>.

DebitPartyAffectedAccountBalance String Indicates the account balance of all the affected accounts of debit
party。
For each account, the fields are presented in the following order
and separated by vertical bars (|):
amp; is used as the separator of different accounts.
Eg. <Key>DebitPartyAffectedAccountBalance</Key>
<Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value>

5.15 Balance Query from the Business Customer

Description

This is a new request to check a Balance for the associated Business Customer. In case the initiator is associated
to the Merchant HO, it can request a balance query of merchant store within the hierarchy. No financial
transaction would be created. It will just respond back with the balance within the account at the time of request.

Input Parameters

ShortCode Integer The short code associated to the


business or store.

OrgShortCodeList String List of short code of the organizations


whose balances need to be checked.
Each short code must be delimited by ;
The total number of short codes in the
list must not exceed the Maximum
configured in the system.(Optional)

AccountType String The account type alias in the M-Pesa


system for querying balance.
If this parameter is absent, the balance
of all accounts will be returned in the
Result. (Optional)

57
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Output Parameters

ResultType ResultType It describes the state of the request, for


single staged it would be only
completed.
Response code
ResultCode String
Response description
ResultDescription String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

ResultParameters

ShortCode String The organisation short code for which


the balance request is performed

OrganisationName String The organisation name associated to


the short code.

Account Balance SetTime DateTime The date time when the balance was
last updated.

Account Number String The M-Pesa generated account


number which can be viewed on the
identity page.

Working Account Available Funds Decimal Mmf account available balance.

Working Account Uncleared Funds Decimal Mmf account uncleared balance.

Working Account Reserved Funds Decimal Mmf account reserved balance.

Charges Paid Account Available Funds Decimal Charge paid account available balance

Charges Paid Account Uncleared Decimal Charge paid account uncleared


Funds balance

Charges Paid Account Reserved Funds Decimal Charge paid account reserved balance

58
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Utility Account Available Funds Decimal Utility account available balance

Utility Account Uncleared Funds Decimal Utility account uncleared balance

Utility Account Reserved Funds Decimal Utility account reserved balance

BOCompletedTime The data time when the business


String operation was completed, as recorded
in the M-Pesa system.
Format: YYYYMMDDhhmmss
AccountBalance String Indicates the accounts balance of
organizations to be queried.
For each account, the fields are
presented in the following order and
separated by vertical bars (|):
Format: <Account Type
Alias>|<Currency>|<Current
Balance>|<Available
Balance>|<Reserved
Balance>|<Unclear Balance>
&amp; is used as the separator of
different accounts.
For each organization, a short code
will be added before the accounts,
separated by vertical bars (|):
Format: <Shot Code> |<Account 1
Balance>| <Account 2 Balance>|…
#; is used as the separator of a
different organization
In case, when failed to query one of
the organization, such as:
 No organization is found by the
organization short code
 This organization is not a sub-
organization of the initiator
The system will return:
Format: <Shot Code> |Failed

59
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

5.16 Transaction Status Query


Description

It is a new request to make a transaction status inquiry. All the initiator or caller can perform this request to
check the transaction status of the already performed request.

Input Parameters

OriginatorConversationID String Pass one of these parameter to search for the


transaction. In case the transaction is older than
15 days use only ReceiptNumber to search for
the transaction status. It wont return any result
in case OriginatorConversationID or
ConversationID is used.

ConversationID String Pass one of these parameter to search for the


transaction. In case the transaction is older than
15 days use only ReceiptNumber to search for
the transaction status. It wont return any result
in case OriginatorConversationID or
ConversationID is used.

ReceiptNumber String Pass one of these parameter to search for the


transaction. In case the transaction is older than
15 days use only ReceiptNumber to search for
the transaction status. It wont return any result
in case OriginatorConversationID or
ConversationID is used.

Output Parameters

ResultType ResultType It mentions the state of the transaction. If


successfully done it would say Completed
Response code
ResultCode string
Response description
ResultDescription String
M-Pesa conversation id
ConversationId GUID
Third party conversation id
OriginatorConversationId String

60
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

ResultParameters

InitiatedTime Datetime Transaction initiated Time.

FinalisedTime Datetime Transaction Finalised Time

TransactionType String Transaction type associated to the receipt


number

ReceiptNo String Transaction ReceiptNo

TransactionStatus String Transaction status outcome

TransactionReason String Transaction reason in case of decline

DebitPartyName String Debit party identity name

CreditPartyName String Credit party identity name

DebitAccountType String Debit party account type

DebitAccountBalance Decimal Debit party account balance

ReasonType String

Originator Conversation ID String

Conversation ID String

Amount String

DebitPartyCharges String

CreditPartyCharges String

61
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

Example

6.1 B2B Transactions


This scenario will apply for all the typical B2B transactions described. They include;
 BusinessBuyGoods
 BusinessPayBill
 DisburseFundsToBusiness
 BusinessToBusinessTransfer
 BusinessTransferFromMMFToUtility
 BusinessTransferFromUtilityToMMF
 MerchantToMerchantTransfer
 MerchantTransferFromMerchantToWorking
 MerchantTransferFromWorkingToMerchant
 MerchantServicesMMFAccountTransfer
 AgencyFloatAdvance

6.1.1 GenericApiRequest
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>898989</tns:spId>

<tns:spPassword>REQ5OEM1Njc0RTI5ODMwQkJDNzg1OTE5OEYzRTZDNDJGRjgwOTgyQzg2Qzk3Q0QwRTRDOT
c5QkIyRTZGRTlEQg==</tns:spPassword>

<tns:timeStamp>20140223113340</tns:timeStamp>

<tns:serviceId>898989000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns="http://api-


v1.gen.mm.vodafone.com/mminterface/request">

<Transaction>

<CommandID>BusinessPayBill</CommandID>

62
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<LanguageCode></LanguageCode>

<OriginatorConversationID>CV3-844355122-244w1a-ggz</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters>

<Parameter>

<Key>Amount</Key>

<Value>-7000</Value>

</Parameter>

<Parameter>

<Key>AccountReference</Key>

<Value>7000</Value>

</Parameter>

</Parameters>

<ReferenceData>

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-30T11:03:19.111+03:00</Timestamp>

</Transaction>

<Identity>

<Caller>

<CallerType>2</CallerType>

<ThirdPartyID>broker_4</ThirdPartyID>

<Password> +JDzEIAwG4IJx98dh5C4AOA==</Password>

<CheckSum>null</CheckSum>

<ResultURL>http://10.66.50.133:8097/</ResultURL>

</Caller>

<Initiator>

63
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<IdentifierType>11</IdentifierType>

<Identifier>simulator</Identifier>

<SecurityCredential>pnrgp7djZmWBKdLDzLkdeUrFyzfQULTc+ezg+i/TcgYVCYBB9C4MalfdBidZaEagZYWMFjqC0CjL
QWLrd602zhtt1kRtuxQUQHAqEem6z8uEZxcbGhYyQsNbo+3RKq8dC5IC7ITPg61LkaehLnyOx2CbA2/jkQG8JMOIjggl
1np+7wtbBWZ7yr5cLfkbrYvIppkUprvQ+QA8VJnlbFxmvBTdTFkKVVLFlmxeErsv5pyEseOlJFLocHuVmxyaXvM3aY1UA
5GQzBqxC0S51yNZwxFJHyzkETUE7S+tJjfBwAChy0oVn6ChfAZH6MhGjp8wf5aA==</SecurityCredential>

<ShortCode>992708</ShortCode>

</Initiator>

<PrimaryParty>

<IdentifierType>4</IdentifierType>

<Identifier>992708</Identifier>

<ShortCode></ShortCode>

</PrimaryParty>

<ReceiverParty>

<IdentifierType>4</IdentifierType>

<Identifier>376850</Identifier>

<ShortCode></ShortCode>

</ReceiverParty>

<AccessDevice>

<IdentifierType>4</IdentifierType>

<Identifier>1</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

</request>]]></req:RequestMsg>

</soapenv:Body>

</soapenv:Envelope>

6.1.2 GenericApiResponse
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

64
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<req:ResponseMsg xmlns:req="http://api-v1.gen.mm.vodafone.com/mminterface/request"><![CDATA[<?xml version="1.0"


encoding="UTF-8"?><response xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/response"><ResponseCode>0</ResponseCode><ConversationID>AG_20150424_0000626ec4a
eb2ca2256</ConversationID><ResponseDesc>Accept the service request
successfully.</ResponseDesc><OriginatorConversationID>CV3-844355122-244w1a-
ggz</OriginatorConversationID><ServiceStatus>0</ServiceStatus></response>]]></req:ResponseMsg>

</soapenv:Body>

</soapenv:Envelope>

6.1.3 GenericAPiResult

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<res:ResultMsg xmlns:res="http://api-v1.gen.mm.vodafone.com/mminterface/result"><![CDATA[<?xml version="1.0"


encoding="UTF-8"?><Result xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/result"><ResultType>0</ResultType><ResultCode>0</ResultCode><ResultDesc>Accept the
service request successfully.</ResultDesc><OriginatorConversationID>CV3-844111355122-244w1a-
ggz</OriginatorConversationID><ConversationID>AG_20150424_0000643cae726da52ba8</ConversationID><TransactionID>JDO71LM
99</TransactionID><ResultParameters><ResultParameter><Key>InitiatorAccountCurrentBalance</Key><Value>{Amount={BasicAmount
=2714803.00, MinimumAmount=271480300,
CurrencyCode=KES}}</Value></ResultParameter><ResultParameter><Key>DebitAccountCurrentBalance</Key><Value>{Amount={Basic
Amount=2714803.00, MinimumAmount=271480300,
CurrencyCode=KES}}</Value></ResultParameter><ResultParameter><Key>Amount</Key><Value>7000.00</Value></ResultParameter>
<ResultParameter><Key>DebitPartyAffectedAccountBalance</Key><Value>MMF Organization
Account|KES|2714803.00|2714803.00|0.00|50000000.00</Value></ResultParameter><ResultParameter><Key>TransCompletedTime</K
ey><Value>20150424170252</Value></ResultParameter><ResultParameter><Key>DebitPartyCharges</Key><Value></Value></ResultP
arameter><ResultParameter><Key>ReceiverPartyPublicName</Key><Value>888888 - KPLC
TEST</Value></ResultParameter><ResultParameter><Key>CreditPartyAffectedAccountBalance</Key><Value>Utility
Account|KES|11000.00|11000.00|0.00|0.00&Charges Paid Account|KES|-385.00|-
385.00|0.00|0.00</Value></ResultParameter><ResultParameter><Key>CreditAccountCurrentBalance</Key><Value>{Amount={BasicAmo
unt=11000.00, MinimumAmount=1100000,
CurrencyCode=KES}}</Value></ResultParameter><ResultParameter><Key>Currency</Key><Value>KES</Value></ResultParameter></
ResultParameters><ReferenceData><ReferenceItem><Key>BillReferenceNumber</Key><Value>7000</Value></ReferenceItem><Refere
nceItem><Key>QueueTimeoutURL</Key><Value>http://10.66.49.201:</Value></ReferenceItem></ReferenceData></Result>]]></res:Res
ultMsg>

</soapenv:Body>

</soapenv:Envelope>

65
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

6.2 OrgRevenueSettlement
6.2.1 GenericApiRequest
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>898989</tns:spId>

<tns:spPassword>REQ5OEM1Njc0RTI5ODMwQkJDNzg1OTE5OEYzRTZDNDJGRjgwOTgyQzg2Qzk3Q0QwRTRDOT
c5QkIyRTZGRTlEQg==</tns:spPassword>

<tns:timeStamp>20140223113340</tns:timeStamp>

<tns:serviceId>898989000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns="http://api-


v1.gen.mm.vodafone.com/mminterface/request">

<Transaction>

<CommandID>OrgRevenueSettlement</CommandID>

<LanguageCode></LanguageCode>

<OriginatorConversationID>11135511223-244w1a-ggz</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters>

<Parameter>

<Key>HeadOffice</Key>

<Value></Value>

</Parameter>

</Parameters>

66
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<ReferenceData>

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-30T11:03:19.111+03:00</Timestamp>

</Transaction>

<Identity>

<Caller>

<CallerType>2</CallerType>

<ThirdPartyID>broker_4</ThirdPartyID>

<Password> +JDzEIAwG4IJx98dh5C4AOA==</Password>

<CheckSum>null</CheckSum>

<ResultURL>http://10.66.50.133:8097/</ResultURL>

</Caller>

<Initiator>

<IdentifierType>11</IdentifierType>

<Identifier>simulator</Identifier>

<SecurityCredential>pnrgp7djZmWBKdLDzLkdeUrFyzfQULTc+ezg+i/TcgYVCYBB9C4MalfdBidZaEagZYWMFjqC0CjL
QWLrd602zhtt1kRtuxkQ76rHf5s17jq4FXtmQUQHAqEem6z8uEZxcbGhYyQsNbo+3RKq8dC5IC7ITPg61LkaehLnyOx2
CbA2/jkQG8JMOIjggl1np+7wtbBWZ7yr5cLfkbrYvIppkUprvQ+QA8VJnlbFxmvBTdTFkKVVLFlmxeErsv5pyEseOlJFLocH
uVmxyaXvM3aY1UA5GQzBqxC0S51yNZwxFJHyzkETUE7S+tJjfBwAChy0oVn6ChfAZH6MhGjp8wf5aA==</SecurityCr
edential>

<ShortCode>797900</ShortCode>

</Initiator>

<PrimaryParty>

<IdentifierType>4</IdentifierType>

<Identifier>797900</Identifier>

<ShortCode></ShortCode>

</PrimaryParty>

67
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<ReceiverParty>

<IdentifierType>4</IdentifierType>

<Identifier>797900</Identifier>

<ShortCode></ShortCode>

</ReceiverParty>

<AccessDevice>

<IdentifierType>4</IdentifierType>

<Identifier>1</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

</request>]]></req:RequestMsg>

</soapenv:Body>

</soapenv:Envelope>

6.2.2 GenericApiResponse
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<req:ResponseMsg xmlns:req="http://api-v1.gen.mm.vodafone.com/mminterface/request"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?><response xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/response"><ResponseCode>0</ResponseCode><ConversationID>AG_20150
424_00005422d2042748a855</ConversationID><ResponseDesc>Accept the service request
successfully.</ResponseDesc><OriginatorConversationID>11135511223-244w1a-
ggz</OriginatorConversationID><ServiceStatus>0</ServiceStatus></response>]]></req:ResponseMsg>

</soapenv:Body>

</soapenv:Envelope>

6.2.3 GenericAPiResult
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<res:ResultMsg xmlns:res="http://api-v1.gen.mm.vodafone.com/mminterface/result"><![CDATA[<?xml version="1.0"


encoding="UTF-8"?><Result xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/result"><ResultType>0</ResultType><ResultCode>0</ResultCode><ResultDe
sc>Accept the service request successfully.</ResultDesc><OriginatorConversationID>11135511223-244w1a-
ggz</OriginatorConversationID><ConversationID>AG_20150424_00005422d2042748a855</ConversationID><Transa

68
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

ctionID>JDOJ1LNTP</TransactionID><ResultParameters><ResultParameter><Key>FundsMovement</Key><Value>M
erchant Account|Organization Settlement Account|KES|0.00&Organization Settlement Account|Charges Paid
Account|KES|0.00&Working Account|Organization Settlement
Account|KES|0.00</Value></ResultParameter><ResultParameter><Key>AccountBalanceAfterSettlement</Key><Valu
e>Working Account|KES|56.03|56.03|0.00|0.00&Utility Account|KES|0.00|0.00|0.00|0.00&Charges Paid
Account|KES|0.00|0.00|0.00|0.00&Merchant Account|KES|0.00|0.00|0.00|0.00&Organization Settlement
Account|KES|0.00|0.00|0.00|0.00</Value></ResultParameter><ResultParameter><Key>BOCompletedTime</Key><Val
ue>20150424183949</Value></ResultParameter><ResultParameter><Key>SettlementPlanID</Key><Value>172110</
Value></ResultParameter></ResultParameters><ReferenceData><ReferenceItem><Key>QueueTimeoutURL</Key><
Value>http://10.66.49.201:</Value></ReferenceItem></ReferenceData></Result>]]></res:ResultMsg>

</soapenv:Body>

</soapenv:Envelope>

6.3 OrgBankAccountWithdrawal
6.3.1 GenericApiRequest
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>898989</tns:spId>

<tns:spPassword>REQ5OEM1Njc0RTI5ODMwQkJDNzg1OTE5OEYzRTZDNDJGRjgwOTgyQzg2Qzk3Q0QwRTRDOT
c5QkIyRTZGRTlEQg==</tns:spPassword>

<tns:timeStamp>20140223113340</tns:timeStamp>

<tns:serviceId>898989000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns="http://api-


v1.gen.mm.vodafone.com/mminterface/request">

<Transaction>

<CommandID>OrgBankAccountWithdrawal</CommandID>

<LanguageCode></LanguageCode>

69
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<OriginatorConversationID>CV3-84122752721313411355122-244w1a-ggz</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters>

<Parameter>

<Key>HeadOffice</Key>

<Value></Value>

</Parameter>

<Parameter>

<Key>Amount</Key>

<Value>35000</Value>

</Parameter>

</Parameters>

<ReferenceData>

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-30T11:03:19.111+03:00</Timestamp>

</Transaction>

<Identity>

<Caller>

<CallerType>2</CallerType>

<ThirdPartyID>broker_4</ThirdPartyID>

<Password> dh5C4AOA==</Password>

<CheckSum>null</CheckSum>

<ResultURL>http://10.66.50.133:8097/</ResultURL>

70
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

</Caller>

<Initiator>

<IdentifierType>11</IdentifierType>

<Identifier>simulator</Identifier>

<SecurityCredential>pnrgp7djZmWBKdLDzLkdeUrFyzfQULTc+ezg+i/TcgYVCYBB9C4MalfdBidZaEagZYWMFjqC0CjL
QWLrd602zhtt1kRtuxkQ76rHf5s17jq4FXtmQUQHAqEem6z8uEZxcbGhYyQsNbo+3RKq8dC5IC7ITPg61LkaehLnyOx2
CbA2/jkQG8JMOIjggl1np+7wtbBWZ7yr5cLfkbrYvIppkUprvQ+QA8VJnlbFxmvBTdTFkKVVLFlmxeErsv5pyEseOlJFLocH
uVmxyaXvM3aY1UA5GQzBqxC0S51yNZwxFJHyzkETUE7S+tJjfBwAChy0oVn6ChfAZH6MhGjp8wf5aA==</SecurityCr
edential>

<ShortCode>888888</ShortCode>

</Initiator>

<PrimaryParty>

<IdentifierType>4</IdentifierType>

<Identifier>888888</Identifier>

<ShortCode></ShortCode>

</PrimaryParty>

<AccessDevice>

<IdentifierType>4</IdentifierType>

<Identifier>1</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

</request>]]></req:RequestMsg>

</soapenv:Body>

6.3.2 GenericApiResponse
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<req:ResponseMsg xmlns:req="http://api-v1.gen.mm.vodafone.com/mminterface/request"><![CDATA[<?xml
version="1.0" encoding="UTF-8"?><response xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/response"><ResponseCode>0</ResponseCode><ConversationID>AG_20150

71
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

424_000079089ed6afaef43e</ConversationID><ResponseDesc>Accept the service request


successfully.</ResponseDesc><OriginatorConversationID>CV3-84122752721313411355122-244w1a-
ggz</OriginatorConversationID><ServiceStatus>0</ServiceStatus></response>]]></req:ResponseMsg>

</soapenv:Body>

</soapenv:Envelope>

6.3.3 GenericAPiResult
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Body>

<res:ResultMsg xmlns:res="http://api-v1.gen.mm.vodafone.com/mminterface/result"><![CDATA[<?xml version="1.0"


encoding="UTF-8"?><Result xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/result"><ResultType>0</ResultType><ResultCode>0</ResultCode><ResultDe
sc>Accept the service request successfully.</ResultDesc><OriginatorConversationID>CV3-
84122752721313411355122-244w1a-
ggz</OriginatorConversationID><ConversationID>AG_20150424_000079089ed6afaef43e</ConversationID><Transact
ionID>JDO61LLIU</TransactionID><ResultParameters><ResultParameter><Key>Amount</Key><Value>35000</Valu
e></ResultParameter><ResultParameter><Key>DebitPartyCharges</Key><Value></Value></ResultParameter><Resu
ltParameter><Key>TransCompletedTime</Key><Value>20150424191131</Value></ResultParameter><ResultParamet
er><Key>DebitPartyAffectedAccountBalance</Key><Value>Working
Account|KES|140000.00|140000.00|0.00|0.00</Value></ResultParameter></ResultParameters><ReferenceData><Ref
erenceItem><Key>QueueTimeoutURL</Key><Value>http://10.66.49.201:</Value></ReferenceItem></ReferenceData>
</Result>]]></res:ResultMsg>

</soapenv:Body>

</soapenv:Envelope>

6.4 TransactionStatusQuery
6.4.1 GenericApiRequest
ReceiptNumber
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>151815</tns:spId>

72
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<tns:spPassword>ODExNERCMDlCNjVDRkYxQUFCNzE5MkE1OEQyMjJDMzk1RUFCNzgwMjk2ODE4Rjk1OTE2MEFGNDU1QkRCMD
kyMg==</tns:spPassword>

<tns:timeStamp>20140730093620</tns:timeStamp>

<tns:serviceId>151815000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns=”http://api-


v1.gen.mm.vodafone.com/mminterface/request”>

<Transaction>

<CommandID>TransactionStatusQuery</CommandID>

<LanguageCode>0</LanguageCode>

<OriginatorConversationID>R9I1-7894-7895-4125-770</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters><Parameter>

<Key>ReceiptNumber</Key>

<Value>X-IL144</Value>

</Parameter>

</Parameters>

<ReferenceData>

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:8989/</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-27T12:53:19.0000521Z</Timestamp>

</Transaction>

<Identity>

<Caller>

73
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<CallerType>2</CallerType>

<ThirdPartyID>898940</ThirdPartyID>

<Password>Password0</Password>

<CheckSum>CheckSum0</CheckSum>

<ResultURL>http://10.66.49.201:8096/</ResultURL>

</Caller>

<Initiator>

<IdentifierType>11</IdentifierType>

<Identifier>c2bib</Identifier>

<SecurityCredential>bJJbCA4QT/W7pVT9g+3dctjQIFU2ojSUVeqz5YUB+uUp66D9UhjjZshXJy+9mDeSpRnEQbs6H8wGrhh23AVuP2
/cyDqE6xfhaShW3KdtVt+AquatUaBfLb6SPgN9egkUkn4hsXWk+nhfY7RsmdMKy4IRBYTijMuePe6yGw17keEjZOL4+k4nWa1jVvRpPI6uA
FJSY33pIxuLh2Tx+kArg5I4B4JQKOiw2m7CPnVU0jhvq8xsGarOIn2COCjEt3G/Br0WpnrK71+HzvhABh9U8lnN25EvU7rjATzLwlF8MgVv+k
u2HDS62x0ZmTKUXH1srsSBaKEjiThccFrfXTEkFQ==</SecurityCredential>

<ShortCode>898940</ShortCode>

</Initiator>

<PrimaryParty>

<IdentifierType>4</IdentifierType>

<Identifier>898940</Identifier>

<ShortCode></ShortCode>

</PrimaryParty>

<ReceiverParty>

<IdentifierType>4</IdentifierType>

<Identifier>898940</Identifier>

<ShortCode></ShortCode>

</ReceiverParty>

<AccessDevice>

<IdentifierType>1</IdentifierType>

<Identifier>Identifier3</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

74
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

</request>]]></req:RequestMsg>

</soapenv:Body>

</soapenv:Envelope>

OriginatorConversationID
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>151815</tns:spId>

<tns:spPassword>ODExNERCMDlCNjVDRkYxQUFCNzE5MkE1OEQyMjJDMzk1RUFCNzgwMjk2ODE4Rjk1OTE2MEFGNDU1QkRCMD
kyMg==</tns:spPassword>

<tns:timeStamp>20140730093620</tns:timeStamp>

<tns:serviceId>151815000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns='http://api-


v1.gen.mm.vodafone.com/mminterface/request'>

<Transaction>

<CommandID>TransactionStatusQuery</CommandID>

<LanguageCode>0</LanguageCode>

<OriginatorConversationID>R9I1-7894-7895-4125-771</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters><Parameter>

<Key>OriginatorConversationID</Key>

<Value>R9I1-7894-7895-4125-768</Value>

</Parameter>

</Parameters>

75
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<ReferenceData>

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:8989/</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-27T12:53:19.0000521Z</Timestamp>

</Transaction>

<Identity>

<Caller>

<CallerType>2</CallerType>

<ThirdPartyID>898940</ThirdPartyID>

<Password>Password0</Password>

<CheckSum>CheckSum0</CheckSum>

<ResultURL>http://10.66.49.201:8096/</ResultURL>

</Caller>

<Initiator>

<IdentifierType>11</IdentifierType>

<Identifier>c2bib</Identifier>

<SecurityCredential>bJJbCA4QT/W7pVT9g+3dctjQIFU2ojSUVeqz5YUB+uUp66D9UhjjZshXJy+9mDeSpRnEQbs6H8wGrhh23AVuP2
/cyDqE6xfhaShW3KdtVt+AquatUaBfLb6SPgN9egkUkn4hsXWk+nhfY7RsmdMKy4IRBYTijMuePe6yGw17keEjZOL4+k4nWa1jVvRpPI6uA
FJSY33pIxuLh2Tx+kArg5I4B4JQKOiw2m7CPnVU0jhvq8xsGarOIn2COCjEt3G/Br0WpnrK71+HzvhABh9U8lnN25EvU7rjATzLwlF8MgVv+k
u2HDS62x0ZmTKUXH1srsSBaKEjiThccFrfXTEkFQ==</SecurityCredential>

<ShortCode>898940</ShortCode>

</Initiator>

<PrimaryParty>

<IdentifierType>4</IdentifierType>

<Identifier>898940</Identifier>

<ShortCode></ShortCode>

</PrimaryParty>

<ReceiverParty>

76
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<IdentifierType>4</IdentifierType>

<Identifier>898940</Identifier>

<ShortCode></ShortCode>

</ReceiverParty>

<AccessDevice>

<IdentifierType>1</IdentifierType>

<Identifier>Identifier3</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

</request>]]></req:RequestMsg>

</soapenv:Body>

</soapenv:Envelope>

ConversationID
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>151515</tns:spId>

<tns:spPassword>ODExNERCMDlCNjVDRkYxQUFCNzE5MkE1OEQyMjJDMzk1RUFCNzgwMjk2ODE4Rjk1OTE2MEFGNDU1QkRCMD
kyMg==</tns:spPassword>

<tns:timeStamp>20140730093620</tns:timeStamp>

<tns:serviceId>151515000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns='http://api-


v1.gen.mm.vodafone.com/mminterface/request'>

<Transaction>

<CommandID>TransactionStatusQuery</CommandID>

<LanguageCode>0</LanguageCode>

77
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<OriginatorConversationID>R9I1-7894-7895-4125-772</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters><Parameter>

<Key>ConversationID</Key>

<Value>e2b2b4db-62a0-457f-927c-9b442f65bb15</Value>

</Parameter>

</Parameters>

<ReferenceData>

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:8989/</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-27T12:53:19.0000521Z</Timestamp>

</Transaction>

<Identity>

<Caller>

<CallerType>2</CallerType>

<ThirdPartyID>898940</ThirdPartyID>

<Password>Password0</Password>

<CheckSum>CheckSum0</CheckSum>

<ResultURL>http://10.66.49.201:8096/</ResultURL>

</Caller>

<Initiator>

<IdentifierType>11</IdentifierType>

<Identifier>c2bib</Identifier>

<SecurityCredential>bJJbCA4QT/W7pVT9g+3dctjQIFU2ojSUVeqz5YUB+uUp66D9UhjjZshXJy+9mDeSpRnEQbs6H8wGrhh23AVuP2
/cyDqE6xfhaShW3KdtVt+AquatUaBfLb6SPgN9egkUkn4hsXWk+nhfY7RsmdMKy4IRBYTijMuePe6yGw17keEjZOL4+k4nWa1jVvRpPI6uA

78
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

FJSY33pIxuLh2Tx+kArg5I4B4JQKOiw2m7CPnVU0jhvq8xsGarOIn2COCjEt3G/Br0WpnrK71+HzvhABh9U8lnN25EvU7rjATzLwlF8MgVv+k
u2HDS62x0ZmTKUXH1srsSBaKEjiThccFrfXTEkFQ==</SecurityCredential>

<ShortCode>898940</ShortCode>

</Initiator>

<PrimaryParty>

<IdentifierType>4</IdentifierType>

<Identifier>898940</Identifier>

<ShortCode></ShortCode>

</PrimaryParty>

<ReceiverParty>

<IdentifierType>4</IdentifierType>

<Identifier>898940</Identifier>

<ShortCode></ShortCode>

</ReceiverParty>

<AccessDevice>

<IdentifierType>1</IdentifierType>

<Identifier>Identifier3</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

</request>]]></req:RequestMsg>

</soapenv:Body>

</soapenv:Envelope>

6.4.2 GenericApiResponse
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<ResponseMsg xmlns="http://api-v1.gen.mm.vodafone.com/mminterface/request"><![CDATA[<Response
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/response"><ResponseCode>0</ResponseCode><ConversationID>33922665-4506-40c5-9a8d-
4b1508ab6a81</ConversationID><OriginatorConversationID>R9I1-7894-7895-4125-
770</OriginatorConversationID><ServiceStatus>0</ServiceStatus></Response>]]></ResponseMsg>

</s:Body>

79
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

</s:Envelope>

6.4.3 GenericAPiResult
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<ResultMsg xmlns="http://api-v1.gen.mm.vodafone.com/mminterface/result"><![CDATA[<Result
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/result"><ResultType>Completed</ResultType><ResultCode>0</ResultCode><ResultDesc>Succe
ss</ResultDesc><OriginatorConversationID>R9I1-7894-7895-4125-770</OriginatorConversationID><ConversationID>33922665-4506-
40c5-9a8d-4b1508ab6a81</ConversationID><ResultParameters><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">InitiatedTime</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">26/08/2014 23:05:33</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">FinalisedTime</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">26/08/2014 23:05:33</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">TransactionType</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Business Pay Bill</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">ReceiptNo</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">X-IL144</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">TransactionStatus</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Completed</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">TransactionReason</Key><Value i:nil="true" xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request" /></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">DebitPartyName</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">898940 - Test2b</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">CreditPartyName</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">898940 - Test2b</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">DebitAccountType</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">MMF Account</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">DebitAccountBalance</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">14880.0000</Value></Parameter></ResultParameters><ReferenceData><ReferenceIte
m><Key xmlns="http://api-v1.gen.mm.vodafone.com/mminterface/request">QueueTimeoutURL</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">http://10.66.49.201:8989/</Value></ReferenceItem></ReferenceData></Result>]]></Res
ultMsg>

</s:Body>

</s:Envelope>

80
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

6.5 Balance Check


6.5.1 GenericApiRequest
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header>

<tns:RequestSOAPHeader xmlns:tns="http://www.huawei.com/schema/osg/common/v2_1">

<tns:spId>151815</tns:spId>

<tns:spPassword>ODExNERCMDlCNjVDRkYxQUFCNzE5MkE1OEQyMjJDMzk1RUFCNzgwMjk2ODE4Rjk1OTE2MEFGNDU1QkRCMD
kyMg==</tns:spPassword>

<tns:timeStamp>20140730093620</tns:timeStamp>

<tns:serviceId>151815000</tns:serviceId>

</tns:RequestSOAPHeader>

</soapenv:Header>

<soapenv:Body>

<req:RequestMsg><![CDATA[<?xml version='1.0' encoding='UTF-8'?><request xmlns=”http://api-


v1.gen.mm.vodafone.com/mminterface/request”>

<Transaction>

<CommandID>AccountBalance</CommandID>

<LanguageCode>0</LanguageCode>

<OriginatorConversationID>LNM-7894-7895-2000-101</OriginatorConversationID>

<ConversationID></ConversationID>

<Remark>0</Remark>

<Parameters>

<Parameter>

<Key>ShortCode</Key>

<Value>898947</Value>

</Parameter>

</Parameters>

<ReferenceData>

81
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<ReferenceItem>

<Key>QueueTimeoutURL</Key>

<Value>http://10.66.49.201:8989/</Value>

</ReferenceItem></ReferenceData>

<Timestamp>2014-09-27T12:53:19.0000521Z</Timestamp>

</Transaction>

<Identity>

<Caller>

<CallerType>1</CallerType>

<ThirdPartyID>345612</ThirdPartyID>

<Password>Password0</Password>

<CheckSum>CheckSum0</CheckSum>

<ResultURL>http://10.66.49.201:8096/</ResultURL>

</Caller>

<Initiator>

<IdentifierType>11</IdentifierType>

<Identifier>b2c1b</Identifier>

<SecurityCredential>kce4dLOTWOG5u45XmlAD+PFRYQJbACWXcGXN76DV/WNEttcMRD5U8Xs8dsgE1sBoyROf9RWcEQK76xT0
eyC9qoDL+ZNtKiFcWn+JL4iD1SUG6tz8FIDuren1+TZ8oGiKiAa3pkts3l2jK1u4ieBrstOAQI9bzQUyCsIsODW4I7VprrwiaVYp3vUbHqxhWxZ
ASNTL2rBuNWXg1ZCDjOehr1JsssyfbEKHRI6hWoamHVLRNzeqw4dwsuXDom1J6aR+N7LSj0hMhRU4pA6X8KDSqgNOgBkx65VCYt/O
+e8wGKeO72ujsKHcc70+a7uLwkxa/zzYLzKeOWbONu5CuMxukA==</SecurityCredential>

<ShortCode>898947</ShortCode>

</Initiator>

<ReceiverParty>

<IdentifierType>4</IdentifierType>

<Identifier>898947</Identifier>

<ShortCode></ShortCode>

</ReceiverParty>

<AccessDevice>

82
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<IdentifierType>1</IdentifierType>

<Identifier>Identifier3</Identifier>

</AccessDevice></Identity>

<KeyOwner>1</KeyOwner>

</request>]]></req:RequestMsg>

</soapenv:Body>

</soapenv:Envelope>

6.5.2 GenericApiResponse
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<ResponseMsg xmlns="http://api-v1.gen.mm.vodafone.com/mminterface/request"><![CDATA[<Response
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/response"><ResponseCode>0</ResponseCode><ConversationID>232f0c91-f7b1-4f4e-a121-
12ae99464270</ConversationID><OriginatorConversationID>LNM-7894-7895-2000-
101</OriginatorConversationID><ServiceStatus>0</ServiceStatus></Response>]]></ResponseMsg>

</s:Body>

</s:Envelope>

6.5.3 GenericAPiResult
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<ResultMsg xmlns="http://api-v1.gen.mm.vodafone.com/mminterface/result"><![CDATA[<Result
xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/result"><ResultType>Completed</ResultType><ResultCode>0</ResultCode><ResultDesc>Succe
ss</ResultDesc><OriginatorConversationID>LNM-7894-7895-2000-101</OriginatorConversationID><ConversationID>232f0c91-f7b1-
4f4e-a121-12ae99464270</ConversationID><ResultParameters><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">ShortCode</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">898947</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">OrgainsationName</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Test1b</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Working Account Available Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Working Account Uncleared Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-

83
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

v1.gen.mm.vodafone.com/mminterface/request">Working Account Reserved Funds</Key><Value xmlns="http://api-


v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Working Account Account Number</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">48153-1 </Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Working Account Account Balance SetTime</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">22/08/2014 09:02:52</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Charges Paid Account Available Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Charges Paid Account Uncleared Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Charges Paid Account Reserved Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Charges Paid Account Account Number</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">48155-40 </Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Charges Paid Account Account Balance SetTime</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">22/08/2014 09:02:52</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Utility Account Available Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Utility Account Uncleared Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Utility Account Reserved Funds</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">0.0000</Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Utility Account Account Number</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">48155-12 </Value></Parameter><Parameter><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">Utility Account Account Balance SetTime</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">22/08/2014
09:02:52</Value></Parameter></ResultParameters><ReferenceData><ReferenceItem><Key xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">QueueTimeoutURL</Key><Value xmlns="http://api-
v1.gen.mm.vodafone.com/mminterface/request">http://10.66.49.201:8989/</Value></ReferenceItem></ReferenceData></Result>]]></Res
ultMsg>

</s:Body>

</s:Envelope>

6.6 notifyQueueTimeout
6.6.1 The Broker send notification to the 3rd party
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:loc="http://www.csapi.org/schema/timeoutnotification/data/v1_0/local" xmlns:res="http://api-
v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header/>

<soapenv:Body>

<loc:notifyQueueTimeout>

<loc:originatorConversationID>OriginatorConversationID0</loc:originatorConversationID>

84
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<loc:originRequest>PHNvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5v

cmcvc29hcC9lbnZlbG9wZS8iIHhtbG5zOnJlcT0iaHR0cDovL2FwaS12MS5nZW4ubW0udm9kYWZv

bmUuY29tL21taW50ZXJmYWNlL3JlcXVlc3QiPgogICA8c29hcGVudjpCb2R5PgogICAgICA8cmVx

OlJlcXVlc3RNc2c+PCFbQ0RBVEFbPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgi

Pz4KPHJlcXVlc3QgeG1sbnM9Imh0dHA6Ly9hcGktdjEuZ2VuLm1tLnZvZGFmb25lLmNvbS9tbWlu

dGVyZmFjZS9yZXF1ZXN0Ij4KICAgIDxUcmFuc2FjdGlvbj4KICAgICAgICA8Q29tbWFuZElEPkNv

bW1hbmRJRDA8L0NvbW1hbmRJRD4KICAgICAgICA8TGFuZ3VhZ2VDb2RlPkxhbmd1YWdlQ29kZTA8

L0xhbmd1YWdlQ29kZT4KICAgICAgICA8T3JpZ2luYXRvckNvbnZlcnNhdGlvbklEPk9yaWdpbmF0

b3JDb252ZXJzYXRpb25JRDA8L09yaWdpbmF0b3JDb252ZXJzYXRpb25JRD4KICAgICAgICA8Q29u

dmVyc2F0aW9uSUQ+Q29udmVyc2F0aW9uSUQwPC9Db252ZXJzYXRpb25JRD4KICAgICAgICA8UmVt

YXJrPlJlbWFyazA8L1JlbWFyaz4KICAgICAgICA8RW5jcnlwdGVkUGFyYW1ldGVycz5FbmNyeXB0

ZWRQYXJhbWV0ZXJzMDwvRW5jcnlwdGVkUGFyYW1ldGVycz4KICAgICAgICA8UGFyYW1ldGVycz4K

ICAgICAgICAgICAgPFBhcmFtZXRlcj4KICAgICAgICAgICAgICAgIDxLZXk+S2V5MDwvS2V5Pgog

ICAgICAgICAgICAgICAgPFZhbHVlPlZhbHVlMDwvVmFsdWU+CiAgICAgICAgICAgIDwvUGFyYW1l

dGVyPgogICAgICAgICAgICA8UGFyYW1ldGVyPgogICAgICAgICAgICAgICAgPEtleT5LZXkxPC9L

ZXk+CiAgICAgICAgICAgICAgICA8VmFsdWU+VmFsdWUxPC9WYWx1ZT4KICAgICAgICAgICAgPC9Q

YXJhbWV0ZXI+CiAgICAgICAgPC9QYXJhbWV0ZXJzPgogICAgICAgIDxSZWZlcmVuY2VEYXRhPgog

ICAgICAgICAgICA8UmVmZXJlbmNlSXRlbT4KICAgICAgICAgICAgICAgIDxLZXk+UXVldWVUaW1l

b3V0VVJMPC9LZXk+CiAgICAgICAgICAgICAgICA8VmFsdWU+VmFsdWUyPC9WYWx1ZT4KICAgICAg

ICAgICAgPC9SZWZlcmVuY2VJdGVtPgogICAgICAgICAgICA8UmVmZXJlbmNlSXRlbT4KICAgICAg

ICAgICAgICAgIDxLZXk+S2V5MzwvS2V5PgogICAgICAgICAgICAgICAgPFZhbHVlPlZhbHVlMzwv

VmFsdWU+CiAgICAgICAgICAgIDwvUmVmZXJlbmNlSXRlbT4KICAgICAgICA8L1JlZmVyZW5jZURh

dGE+CiAgICAgICAgPFRpbWVzdGFtcD4KICAgICAgICA8L1RpbWVzdGFtcD4KICAgIDwvVHJhbnNh

Y3Rpb24+CiAgICA8SWRlbnRpdHk+CiAgICAgICAgPENhbGxlcj4KICAgICAgICAgICAgPENhbGxl

clR5cGU+MDwvQ2FsbGVyVHlwZT4KICAgICAgICAgICAgPFRoaXJkUGFydHlJRD5UaGlyZFBhcnR5

SUQwPC9UaGlyZFBhcnR5SUQ+CiAgICAgICAgICAgIDxQYXNzd29yZD5QYXNzd29yZDA8L1Bhc3N3

b3JkPgogICAgICAgICAgICA8Q2hlY2tTdW0+Q2hlY2tTdW0wPC9DaGVja1N1bT4KICAgICAgICAg

ICAgPFJlc3VsdFVSTD5SZXN1bHRVUkwwPC9SZXN1bHRVUkw+CiAgICAgICAgPC9DYWxsZXI+CiAg

ICAgICAgPEluaXRpYXRvcj4KICAgICAgICAgICAgPElkZW50aWZpZXJUeXBlPjE8L0lkZW50aWZp

ZXJUeXBlPgogICAgICAgICAgICA8SWRlbnRpZmllcj5JZGVudGlmaWVyMDwvSWRlbnRpZmllcj4K

85
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

ICAgICAgICAgICAgPFNlY3VyaXR5Q3JlZGVudGlhbD5TZWN1cml0eUNyZWRlbnRpYWwwPC9TZWN1

cml0eUNyZWRlbnRpYWw+CiAgICAgICAgICAgIDxTaG9ydENvZGU+CiAgICAgICAgICAgIDwvU2hv

cnRDb2RlPgogICAgICAgIDwvSW5pdGlhdG9yPgogICAgICAgIDxQcmltYXJ0eVBhcnR5PgogICAg

ICAgICAgICA8SWRlbnRpZmllclR5cGU+MTwvSWRlbnRpZmllclR5cGU+CiAgICAgICAgICAgIDxJ

ZGVudGlmaWVyPklkZW50aWZpZXIxPC9JZGVudGlmaWVyPgogICAgICAgICAgICA8U2hvcnRDb2Rl

PlNob3J0Q29kZTA8L1Nob3J0Q29kZT4KICAgICAgICA8L1ByaW1hcnR5UGFydHk+CiAgICAgICAg

PFJlY2VpdmVyUGFydHk+CiAgICAgICAgICAgIDxJZGVudGlmaWVyVHlwZT4xPC9JZGVudGlmaWVy

VHlwZT4KICAgICAgICAgICAgPElkZW50aWZpZXI+SWRlbnRpZmllcjI8L0lkZW50aWZpZXI+CiAg

ICAgICAgICAgIDxTaG9ydENvZGU+U2hvcnRDb2RlMTwvU2hvcnRDb2RlPgogICAgICAgIDwvUmVj

ZWl2ZXJQYXJ0eT4KICAgICAgICA8QWNjZXNzRGV2aWNlPgogICAgICAgICAgICA8SWRlbnRpZmll

clR5cGU+MTwvSWRlbnRpZmllclR5cGU+CiAgICAgICAgICAgIDxJZGVudGlmaWVyPklkZW50aWZp

ZXIzPC9JZGVudGlmaWVyPgogICAgICAgIDwvQWNjZXNzRGV2aWNlPgogICAgPC9JZGVudGl0eT4K

ICAgIDxLZXlPd25lcj4wPC9LZXlPd25lcj4KPC9yZXF1ZXN0Pl1dPjwvcmVxOlJlcXVlc3RNc2c+

CiAgIDwvc29hcGVudjpCb2R5Pgo8L3NvYXBlbnY6RW52ZWxvcGU+Cg==</loc:originRequest>

</loc:notifyQueueTimeout>

</soapenv:Body>

</soapenv:Envelope>

6.6.2 The 3rd party return response to the Broker


Example1: Success response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:loc="http://www.csapi.org/schema/timeoutnotification/data/v1_0/local" xmlns:res="http://api-
v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header/>

<soapenv:Body>

<loc:notifyQueueTimeoutResponse>

<loc:result>

<res:ResultCode>00000000</res:ResultCode>

<res:ResultDesc> success</res:ResultDesc>

</loc:result>

</loc:notifyQueueTimeoutResponse>

86
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

</soapenv:Body>

</soapenv:Envelope>

Example2: Error response


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:loc="http://www.csapi.org/schema/timeoutnotification/data/v1_0/local" xmlns:res="http://api-
v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header/>

<soapenv:Body>

<loc:notifyQueueTimeoutResponse>

<loc:result>

<res:ResultCode>000000001</res:ResultCode>

<res:ResultDesc> failed </res:ResultDesc>

</loc:result>

</loc:notifyQueueTimeoutResponse>

</soapenv:Body>

</soapenv:Envelope>

6.7 queryTransaction
6.7.1 The 3rd party sends query request to the Broker
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v2="http://www.huawei.com.cn/schema/common/v2_1" xmlns:loc="http://www.csapi.org/schema/transaction/data/v1_0/local"
xmlns:res="http://api-v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header>

<v2:RequestSOAPHeader>

<v2:spId>151515</v2:spId>

<v2:spPassword>ODExNERCMDlCNjVDRkYxQUFCNzE5MkE1OEQyMjJDMzk1RUFCNzgwMjk2ODE4Rjk1OTE2MEFGNDU1QkRCMDk
yMg==</v2:spPassword>

<v2:serviceId>151515000</v2:serviceId>

<v2:timeStamp>20140730093620</v2:timeStamp>

</v2:RequestSOAPHeader>

</soapenv:Header>

87
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

<soapenv:Body>

<loc:queryTransaction>

<loc:originatorConversationID>R9I1-0000-4225-g64153</loc:originatorConversationID>

<loc:extensionInfo>

<loc:item>

<res:Key>queryDate</res:Key>

<res:Value>20140930102022</res:Value>

</loc:item>

</loc:extensionInfo>

</loc:queryTransaction>

</soapenv:Body>

</soapenv:Envelope>

6.7.2 The Broker return response to the 3rd party


Example1: Success response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance">

<soapenv:Body>

<ns1:queryTransactionResponse xmlns:ns1="http://www.csapi.org/schema/transaction/data/v1_0/local">

<ns1:result>

<ns2:ResponseCode xmlns:ns2="http://api-v1.gen.mm.vodafone.com/mminterface/response">00000000</ns2:ResponseCode>

<ns3:ResponseDesc xmlns:ns3="http://api-v1.gen.mm.vodafone.com/mminterface/response">Success</ns3:ResponseDesc>

</ns1:result>

<ns1:submitApiRequestList>

<ns1:submitApiRequest>UE9TVCAvbW1pbnRlcmZhY2UvcmVxdWVzdCBIVFRQLzEuMQ0KQWNjZXB0LUVuY29kaW5nOiBnemlwLGRlZ
mxhdGUNCkNvbnRlbnQtVHlwZTogdGV4dC94bWw7Y2hhcnNldD1VVEYtOA0KU09BUEFjdGlvbjogIiINClVzZXItQWdlbnQ6IEpha2FydGE
gQ29tbW9ucy1IdHRwQ2xpZW50LzMuMQ0KSG9zdDogMTAuNS4zOC41MTo4MzEwDQpDb250ZW50LUxlbmd0aDogMjU1MQ0KDQo8c
29hcGVudjpFbnZlbG9wZSB4bWxuczpzb2FwZW52PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyIgeG1sb
nM6cmVxPSJodHRwOi8vYXBpLXYxLmdlbi5tbS52b2RhZm9uZS5jb20vbW1pbnRlcmZhY2UvcmVxdWVzdCI+CiAgIDxzb2FwZW52OkhlY
WRlcj4KICAgICAgPHRuczpSZXF1ZXN0U09BUEhlYWRlciB4bWxuczp0bnM9Imh0dHA6Ly93d3cuaHVhd2VpLmNvbS9zY2hlbWEvb3NnL
2NvbW1vbi92Ml8xIj4KICAgICAgICAgPHRuczpzcElkPjE1MTUxNTwvdG5zOnNwSWQ+CiAgICAgICAgIDx0bnM6c3BQYXNzd29yZD5PRE
V4TkVSQ01EbENOalZEUmtZeFFVRkNOekU1TWtFMU9FUXlNakpETXprMVJVRkNOemd3TWprMk9ERTRSamsxT1RFMk1FRkdORFUx
UWtSQ01Ea3lNZz09PC90bnM6c3BQYXNzd29yZD4KICAgICAgICAgPHRuczp0aW1lU3RhbXA+MjAxNDA3MzAwOTM2MjA8L3Ruczp0a

88
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

W1lU3RhbXA+CiAgICAgICAgIDx0bnM6c2VydmljZUlkPjE1MTUxNTAwMDwvdG5zOnNlcnZpY2VJZD4KICAgICAgPC90bnM6UmVxdWVz
dFNPQVBIZWFkZXI+CiAgIDwvc29hcGVudjpIZWFkZXI+CiAgIDxzb2FwZW52OkJvZHk+CiAgICAgIDxyZXE6UmVxdWVzdE1zZz48IVtDR
EFUQVs8P3htbCB2ZXJzaW9uPScnMS4wJycgZW5jb2Rpbmc9JydVVEYtOCcnPz48cmVxdWVzdCB4bWxucz0nJ2h0dHA6Ly9hcGktdjEu
Z2VuLm1tLnZvZGFmb25lLmNvbS9tbWludGVyZmFjZS9yZXF1ZXN0Jyc+CjxUcmFuc2FjdGlvbj4KCTxDb21tYW5kSUQ+U2FsYXJ5UGF5b
WVudDwvQ29tbWFuZElEPgoJPExhbmd1YWdlQ29kZT4wPC9MYW5ndWFnZUNvZGU+Cgk8T3JpZ2luYXRvckNvbnZlcnNhdGlvbklEPlI5
STEtMDAwMC00MjI1LWc2NDE1MzwvT3JpZ2luYXRvckNvbnZlcnNhdGlvbklEPgoJPENvbnZlcnNhdGlvbklEPjwvQ29udmVyc2F0aW9uSU
Q+Cgk8UmVtYXJrPjA8L1JlbWFyaz4KCTxFbmNyeXB0ZWRQYXJhbWV0ZXJzPkVuY3J5cHRlZFBhcmFtZXRlcnMwPC9FbmNyeXB0ZW
RQYXJhbWV0ZXJzPgo8UGFyYW1ldGVycz48UGFyYW1ldGVyPgoJPEtleT5BbW91bnQ8L0tleT4KCTxWYWx1ZT43MC4wMDwvVmFsd
WU+CjwvUGFyYW1ldGVyPgoKICAgICAgICAgICAgCgo8L1BhcmFtZXRlcnM+CjxSZWZlcmVuY2VEYXRhPgoJPFJlZmVyZW5jZUl0ZW0+
CgkJPEtleT5RdWV1ZVRpbWVvdXRVUkw8L0tleT4KCQk8VmFsdWU+aHR0cDovLzEwLjY2LjQ5LjIwMTo4OTg5LzwvVmFsdWU+Cgk8L1
JlZmVyZW5jZUl0ZW0+PC9SZWZlcmVuY2VEYXRhPgoJPFRpbWVzdGFtcD4yMDE0LTA5LTI3VDEyOjUzOjE5LjAwMDA1MjFaPC9UaW1l
c3RhbXA+CjwvVHJhbnNhY3Rpb24+CjxJZGVudGl0eT4KCTxDYWxsZXI+CgkJPENhbGxlclR5cGU+MjwvQ2FsbGVyVHlwZT4KCQk8VGh
pcmRQYXJ0eUlEPjg5ODk0MTwvVGhpcmRQYXJ0eUlEPgoJCTxQYXNzd29yZD5QYXNzd29yZDA8L1Bhc3N3b3JkPgoJCTxDaGVja1N1
bT5DaGVja1N1bTA8L0NoZWNrU3VtPgoJCTxSZXN1bHRVUkw+aHR0cDovLzEwLjY2LjQ5LjIwMTo4MDk3LzwvUmVzdWx0VVJMPgoJP
C9DYWxsZXI+Cgk8SW5pdGlhdG9yPgoJCTxJZGVudGlmaWVyVHlwZT4xMTwvSWRlbnRpZmllclR5cGU+CgkJPElkZW50aWZpZXI+YjJj
MmI8L0lkZW50aWZpZXI+CgkJPFNlY3VyaXR5Q3JlZGVudGlhbD5iSkpiQ0E0UVQvVzdwVlQ5ZyszZGN0alFJRlUyb2pTVVZlcXo1WVVCK
3VVcDY2RDlVaGpqWnNoWEp5KzltRGVTcFJuRVFiczZIOHdHcmhoMjNBVnVQMi9jeURxRTZ4ZmhhU2hXM0tkdFZ0K0FxdWF0VWFCZk
xiNlNQZ045ZWdrVWtuNGhzWFdrK25oZlk3UnNtZE1LeTRJUkJZVGlqTXVlUGU2eUd3MTdrZUVqWk9MNCtrNG5XYTFqVnZScFBJNnVB
RkpTWTMzcEl4dUxoMlR4K2tBcmc1STRCNEpRS09pdzJtN0NQblZVMGpodnE4eHNHYXJPSW4yQ09DakV0M0cvQnIwV3Bucks3MStIen
ZoQUJoOVU4bG5OMjVFdlU3cmpBVHpMd2xGOE1nVnYra3UySERTNjJ4MFptVEtVWEgxc3JzU0JhS0VqaVRoY2NGcmZYVEVrRlE9PT
wvU2VjdXJpdHlDcmVkZW50aWFsPgoJCTxTaG9ydENvZGU+ODk4OTQ3PC9TaG9ydENvZGU+Cgk8L0luaXRpYXRvcj4KCQk8UHJpbW
FyeVBhcnR5PgoJCQk8SWRlbnRpZmllclR5cGU+NDwvSWRlbnRpZmllclR5cGU+CgkJCTxJZGVudGlmaWVyPjg5ODk0NjwvSWRlbnRpZ
mllcj4KCQkJPFNob3J0Q29kZT48L1Nob3J0Q29kZT4KCQk8L1ByaW1hcnlQYXJ0eT4KCTxSZWNlaXZlclBhcnR5PgoJCTxJZGVudGlma
WVyVHlwZT4xPC9JZGVudGlmaWVyVHlwZT4KCQk8SWRlbnRpZmllcj4yNTQ3MDcxNjM2MDU8L0lkZW50aWZpZXI+CgkJPFNob3J0Q2
9kZT48L1Nob3J0Q29kZT4KCTwvUmVjZWl2ZXJQYXJ0eT4KCTxBY2Nlc3NEZXZpY2U+CgkJPElkZW50aWZpZXJUeXBlPjE8L0lkZW50a
WZpZXJUeXBlPgoJCTxJZGVudGlmaWVyPklkZW50aWZpZXIzPC9JZGVudGlmaWVyPgoJCTwvQWNjZXNzRGV2aWNlPjwvSWRlbnRpd
Hk+CgkJPEtleU93bmVyPjE8L0tleU93bmVyPgoJPC9yZXF1ZXN0Pl1dPjwvcmVxOlJlcXVlc3RNc2c+CiAgIDwvc29hcGVudjpCb2R5Pgo8L3
NvYXBlbnY6RW52ZWxvcGU+</ns1:submitApiRequest>

<ns1:submitApiRequest>UE9TVCAvQ29yZUFwaVdlYlNlcnZpY2UvR2VuZXJpY0FwaS5zdmMgSFRUUC8xLjENCkNvbnRlbnQtVHlwZTog
dGV4dC94bWwNCkhvc3Q6IDg1LjIwNS4xNjUuMTk3OjE4MjAyDQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1MZW5ndGg6IDIxN
DYNCg0KPHNvYXBlbnY6RW52ZWxvcGUgeG1sbnM6c29hcGVudj0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZ
S8iIHhtbG5zOnJlcT0iaHR0cDovL2FwaS12MS5nZW4ubW0udm9kYWZvbmUuY29tL21taW50ZXJmYWNlL3JlcXVlc3QiPgogICAKICAgPH
NvYXBlbnY6Qm9keT4KICAgICAgPHJlcTpSZXF1ZXN0TXNnPjwhW0NEQVRBWzw/eG1sIHZlcnNpb249JycxLjAnJyBlbmNvZGluZz0nJ1V
URi04Jyc/PjxyZXF1ZXN0IHhtbG5zPScnaHR0cDovL2FwaS12MS5nZW4ubW0udm9kYWZvbmUuY29tL21taW50ZXJmYWNlL3JlcXVlc3Q
nJz4KPFRyYW5zYWN0aW9uPgoJPENvbW1hbmRJRD5TYWxhcnlQYXltZW50PC9Db21tYW5kSUQ+Cgk8TGFuZ3VhZ2VDb2RlPjA8L0x
hbmd1YWdlQ29kZT4KCTxPcmlnaW5hdG9yQ29udmVyc2F0aW9uSUQ+UjlJMS0wMDAwLTQyMjUtZzY0MTUzPC9PcmlnaW5hdG9yQ29
udmVyc2F0aW9uSUQ+Cgk8Q29udmVyc2F0aW9uSUQ+PC9Db252ZXJzYXRpb25JRD4KCTxSZW1hcms+MDwvUmVtYXJrPgoJPEVuY
3J5cHRlZFBhcmFtZXRlcnM+RW5jcnlwdGVkUGFyYW1ldGVyczA8L0VuY3J5cHRlZFBhcmFtZXRlcnM+CjxQYXJhbWV0ZXJzPjxQYXJhb
WV0ZXI+Cgk8S2V5PkFtb3VudDwvS2V5PgoJPFZhbHVlPjcwLjAwPC9WYWx1ZT4KPC9QYXJhbWV0ZXI+CgogICAgICAgICAgICAKCjwv
UGFyYW1ldGVycz4KPFJlZmVyZW5jZURhdGE+Cgk8UmVmZXJlbmNlSXRlbT4KCQk8S2V5PlF1ZXVlVGltZW91dFVSTDwvS2V5PgoJCT
xWYWx1ZT5odHRwOi8vMTAuNjYuNDkuMjAxOjg5ODkvPC9WYWx1ZT4KCTwvUmVmZXJlbmNlSXRlbT48L1JlZmVyZW5jZURhdGE+Cg
k8VGltZXN0YW1wPjIwMTQtMDktMjdUMTI6NTM6MTkuMDAwMDUyMVo8L1RpbWVzdGFtcD4KPC9UcmFuc2FjdGlvbj4KPElkZW50aXR
5PgoJPENhbGxlcj4KCQk8Q2FsbGVyVHlwZT4yPC9DYWxsZXJUeXBlPgoJCTxUaGlyZFBhcnR5SUQ+ODk4OTQxPC9UaGlyZFBhcnR5
SUQ+CgkJPFBhc3N3b3JkPlBhc3N3b3JkMDwvUGFzc3dvcmQ+CgkJPENoZWNrU3VtPkNoZWNrU3VtMDwvQ2hlY2tTdW0+CgkJPFJlc3
VsdFVSTD5odHRwczovLzE5Ni4yMDEuMjE0LjEzNjoxODMyMy9tbWludGVyZmFjZS9yZXN1bHQ8L1Jlc3VsdFVSTD4KCTwvQ2FsbGVyP
goJPEluaXRpYXRvcj4KCQk8SWRlbnRpZmllclR5cGU+MTE8L0lkZW50aWZpZXJUeXBlPgoJCTxJZGVudGlmaWVyPmIyYzJiPC9JZGVud
GlmaWVyPgoJCTxTZWN1cml0eUNyZWRlbnRpYWw+YkpKYkNBNFFUL1c3cFZUOWcrM2RjdGpRSUZVMm9qU1VWZXF6NVlVQit1VXA
2NkQ5VWhqalpzaFhKeSs5bURlU3BSbkVRYnM2SDh3R3JoaDIzQVZ1UDIvY3lEcUU2eGZoYVNoVzNLZHRWdCtBcXVhdFVhQmZMYjZ

89
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

TUGdOOWVna1VrbjRoc1hXaytuaGZZN1JzbWRNS3k0SVJCWVRpak11ZVBlNnlHdzE3a2VFalpPTDQrazRuV2ExalZ2UnBQSTZ1QUZKU
1kzM3BJeHVMaDJUeCtrQXJnNUk0QjRKUUtPaXcybTdDUG5WVTBqaHZxOHhzR2FyT0luMkNPQ2pFdDNHL0JyMFdwbnJLNzErSHp2a
EFCaDlVOGxuTjI1RXZVN3JqQVR6THdsRjhNZ1Z2K2t1MkhEUzYyeDBabVRLVVhIMXNyc1NCYUtFamlUaGNjRnJmWFRFa0ZRPT08L1
NlY3VyaXR5Q3JlZGVudGlhbD4KCQk8U2hvcnRDb2RlPjg5ODk0NzwvU2hvcnRDb2RlPgoJPC9Jbml0aWF0b3I+CgkJPFByaW1hcnlQYXJ
0eT4KCQkJPElkZW50aWZpZXJUeXBlPjQ8L0lkZW50aWZpZXJUeXBlPgoJCQk8SWRlbnRpZmllcj44OTg5NDY8L0lkZW50aWZpZXI+Cgk
JCTxTaG9ydENvZGU+PC9TaG9ydENvZGU+CgkJPC9QcmltYXJ5UGFydHk+Cgk8UmVjZWl2ZXJQYXJ0eT4KCQk8SWRlbnRpZmllclR5c
GU+MTwvSWRlbnRpZmllclR5cGU+CgkJPElkZW50aWZpZXI+MjU0NzA3MTYzNjA1PC9JZGVudGlmaWVyPgoJCTxTaG9ydENvZGU+PC
9TaG9ydENvZGU+Cgk8L1JlY2VpdmVyUGFydHk+Cgk8QWNjZXNzRGV2aWNlPgoJCTxJZGVudGlmaWVyVHlwZT4xPC9JZGVudGlmaW
VyVHlwZT4KCQk8SWRlbnRpZmllcj5JZGVudGlmaWVyMzwvSWRlbnRpZmllcj4KCQk8L0FjY2Vzc0RldmljZT48L0lkZW50aXR5PgoJCTxL
ZXlPd25lcj4xPC9LZXlPd25lcj4KCTwvcmVxdWVzdD5dXT48L3JlcTpSZXF1ZXN0TXNnPgogICA8L3NvYXBlbnY6Qm9keT4KPC9zb2FwZ
W52OkVudmVsb3BlPg==</ns1:submitApiRequest>

</ns1:submitApiRequestList>

<ns1:submitApiResponseList>

<ns1:submitApiResponse>SFRUUC8xLjEgMjAwIE9LDQpDb250ZW50LVR5cGU6IHRleHQveG1sOyBjaGFyc2V0PXV0Zi04DQpTZXJ2ZXI
6IE1pY3Jvc29mdC1JSVMvNy4wDQpYLVBvd2VyZWQtQnk6IEFTUC5ORVQNCkRhdGU6IFR1ZSwgMzAgU2VwIDIwMTQgMTI6NTE6Mz
UgR01UDQpDb25uZWN0aW9uOiBjbG9zZQ0KQ29udGVudC1MZW5ndGg6IDYzNQ0KDQo8czpFbnZlbG9wZSB4bWxuczpzPSJodHRwO
i8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlLyI+PHM6Qm9keSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMD
EvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48UmVzcG9uc2VN
c2cgeG1sbnM9Imh0dHA6Ly9hcGktdjEuZ2VuLm1tLnZvZGFmb25lLmNvbS9tbWludGVyZmFjZS9yZXF1ZXN0Ij48IVtDREFUQVs8UmVzc
G9uc2UgeG1sbnM6aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vYXBpLXYxL
mdlbi5tbS52b2RhZm9uZS5jb20vbW1pbnRlcmZhY2UvcmVzcG9uc2UiPjxSZXNwb25zZUNvZGU+MDwvUmVzcG9uc2VDb2RlPjxDb252Z
XJzYXRpb25JRD5lMGU5NjhmNS04Y2VhLTQzMTMtYWFjZi0wNzljNWNhNDdkMDE8L0NvbnZlcnNhdGlvbklEPjxPcmlnaW5hdG9yQ29ud
mVyc2F0aW9uSUQ+UjlJMS0wMDAwLTQyMjUtZzY0MTUzPC9PcmlnaW5hdG9yQ29udmVyc2F0aW9uSUQ+PFNlcnZpY2VTdGF0dXM+
MDwvU2VydmljZVN0YXR1cz48L1Jlc3BvbnNlPl1dPjwvUmVzcG9uc2VNc2c+PC9zOkJvZHk+PC9zOkVudmVsb3BlPg==</ns1:submitApiR
esponse>

<ns1:submitApiResponse>SFRUUC8xLjEgMjAwIE9LDQpDb250ZW50LVR5cGU6IHRleHQveG1sDQpDb25uZWN0aW9uOiBjbG9zZQ0K
Q29udGVudC1MZW5ndGg6IDYzNQ0KDQo8czpFbnZlbG9wZSB4bWxuczpzPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL
2VudmVsb3BlLyI+PHM6Qm9keSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuc
zp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj48UmVzcG9uc2VNc2cgeG1sbnM9Imh0dHA6Ly9hcGktdjEuZ2VuL
m1tLnZvZGFmb25lLmNvbS9tbWludGVyZmFjZS9yZXF1ZXN0Ij48IVtDREFUQVs8UmVzcG9uc2UgeG1sbnM6aT0iaHR0cDovL3d3dy53M
y5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vYXBpLXYxLmdlbi5tbS52b2RhZm9uZS5jb20vbW1pbnRlcm
ZhY2UvcmVzcG9uc2UiPjxSZXNwb25zZUNvZGU+MDwvUmVzcG9uc2VDb2RlPjxDb252ZXJzYXRpb25JRD5lMGU5NjhmNS04Y2VhLTQ
zMTMtYWFjZi0wNzljNWNhNDdkMDE8L0NvbnZlcnNhdGlvbklEPjxPcmlnaW5hdG9yQ29udmVyc2F0aW9uSUQ+UjlJMS0wMDAwLTQyMj
UtZzY0MTUzPC9PcmlnaW5hdG9yQ29udmVyc2F0aW9uSUQ+PFNlcnZpY2VTdGF0dXM+MDwvU2VydmljZVN0YXR1cz48L1Jlc3BvbnNl
Pl1dPjwvUmVzcG9uc2VNc2c+PC9zOkJvZHk+PC9zOkVudmVsb3BlPg==</ns1:submitApiResponse>

</ns1:submitApiResponseList>

<ns1:submitApiResultList>

<ns1:submitApiResult>UE9TVCAvIEhUVFAvMS4xDQpDb250ZW50LVR5cGU6IHRleHQveG1sDQpIb3N0OiAxMC42Ni40OS4yMDE6ODA
5Nw0KQ29ubmVjdGlvbjogY2xvc2UNCkNvbnRlbnQtTGVuZ3RoOiAxMTc5DQoNCjxzOkVudmVsb3BlIHhtbG5zOnM9Imh0dHA6Ly9zY2hlb
WFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUvIj48czpCb2R5IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY
2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPjxSZXN1bHRNc2cgeG1sbnM9Im
h0dHA6Ly9hcGktdjEuZ2VuLm1tLnZvZGFmb25lLmNvbS9tbWludGVyZmFjZS9yZXN1bHQiPjwhW0NEQVRBWzxSZXN1bHQgeG1sbnM6

90
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

aT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vYXBpLXYxLmdlbi5tbS52b2RhZ
m9uZS5jb20vbW1pbnRlcmZhY2UvcmVzdWx0Ij48UmVzdWx0VHlwZT5Db21wbGV0ZWQ8L1Jlc3VsdFR5cGU+PFJlc3VsdENvZGU+MTk
8L1Jlc3VsdENvZGU+PFJlc3VsdERlc2M+QXBpUmVxdWVzdE1lc3NhZ2VFeHBpcnlGYWlsdXJlPC9SZXN1bHREZXNjPjxPcmlnaW5hdG9
yQ29udmVyc2F0aW9uSUQ+UjlJMS0wMDAwLTQyMjUtZzY0MTUzPC9PcmlnaW5hdG9yQ29udmVyc2F0aW9uSUQ+PENvbnZlcnNhdGlv
bklEPmUwZTk2OGY1LThjZWEtNDMxMy1hYWNmLTA3OWM1Y2E0N2QwMTwvQ29udmVyc2F0aW9uSUQ+PFJlc3VsdFBhcmFtZXRlcn
M+PFBhcmFtZXRlcj48S2V5IHhtbG5zPSJodHRwOi8vYXBpLXYxLmdlbi5tbS52b2RhZm9uZS5jb20vbW1pbnRlcmZhY2UvcmVxdWVzdCI+
VHJhbnNhY3Rpb24gRGF0ZVRpbWU8L0tleT48VmFsdWUgeG1sbnM9Imh0dHA6Ly9hcGktdjEuZ2VuLm1tLnZvZGFmb25lLmNvbS9tbWlu
dGVyZmFjZS9yZXF1ZXN0Ij4zMC4wOS4yMDE0IDEyOjUyOjMxPC9WYWx1ZT48L1BhcmFtZXRlcj48L1Jlc3VsdFBhcmFtZXRlcnM+PFJlZ
mVyZW5jZURhdGE+PFJlZmVyZW5jZUl0ZW0+PEtleSB4bWxucz0iaHR0cDovL2FwaS12MS5nZW4ubW0udm9kYWZvbmUuY29tL21taW
50ZXJmYWNlL3JlcXVlc3QiPlF1ZXVlVGltZW91dFVSTDwvS2V5PjxWYWx1ZSB4bWxucz0iaHR0cDovL2FwaS12MS5nZW4ubW0udm9kY
WZvbmUuY29tL21taW50ZXJmYWNlL3JlcXVlc3QiPmh0dHA6Ly8xMC42Ni40OS4yMDE6ODk4OS88L1ZhbHVlPjwvUmVmZXJlbmNlSXRl
bT48L1JlZmVyZW5jZURhdGE+PC9SZXN1bHQ+XV0+PC9SZXN1bHRNc2c+PC9zOkJvZHk+PC9zOkVudmVsb3BlPg==</ns1:submitApi
Result>

</ns1:submitApiResultList>

<ns1:queueTimeOutList/>

</ns1:queryTransactionResponse>

</soapenv:Body>

</soapenv:Envelope>Example2: Error response


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:loc="http://www.csapi.org/schema/transaction/data/v1_0/local" xmlns:res="http://api-
v1.gen.mm.vodafone.com/mminterface/response" xmlns:res1="http://api-v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header/>

<soapenv:Body>

<loc:queryTransactionResponse>

<loc:result>

<ResponseCode>100000007</ResponseCode>

<ResponseDesc>Authentication failed</ResponseDesc>

</loc:result>

</loc:queryTransactionResponse>

</soapenv:Body>

</soapenv:Envelope>

91
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

6.8 changePassword
6.8.1 Request example:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:loc="http://www.csapi.org/schema/management/data/v1_0/local" xmlns:res="http://api-
v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header/>

<soapenv:Body>

<loc:changePassword>

<loc:spId>3500001</loc:spId>

<loc:spPassword>c5216e519a071d601bedd150f3fcd026</loc:spPassword>

<loc:timeStamp>20120101010101</loc:timeStamp>

<loc:newPassword>wi2a7BAH0QPd2LRdmcgC9w==</loc:newPassword>

</loc:changePassword>

</soapenv:Body>

</soapenv:Envelope>

6.8.2 Response example:


 Example1: Success response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:loc="http://www.csapi.org/schema/transaction/data/v1_0/local" xmlns:res="http://api-
v1.gen.mm.vodafone.com/mminterface/response" xmlns:res1="http://api-v1.gen.mm.vodafone.com/mminterface/result">

<soapenv:Header/>

<soapenv:Body>

<loc:changePassword Response>

<loc:result>

<res:ResponseCode>00000000</res:ResponseCode>

<res:ResponseDesc>Success</res:ResponseDesc>

</loc:result>

<loc:changePasswordResponse>

</soapenv:Body>

92
PROJECT NAME: M-PESA

DOCUMENT NAME: DEVELOPER’S GUIDE- B2B INTERFACE VERSION: 0.3

TH
COMPANY/DIVISION: PRODUCT AND SERVICE DEVELOPMENT DATE: 24 APRIL 2015

</soapenv:Envelope>

 Example2: Error response caused by authentication failed.


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://api-
v1.gen.mm.vodafone.com/mminterface/request">

<soapenv:Header/>

<soapenv:Body>

<req:ResponseMsg><![CDATA[<?xml version="1.0" encoding="UTF-8"?>

<response xmlns="http://api-v1.gen.mm.vodafone.com/mminterface/response">

<ResponseCode>100000007</ResponseCode>

<ResponseDesc>Authentication failed</ResponseDesc>

</response>]]></req:ResponseMsg>

</soapenv:Body>

</soapenv:Envelope>

93

You might also like