^

Transactions APIs

Introduction

The Transactions API is used for all operations involving mobile money financial transactions. This currently covers:

  • Creating a Transaction (POST)
  • Returning a representation of one or more transactions(GET)

Transactions are used for a wide range of use cases including Merchant Payments, International Transfers, Domestic Transfers and agent cash-in/cash-out. Reversals and Adjustments are also treated as Transactions.

URI is consistent for all transactions and format is:

/transactions.

The specific resource can be identified by Transaction Reference as per below:

Operation Identifier Identifier Placement
GET Transaction Reference The format is /transactions/{Transaction Reference}

The APIs

Click here to view the Swagger API Definition

Transactions API

The object definition for Transactions as provided below:

Name Type Description RequestResponse Reference Validation
Amount String Principle Transaction Amount Mandatory Mandatory   Regular Expression – please refer to Swagger definition
Currency String Currency of the principal transaction amount. Mandatory Mandatory   Enumeration = ISO Currency Codes
Type String The harmonised Transaction Type Mandatory Mandatory   Enumeration = Transaction Types
Sub-type String A non-harmonised sub-classification of the type of transaction. Values are not fixed and usage will vary according to Provider. Optional Optional    
Transaction Status String Indicates the status of the transaction as stored by the API provider. Optional Mandatory    
Description Text String Free format text description of the transaction provided by the client. This can be provided as a reference for the receiver on the SMS and on the account statement. NAOptional    
Request Date DateTime The creation date and time of the transaction as supplied by the client. Mandatory Mandatory    
Date Created DateTime Date and time when the transaction was created by the API Provider NAOptional    
Date Modified DateTime Date and time when the transaction was modified by the API Provider NAOptional    
Transaction Reference String Unique reference for the transaction. This is returned in the response by API provider. NAMandatory    
Transaction Receipt String Transaction receipt number as notified to the parties. This may differ from the Transaction Reference. NAOptional    
Requesting Organisation Transaction Reference String A reference provided by the requesting organisation that is to be associated with the transaction. OptionalOptional    
One Time Code String A one-time code that can be supplied in the request or can be generated in the response depending upon the use case. Optional Optional    
Geo Code String Indicates the geographic location from where the transaction was initiated. Optional Optional    
Debit Party Identifier Reference Array A collection of key/value pairs that enable the debit party to be identified. Keys include MSISDN and Wallet Identifier. Mandatory Mandatory Account Identifiers  
Credit Party Identifier Reference Array A series of key/value pairs that enable the credit party to be identified. Keys include MSISDN and Wallet Identifier. Mandatory Mandatory Account Identifiers  
Sender KYC Reference A collection of properties detailing the KYC of the transaction Sender, typically used for International Transfers. Optional Optional KYC Information  
Recipient KYC Reference A collection of properties detailed the KYC of the transaction Recipient, typically used for International Transfers. Optional Optional KYC Information  
International Transfer Information Reference A collection of properties detailed information specifically used for international transfers. Optional Optional International Transfer Information  
Original Transaction Reference String For reversals and refunds, this property indicates the transaction which is the subject of the reversal Optional Optional    
Servicing Identity String The property is used to identify the servicing identity for ‘present’ transactions, e.g. till, POS ID, assistant ID Optional Optional    
Requesting LEI String Legal Entity Identifier of the organisation that is requesting the transaction. Optional Optional   Length = 20, Regular Expression (See Swagger Definition)
Receiving LEI String Legal Entity Identifier of the organisation that is receiving the transaction. Optional Optional   Length = 20, Regular Expression (See Swagger Definition)
Metadata Reference Array A collection of key/value pairs. These can be used to populate additional transaction properties. Optional Optional Metadata  

Try it Out - Create a Transaction

Try it Out - View a Transaction


Reversals API

The Reversals API is used to reverse a financial transaction. The originating transaction reference must be provided in the URI in order to identify the transaction to be reversed. For a partial reversal, the amount needs to be supplied. It should be noted however that API Providers may not support partial reversals and will return an error if a partial amount is supplied. This API can also be used for adjustments.

Note that only reversal creation is supported. For viewing reversals, the Transactions API should be used. Format is:

/transactions/{Original Transaction Reference}/reversals

The object definition for Reversals is provided below:

Name Type Description Request Response Reference Validation
Amount String Principle Transaction Amount Optional Optional   Regular Expression – please refer to Swagger definition
Currency String Currency of the principal transaction amount. Optional Optional   Enumeration = ISO Country Codes.
Type String The harmonised Transaction Type Mandatory Mandatory   Enumeration = Transaction Types
Note that only Reversals and Adjustments are supported.
Sub-type String A non-harmonised sub-classification of the type of transaction. Values are not fixed and usage will vary according to Provider. Optional Optional    
Transaction Status String Indicates the status of the transaction as stored by the API provider. Optional Mandatory    
Description Text String Free format text description of the transaction provided by the client. This can be provided as a reference for the receiver on the SMS and on the account statement. Optional Optional    
Request Date DateTime The creation date and time of the transaction as supplied by the client. Mandatory Mandatory    
Date Created DateTime Date and time when the transaction was created by the API Provider NA Optional    
Date Modified DateTime Date and time when the transaction was modified by the API Provider NA Optional    
Transaction Reference String Unique reference for the transaction. This is returned in the response by API provider. NA Mandatory    
Transaction Receipt String Transaction receipt number as notified to the parties. This may differ from the Transaction Reference. NA Optional    
Requesting Organisation Transaction Reference String A reference provided by the requesting organisation that is to be associated with the transaction. Optional Optional    
Geo Code String Indicates the geographic location from where the transaction was initiated. Optional Optional   Regular Expression – please refer to Swagger definition
Debit Party Identifier Reference Array A collection of key/value pairs that enable the debit party to be identified. Keys include MSISDN and Wallet Identifier. Optional Optional Account Identifiers  
Credit Party Identifier Reference Array A series of key/value pairs that enable the credit party to be identified. Keys include MSISDN and Wallet Identifier. Optional Optional Account Identifiers  
Original Transaction Reference String For reversals and refunds, this property indicates the transaction which is the subject of the reversal NA Mandatory    
Servicing Identity String The property is used to identify the servicing identity for ‘present’ transactions, e.g. till, POS ID, assistant ID Optional Optional    
Metadata Reference Array A collection of key/value pairs. These can be used to populate additional transaction properties. Optional Optional Metadata  

Try it Out - Create a Reversal


Batch Transactions API Overview

As the name implies, this API allows clients to submit batches of transactions in a single HTTP request. Batch processing is always asynchronous. Batch processing follows a simple state transition:

  1. Client submits the batch for processing via a ‘POST /batchtransactions’.
  2. The client will return the RequestState object indicating whether a callback will be provided or polling is required.
  3. The API provider will parse the batch in order to determine whether the transactions are capable of being processed.
  4. Once parsing has completed, the API provider will set the batch status in the batchtransactions object to ‘created’.
  5. The client will be able to retrieve the batchtransactions object by invoking the URI provided by the RequestState object.
  6. If errors are indicated, i.e. some of the transactions failed parsing, the client is able to retrieve the errors via ‘GET /batchtransactions/rejections’.
  7. Depending upon the business process, the client (or another client) can approve the batch for posting by issuing a ‘PATCH /batchtransactions’ in order to update the status to ‘approved’.
  8. As per step 2, a RequestState object will be returned indicating whether a callback will be provided or polling is required.
  9. The API provider will then post the transactions in the batch taking into account any scheduling considerations.
  10. Once posting is completed, the API provider will set the batch status in the batchtransactions object to ‘completed’.
  11. The client will be able to retrieve the batchtransactions object by invoking the URI provided by the RequestState object.
  12. The client will also be able to retrieve a list of successful transaction completions ‘/batchtransactions/completions’ and transaction failures ‘/batchtransactions/rejections’.

Batch Transactions API

As described above, this API enables clients to submit and approve a batch of transactions. The API allows transactions of multiple types to be include in a single batch. The following operations are supported:

  • Submit a batch:
    POST /batchtransactions
  • Approve a batch: The Batch Status needs to be set to ‘approved’
    PATCH /bathtransactions/{Batch ID}
  • View details regarding batch processing:
    GET /batchtransactions/{batch ID}
Batch Transaction Object Properties
Name Type Description Request Response Reference Validation
Batch Title String Client-provided title for the batch Optional Optional    
Batch Description String Client-provided description of the batch. Optional Optional    
Batch ID String Identifier for the Batch that is assigned by the API provider. This ID is used by the client on subsequent GET or PATCH operations. N/A Mandatory    
Batch Status String Indicates the status of the batch. Optional Mandatory   Enumeration = created, approved, completed
Processing Flag Boolean Indicates whether the batch is currently undergoing processing by the API Provider. Optional Optional    
Scheduled Start Date Datetime If the batch has been scheduled, the expected start time is provided here. Optional Optional    
Created Date Datetime Indicates when the batch was created as recorded by the API provider. Optional Mandatory    
Approved Date Datetime Indicates when the batch was approved as recorded by the API provider. Optional Mandatory    
Completed Date Datetime Indicates when the batch was completed as recorded by the API provider. Optional Mandatory    
Rejections Count Integer Indicates the number of records that have been rejected, either during parsing or during final processing. Optional Optional    
Parsing Success Count Integer Indicates the number of records that have been parsed successfully. Optional Optional    
Completed Count Integer Indicates the number of records that have been successful completed. Optional Optional    
Transaction Data Reference Array Collection of Transactions that are to be processed Mandatory N/A Transactions  

Try it Out - Create a Batch Transaction

Try it Out - View a Batch Transaction

Try it Out - Update a Batch Transaction



Batch Rejections API

As described above, this API enables clients to retrieve information on all transactions that have either failed parsing or have failed to be completed. Only GET is supported. Format is:

batchtransactions/{Batch ID}/rejections

In order to filter the number of records returned, the following query strings can be used:

Parameter Type Format Description
Limit Integer N/A Supports pagination. If this is not supplied, then the server will apply a limit of 50 records returned for each request.
Offset Integer N/A Supports pagination. This value will indicate the cursor position from where to retrieve the set of records. For example, a limit of 50 and offset of 10 will return records 10 to 60.
fromDateTime String DateTime Indicates the minimum date for which records should be returned.
toDateTime String DateTime Indicates the maximum date for which records should be returned.

Note that http response metadata is returned with each response that is paginated indicating the total number of records available and total number of records returned.

Batch Rejection Object Properties
Name Type Description Request Response Reference
Transaction Reference String Transaction Reference as assigned by the API provider. N/A Optional  
Date Rejected Datetime Date and time of the rejection. N/A Mandatory  
Debit Party Identifier Reference Array The debit party identifiers for the transaction as specific in the batch request. N/A` Mandatory Account Identifiers
Credit Party Identifier Reference Array The credit party identifiers for the transaction as specific in the batch request. N/A Mandatory Account Identifiers
Rejection Reason String The reason for the transaction request as indicated by the API provider. N/A Mandatory  
Requesting Organisation Transaction Reference String A reference provider by the requesting organisation that is to be associated with the transactions N/A Optional  

Try it Out - View Batch Rejections



Batch Completions API

This API lists all transactions that have successfully completed for a given batch. Only GET is supported. Format is:

batchtransactions/{Batch ID}/completions

In order to filter the number of records returned, the following query strings can be used:

Parameter Type Format Description
Limit Integer N/A Supports pagination. If this is not supplied, then the server will apply a limit of 50 records returned for each request.
Offset Integer N/A Supports pagination. This value will indicate the cursor position from where to retrieve the set of records. For example, a limit of 50 and offset of 10 will return records 10 to 60.
fromDateTime String DateTime Indicates the minimum date for which records should be returned.
toDateTime String DateTime Indicates the maximum date for which records should be returned.

Note that http response metadata is returned with each response that is paginated indicating the total number of records available and total number of records returned.

Batch Completion Object Properties
Name Type Description Request Response Reference
Transaction Reference String Transaction Reference as assigned by the API provider. N/A Mandatory  
Date Completed Datetime Date and time indicating when the transaction was completed. N/A Mandatory  
Link String Provides a URL to the transaction resource. N/A Mandatory  
Debit Party Identifier Reference Array The debit party identifiers for the transaction as specific in the batch request. N/A` Mandatory Account Identifiers
Credit Party Identifier Reference Array The credit party identifiers for the transaction as specific in the batch request. N/A Mandatory Account Identifiers
Requesting Organisation Transaction Reference String A reference provider by the requesting organisation that is to be associated with the transactions N/A Optional  


Try it Out - View Batch Completions


Supporting Objects

International Transfer Information Object

The International Transfer Information object contains details that are specific to international transfers.

Name Type Description Request Response Validation
Country of Origin String The originating country of the transaction, i.e. the country where the transaction commenced. Mandatory Mandatory Enumeration = ISO Country Codes
Quotation Reference String Reference for the quotation that was provider to the sender. (refer to Quotations API for more information). Optional Optional  
Quote ID String The specific quote associated with the quotation (refer to Quotes object for more information). Optional Optional  
Receiving Country String Destination Country of international remittance Optional Optional  
Purpose of Remittance String Property providing a description of the reason for the international remittance. Optional Optional  
Relationship with Sender String Indicates the relationship (if any) between the sender and the receiver Optional Optional  
Delivery Method to Use String The recipient delivery method as chosen by the sender Optional Optional Enumeration = Delivery Method Types
Sender Blocking Reason String The reason for blocking the transaction, based on AML checks on the sender NA Optional  
Recipient Blocking Reason String The reason for blocking the transaction, based on AML checks on the recipient NA Optional  


Name Object

The name object identifies the name details for the subject identity.

Name Type Description RequestResponse
Title String The given title of the KYC subject, e.g. Mr, Mrs, Dr. Optional Optional
First Name String First name (also referred to as given name) of the KYC subject. Optional Optional
Middle Name String Middle Name of the KYC subject. Optional Optional
Last Name String Surname (also referred to as last or family name) of the KYC subject. Optional Optional
Full Name String The full name of the KYC subject. Optional Optional
Native Name String The full name expressed as in the native language Optional Optional


Address Object

The address object holds the postal address of the subject. Due to variability of address information in a number of mobile money markets, only Country is mandatory.

Name Type Description RequestResponse Validation
Address Line 1 String First line of the address. Optional Optional  
Address Line 2 String Second line of the address. Optional Optional  
Address Line 3 String Third line of the address. Optional Optional  
City String City/Town Optional Optional  
StateProvince String State or Province Optional Optional  
PostalCode String Postal Code Optional Optional  
Country String Country Optional Optional Enumeration = ISO Country Codes


ISO Currency Codes

The three-character alphabetic code for currency as defined by ISO 4217 is to be used for all currency properties. The full list of codes is maintained by Swiss Interbank Clearing on behalf of the International Organisation for Standardisation. This list can be obtained via the following website http://www.currency-iso.org/en/home/tables/table-a1.html



ISO Country Codes

The two-character alphabetic code for country as defined by ISO 4217 is to be used for all properties specifying a country or nationality. The full list of codes is maintained by the International Organisation for Standardisation. The list can be obtained via the following website - http://www.iso.org/iso/country_codes



Transaction Types

A small number of types have been defined to classify the nature of a transaction. Use of these types will enable clients to indicate the type of transaction in a manner that is common regardless of the API provider.

Code Description
billpay Payment of bill from a business for goods and/or services.
deposit Exchange of cash in return for e-Money either at a physical agent or via ATM
disbursement Disbursement of funds (making payments from an organisation (business, NGO, government entity) to a mobile money recipient.
transfer Transfer of funds between mobile money provider and another provider or financial institution in the same country.
merchantpay Purchases of goods and/or services from shops (payer present) or online (payer not present).
inttransfer Transfer of funds to a recipient in another country, either directly to/from a mobile wallet or via an international money transfer provider.
adjustment General adjustments to an account via an adjustment transaction (e.g. refunds).
reversal Reversal of a prior transaction to return funds to the payer.
withdrawal Exchange of e-Money in return for cash either at a physical agent or via ATM


KYC Information Object

KYC refers to ‘Know your Customer’. The KYC object contains a number of properties that enable the identity of subject to be verified. KYC is typically provided for international transfers for the sending identity and the receiving identity. There are no mandatory KYC object properties.

Name Type Description RequestResponse Reference Validation
Nationality String Nationality of the KYC subject. Optional Optional   Enumeration = ISO Country Codes
Date of Birth Date Birth date of the KYC subject. Optional Optional    
Occupation String Occupation of the KYC subject. Optional Optional    
Employer Name String Employer Name of the KYC subject. Optional Optional    
Contact Phone String Contact phone number (mobile or landline) of the KYC subject. Phone number to be provided in international format as per ITU E.123. Optional Optional   Regular Expression to validate against ITU E.123 Refer to Swagger definition for more information.
Gender String Gender of the KYC Object. Optional Optional   Length=1, Enumeration = (m)ale, (f)emale, (u)nspecified
Id Document Reference Array An array of properties containing the forms of identification that are associated with the subject. Optional Optional Id Document  
Postal Address Reference A collection of properties that details the postal address of the KYC subject. Optional Optional Address  
KYC Subject Name Reference Refers to the name properties for the KYC subject Optional Optional Name  
Email Address String Email address of the KYC subject Optional Optional    
Birth Country String The country of birth of the KYC subject Optional Optional   Enumeration = ISO Country Codes


Metadata Object

The metadata object allows additional properties to be specified for the parent object in the form of key/value pairs. Additional properties should only be used where no suitable defined property match can be found. The number of key/value pairs is limited to 20.

Name Type Description RequestResponse
Key String Identifies the type of additional property. Mandatory Mandatory
Value String Identifies the value of the additional property. Mandatory Mandatory


Account Identifiers Object

In Mobile Money, there is no single and common method for identifying mobile money accounts and/or transaction parties. Identifiers include MSISDN (Mobile Number), Bank Short Code, Account Number, Agent/Merchant Short Code and Wallet Identifier. The Account Identifier object enables one or multiple identifiers to be provided to enable the recipient system to resolve the account/party.

Name Type Description RequestResponse Validation
Key String Provides the account identifier type. Mandatory Mandatory Enumeration = Account Identifiers
Value String Provides the account identifier type value. Mandatory Mandatory  


Account Identifiers Enumerations

The Account Identifier enumeration lists all possible means to identify a target account and for transactions, the debit and/or credit party. Identifiers can be combined if necessary to provide a unique identifier for the target account.

Code Short Desc Type Description
accountcategory Account Category String Can be used to identify the sources of funds category where there are multiple accounts (wallets) held against an account holder.
bankaccountno Bank Account Number String Financial institution account number that is typically known by the account holder.
accountrank Account Rank String Is used to identify the rank of the source of funds ranks where there are multiple accounts (wallets) held against an account holder.
identityalias Identity Alias String An alias for the identity, e.g. short code for an agent till or company name/number for a bill payment.
iban IBAN String Internationally agreed system of identifying bank accounts across national borders to facilitate the communication and processing of cross border transactions. Can contain up to 34 alphanumeric characters.
accountid Account Holder Identity String Identifier for the account holder.
msisdn MSISDN String Mobile Number of the account holder. Should conform to ITU E.123.
swiftbic SWIFTBIC String A bank identifier code (BIC) is a unique identifier for a specific financial institution. A BIC is composed of a 4-character bank code, a 2-character country code, a 2-character location code and an optional 3-character branch code. BICs are used by financial institutions for letters of credit, payments and securities transactions and other business messages between banks. Please refer to ISO 9362 for further information.
sortcode Bank Short Code String Sort code to identify the financial institution holding the account.
organisationid Organisation Account Identifier String Used to identify the organisation for which a payment is to be made.
username Username String Used to identify target account via an associated username.
walletid Wallet Identifier String A means to identify a mobile money wallet, particularly where multiple wallets can be held against an MSISDN. typically used in conjunction with MSISDN or identity alias to identify a particular wallet
linkref Link Reference String A means to uniquely identify an account via an account to account link. E.g. wallet account link to bank account.


Delivery Method

When a customer requests and international transfer quotation they are able to specify their preferred method of delivery of the transfer to the recipient. Acceptable delivery methods are provided below.

directtoaccount - The transfer is to be delivered into the account (wallet) of the recipient.

agent - The recipient can visit an agent and get the transferred funds.

personaldelivery - A supplementary service where an authorised person can deliver the funds, in hand, to the receiving end user



ID Types

The ID Types enumeration lists accepted identification types. Due to the wide international variation in accepted types of identification, a catch-all type of ‘OtherID’ has also been defined.

ID Type Description
passport Payment of bill from a business for goods and/or services.
nationalregistration National Registration Number
otherid Catch-all for IDs not on the list
drivinglicence Driving Licence Number
socialsecurity Social Security Number
alienregistration Alien Registration ID
nationalidcard National Identity Card
employer Employers Identification
taxid Tax Identification Number
seniorcitizenscard Senior Citizens ID Card
marriagecertificate Marriage Certificate
birthcertificate Birth Certificate
healthcard Health Card
votersid Voters Identification
villageelderletter Letter of confirmation from village elder
pancard Credit/debit card number (Primary Account Number)
officialletter Official letter confirming identity