NAV navbar
bash ruby python javascript

booking

Creat Event

Admin request to create event

Create events request description

Endpoint

POST {host}/ji036/v1/booking/event/create

Request Body params

Parameter Type required Description
status boolean false by default the status will be set to true
eventName String true status . name of the event
userId String true the user creating the transaction
startDate date true start date of the event. format 2022-11-15T08:38:20.195+00:00
endDate date true end date of the event. format 2022-11-15T08:38:20.195+00:00
coverImage String false a cover image or background image
images Array false all the possible images to describe the event
ticket Array false all the possible ticket of the array, not necessarily required during the creation of event
location Object true the location of the event
poster Object false the event creator information
specialGuest Array false the special invitees to showcase the event

Note: images is an array of string, ["https://host/bbfbrv.png", "https://host/bbfbrv.png"]

Request Body for ticket

Note: ticket is an array of objects

Parameter Type required Description
isValid boolean false default is true, that is if the ticket is still valid
ticketName String true the ticket name example: One Star
ticketType String false the ticket name example: VIP
quantity number true the number of ticket available for that ticket type
currency String false default is XAF
createdBy date false the user creating the ticket

Request Body for location

Note: location is an object

Parameter Type required Description
venue String true the event specific location, that is the precise venue, example Akwa Palace
country String true the country where the event will take place
region String true the region where the event will take place
town String true the town where the event will take place
long number false greenWhich longitude
lat number false greenWhich latitude

Request Body for poster

Parameter Type required Description
name String false the user's real name
title String false the user's title which he will want his guest to see
image String false the user's image which he will like to show the invitees

Request Body for specialGuest

Note: specialGuest is an array of object

Parameter Type required Description
name String false the real name of the guest
title String false the title of the guest example P-Square
role String false the role he or she will play
description String false describing the role of the special guest max 1000 character
country String false Country where the guest is coming from
image Array of strings false the user's image which he will like to show the invitees

Sample request

Event payload

{
  "eventName": "End of year party",
  "startDate": "2022-11-15T08:38:20.195+00:00",
  "endDate": "2022-11-15T11:38:20.195+00:00",
  "coverImage": "https://tranzak.me/images/35223mage.png",
  "images": [
    "https://myimage.png",
    "https://myimage.png"
  ],
  "status": true,
  "ticket": [
    {
      "quantity": 7,
      "ticketType": "VIP",
      "price": 2000,
      "currency": "XAF",
      "isValid": true,
      "createdBy": "Bimeri Noel"
    },
    {
      "quantity": 15,
      "ticketType": "Normal",
      "numberSold": 0,
      "price": 500,
      "currency": "XAF",
      "isValid": true,
      "createdBy": "Bimeri Noel"
    }
  ],
  "location": {
    "location": "Paramount Hotel",
    "country": "Cameroon",
    "region": "South West",
    "town": "Buea",
    "long": 22345,
    "lat": 34235
  },
  "poster": {
    "name": "bimeri noel",
    "title": "Papa Promo",
    "image": "https://ttazak.me/image/532fdgvscs44.png"
  },
  "specialGuest": [
    {
      "name": "Magaza",
      "title": "Big Mike",
      "role": "Director",
      "description": "He is the one to direct all the activities. He will be welcome by the president, he is from Dubai, a  very popular man",
      "image": [
        "https://tranzak.me/images/4236534r2fcsf4f.jpg",
        "https://tranzak.me/images/4236534r2fcsf4f.jpg"
      ],
      "country": "Cameroon"
    },
    {
      "name": "Peter and Paul",
      "title": "P-Square",
      "role": "Singers",
      "description": "They will sing on their latest 2022 songs, they are all the qway from Nigeria",
      "image": [
        "https://tranzak.me/images/4236534r2fcsf4f.jpg"
      ],
      "country": "Nigeria"
    }
  ]
}

Sample response


{
    "data": {
        "images": [
            "https://myimage.png",
            "https://myimage.png"
        ],
        "status": true,
        "_id": "63696357e75b212c08c1e728",
        "eventName": "End of year party",
        "startDate": "2022-11-15T08:38:20.195Z",
        "endDate": "2022-11-15T11:38:20.195Z",
        "coverImage": "https://tranzak.me/images/35223mage.png",
        "ticket": [
            {
                "quantity": 7,
                "price": 2000,
                "currency": "XAF",
                "numberSold": 0,
                "isValid": true,
                "_id": "63696357e75b212c08c1e729",
                "ticketType": "VIP",
                "createdBy": "Bimeri Noel"
            },
            {
                "quantity": 15,
                "price": 500,
                "currency": "XAF",
                "numberSold": 0,
                "isValid": true,
                "_id": "63696357e75b212c08c1e72a",
                "ticketType": "Normal",
                "createdBy": "Bimeri Noel"
            }
        ],
        "location": {
            "_id": "63696357e75b212c08c1e72b",
            "location": "Paramount Hotel",
            "country": "Cameroon",
            "region": "South West",
            "town": "Buea",
            "long": 22345,
            "lat": 34235
        },
        "poster": {
            "_id": "63696357e75b212c08c1e72c",
            "name": "bimeri noel",
            "title": "Papa Promo",
            "image": "https://ttazak.me/image/532fdgvscs44.png"
        },
        "specialGuest": [
            {
                "image": [
                    "https://tranzak.me/images/4236534r2fcsf4f.jpg",
                    "https://tranzak.me/images/4236534r2fcsf4f.jpg"
                ],
                "_id": "63696357e75b212c08c1e72d",
                "name": "Magaza",
                "title": "Big Mike",
                "role": "Director",
                "description": "He is the one to direct all the activities. He will be welcome by the president, he is from Dubai, a  very popular man",
                "country": "Cameroon"
            },
            {
                "image": [
                    "https://tranzak.me/images/4236534r2fcsf4f.jpg"
                ],
                "_id": "63696357e75b212c08c1e72e",
                "name": "Peter and Paul",
                "title": "P-Square",
                "role": "Singers",
                "description": "They will sing on their latest 2022 songs, they are all the qway from Nigeria",
                "country": "Nigeria"
            }
        ],
        "eventNum": "T18H8APB41VQ0FEE",
        "createdAt": "2022-11-07T19:58:15.324Z",
        "updatedAt": "2022-11-07T19:58:15.324Z",
        "__v": 0
    },
    "success": true,
    "msg": "TRANSACTION_SUCCESSFUL"
}

Admin request to update event

Endpoint

POST {host}/ji036/v1/booking/event/update

Note: The payload is the same as that of create

Get all event

Endpoint

GET {host}/ji036/v1/booking/event/list

Sample response

{
    "data": [
      {
        "images": [
          "https://myimage1.png",
          "https://myimage2.png",
          "https://myimage3.png"
        ],
        "status": true,
        "_id": "6369039462d67b97f4613fcf",
        "eventName": "Hello Events",
        "startDate": "2022-11-15T08:38:20.195Z",
        "endDate": "2022-11-15T11:38:20.195Z",
        "coverImage": "https://tranzak.me/images/35223mages.png",
        "ticket": [
          {
            "quantity": 8,
            "price": 2000,
            "currency": "XAF",
            "numberSold": 0,
            "isValid": true,
            "_id": "6369039462d67b97f4613fd0",
            "ticketType": "VIP",
            "createdBy": "Bimeri Noel"
          },
          {
            "quantity": 15,
            "price": 500,
            "currency": "XAF",
            "numberSold": 0,
            "isValid": true,
            "_id": "6369039462d67b97f4613fd1",
            "ticketType": "Normal",
            "createdBy": "Bimeri Noel"
          }
        ],
        "location": {
          "_id": "6369039462d67b97f4613fd2",
          "location": "Paramount Hotels",
          "country": "Cameroons",
          "region": "South Wests",
          "town": "Buea",
          "long": 22345,
          "lat": 34235
        },
        "poster": {
          "_id": "6369039462d67b97f4613fd3",
          "name": "bimeri noel",
          "title": "Papa Promo, one in",
          "image": "https://ttazak.me/image/532fdgvscs44images.png"
        },
        "specialGuest": [
          {
            "image": [
              "https://tranzak.me/images/4236534r2fcsf4f.jpg",
              "https://tranzak.me/images/4236534r2fcsf4f.jpg"
            ],
            "_id": "6369039462d67b97f4613fd4",
            "name": "Magaza Noel",
            "title": "Big Mike Monster",
            "role": "Director",
            "description": "He is the one to direct all the activities. He will be welcome by the president, he is from Dubai, a  very popular man",
            "country": "Cameroon"
          },
          {
            "image": [
              "https://tranzak.me/images/4236534r2fcsf4f.jpg",
              "https://tranzak.me/images/4236534r2fcsf4f.jpg",
              "https://tranzak.me/images/4236534r2fcsf4f.jpg"
            ],
            "_id": "6369039462d67b97f4613fd5",
            "name": "Peter and Paul",
            "title": "P-Square",
            "role": "Singers",
            "description": "They will sing on their latest 2022 songs, they are all the qway from Nigeria",
            "country": "Nigeria"
          }
        ],
        "eventNum": "17OYNOVIWZGF3QHM",
        "createdAt": "2022-11-07T13:09:40.013Z",
        "updatedAt": "2022-11-07T18:00:28.653Z",
        "__v": 8
      },
    ],
    "success": true,
    "msg": "TRANSACTION_SUCCESSFUL"
}

Get all Active event

Endpoint

GET {host}/ji036/v1/booking/event/list/active

Sample response

{
    "data": [
        {
            "images": [
                "https://myimage1.png",
                "https://myimage2.png",
                "https://myimage3.png"
            ],
            "status": true,
            "_id": "6369039462d67b97f4613fcf",
            "eventName": "Hello Events",
            "startDate": "2022-11-15T08:38:20.195Z",
            "endDate": "2022-11-15T11:38:20.195Z",
            "coverImage": "https://tranzak.me/images/35223mages.png",
            "ticket": [
                {
                    "quantity": 8,
                    "price": 2000,
                    "currency": "XAF",
                    "numberSold": 0,
                    "isValid": true,
                    "_id": "6369039462d67b97f4613fd0",
                    "ticketType": "VIP",
                    "createdBy": "Bimeri Noel"
                },
                {
                    "quantity": 15,
                    "price": 500,
                    "currency": "XAF",
                    "numberSold": 0,
                    "isValid": true,
                    "_id": "6369039462d67b97f4613fd1",
                    "ticketType": "Normal",
                    "createdBy": "Bimeri Noel"
                }
            ],
            "location": {
                "_id": "6369039462d67b97f4613fd2",
                "location": "Paramount Hotels",
                "country": "Cameroons",
                "region": "South Wests",
                "town": "Buea",
                "long": 22345,
                "lat": 34235
            },
            "poster": {
                "_id": "6369039462d67b97f4613fd3",
                "name": "bimeri noel",
                "title": "Papa Promo, one in",
                "image": "https://ttazak.me/image/532fdgvscs44images.png"
            },
            "specialGuest": [
                {
                    "image": [
                        "https://tranzak.me/images/4236534r2fcsf4f.jpg",
                        "https://tranzak.me/images/4236534r2fcsf4f.jpg"
                    ],
                    "_id": "6369039462d67b97f4613fd4",
                    "name": "Magaza Noel",
                    "title": "Big Mike Monster",
                    "role": "Director",
                    "description": "He is the one to direct all the activities. He will be welcome by the president, he is from Dubai, a  very popular man",
                    "country": "Cameroon"
                },
                {
                    "image": [
                        "https://tranzak.me/images/4236534r2fcsf4f.jpg",
                        "https://tranzak.me/images/4236534r2fcsf4f.jpg",
                        "https://tranzak.me/images/4236534r2fcsf4f.jpg"
                    ],
                    "_id": "6369039462d67b97f4613fd5",
                    "name": "Peter and Paul",
                    "title": "P-Square",
                    "role": "Singers",
                    "description": "They will sing on their latest 2022 songs, they are all the qway from Nigeria",
                    "country": "Nigeria"
                }
            ],
            "eventNum": "17OYNOVIWZGF3QHM",
            "createdAt": "2022-11-07T13:09:40.013Z",
            "updatedAt": "2022-11-07T18:00:28.653Z",
            "__v": 8
        },
        {
            "images": [
                "https://myimage.png",
                "https://myimage.png"
            ],
            "status": true,
            "_id": "63695c866fafd62bdc0303b6",
            "eventName": "Hello Event",
            "startDate": "2022-11-15T08:38:20.195Z",
            "endDate": "2022-11-15T11:38:20.195Z",
            "coverImage": "https://tranzak.me/images/35223mage.png",
            "location": {
                "_id": "63695c866fafd62bdc0303b7",
                "location": "Paramount House",
                "country": "Cameroon",
                "region": "South West",
                "town": "Buea",
                "long": 22345,
                "lat": 34235
            },
            "poster": {
                "_id": "63695c866fafd62bdc0303b8",
                "name": "bimeri noel",
                "title": "Papa Promo",
                "image": "https://ttazak.me/image/532fdgvscs44.png"
            },
            "eventNum": "K3R1PSNRTQD599DE",
            "ticket": [
                {
                    "quantity": 8,
                    "price": 2000,
                    "currency": "XAF",
                    "numberSold": 0,
                    "isValid": true,
                    "_id": "6369039462d67b97f4613fd0",
                    "ticketType": "VIP",
                    "createdBy": "Bimeri Noel"
                }
            ],
            "specialGuest": [],
            "createdAt": "2022-11-07T19:29:10.661Z",
            "updatedAt": "2022-11-07T19:35:01.688Z",
            "__v": 1
        }
    ],
    "success": true,
    "msg": "TRANSACTION_SUCCESSFUL"
}

Get event by id

Endpoint

GET {host}/ji036/v1/booking/event/list/{eventId}

Sample response

{
  "data": [
    {
      "images": [
        "https://myimage1.png",
        "https://myimage2.png",
        "https://myimage3.png"
      ],
      "status": true,
      "_id": "6369039462d67b97f4613fcf",
      "eventName": "Hello Events",
      "startDate": "2022-11-15T08:38:20.195Z",
      "endDate": "2022-11-15T11:38:20.195Z",
      "coverImage": "https://tranzak.me/images/35223mages.png",
      "ticket": [
        {
          "quantity": 8,
          "price": 2000,
          "currency": "XAF",
          "numberSold": 0,
          "isValid": true,
          "_id": "6369039462d67b97f4613fd0",
          "ticketType": "VIP",
          "createdBy": "Bimeri Noel"
        },
        {
          "quantity": 15,
          "price": 500,
          "currency": "XAF",
          "numberSold": 0,
          "isValid": true,
          "_id": "6369039462d67b97f4613fd1",
          "ticketType": "Normal",
          "createdBy": "Bimeri Noel"
        }
      ],
      "location": {
        "_id": "6369039462d67b97f4613fd2",
        "location": "Paramount Hotels",
        "country": "Cameroons",
        "region": "South Wests",
        "town": "Buea",
        "long": 22345,
        "lat": 34235
      },
      "poster": {
        "_id": "6369039462d67b97f4613fd3",
        "name": "bimeri noel",
        "title": "Papa Promo, one in",
        "image": "https://ttazak.me/image/532fdgvscs44images.png"
      },
      "specialGuest": [
        {
          "image": [
            "https://tranzak.me/images/4236534r2fcsf4f.jpg",
            "https://tranzak.me/images/4236534r2fcsf4f.jpg"
          ],
          "_id": "6369039462d67b97f4613fd4",
          "name": "Magaza Noel",
          "title": "Big Mike Monster",
          "role": "Director",
          "description": "He is the one to direct all the activities. He will be welcome by the president, he is from Dubai, a  very popular man",
          "country": "Cameroon"
        },
        {
          "image": [
            "https://tranzak.me/images/4236534r2fcsf4f.jpg",
            "https://tranzak.me/images/4236534r2fcsf4f.jpg",
            "https://tranzak.me/images/4236534r2fcsf4f.jpg"
          ],
          "_id": "6369039462d67b97f4613fd5",
          "name": "Peter and Paul",
          "title": "P-Square",
          "role": "Singers",
          "description": "They will sing on their latest 2022 songs, they are all the qway from Nigeria",
          "country": "Nigeria"
        }
      ],
      "eventNum": "17OYNOVIWZGF3QHM",
      "createdAt": "2022-11-07T13:09:40.013Z",
      "updatedAt": "2022-11-07T18:00:28.653Z",
      "__v": 8
    }
  ],
  "success": true,
  "msg": "TRANSACTION_SUCCESSFUL"
}

Book a ticket

Endpoint

POST {host}/ji036/v1/transaction/ticket

Sample request

{
    "event_id": "trh56hbth5bt",
    "ticket_id": "6gw6hb5",
    "amount":3000,
    "currency":"XAF",
    "currencyCode":"XAF",
    "recipientName":"",
    "appId":"fe5gw5b5",
    "orgId":"4sh5v5g5gq",
    "userId":"v34tgg4gbt",
    "recipientAccountNumber":"45gghg34f4f",
    "paymentMethod":"MTN MoMo",
    "serviceType":1,
    "serviceName":"event Name",
    "serviceRef":"trh56hbth5bt",
    "remark":"",
    "version":"",
    "scopeId":"",
    "sex":1
}

Sample response

{
  "data": {
    "currencyCode": "XAF",
    "serviceType": 1,
    "status": 10,
    "version": null,
    "sex": 1,
    "_id": "6372939e243bc01e8cdecb8e",
    "amount": "3000",
    "currency": "XAF",
    "recipientName": "",
    "appId": "fe5gw5b5",
    "orgId": "4sh5v5g5gq",
    "userId": "v34tgg4gbt",
    "recipientAccountNumber": "45gghg34f4f",
    "paymentMethod": "MTN MoMo",
    "serviceName": "event Name",
    "serviceRef": "trh56hbth5bt",
    "remark": "",
    "scopeId": "",
    "transactionNum": "9I47CZZ3M41X77WN",
    "createdAt": "2022-11-14T19:14:38.175Z",
    "updatedAt": "2022-11-14T19:14:38.175Z",
    "__v": 0
  },
  "success": true,
  "msg": "TRANSACTION_SUCCESSFUL"
}

Get transaction byId

Endpoint

GET {host}/ji036/v1/transaction/getById/{transactionId}

Sample response

{
    "data": [
        {
            "currencyCode": "XAF",
            "serviceType": 1,
            "status": 10,
            "version": null,
            "sex": 1,
            "_id": "6372847ef478ee2e2871aa34",
            "amount": "0",
            "currency": "XAF",
            "recipientName": "bimeri noel",
            "appId": "",
            "orgId": "tztstmzud2s36vpf",
            "userId": "68f8c53b42ef47e38664da826dd07a86",
            "recipientAccountNumber": "",
            "paymentMethod": "MTN MoMo",
            "serviceName": "Hello Event",
            "serviceRef": "63726c10b849a76190d7c04e",
            "remark": "",
            "scopeId": "",
            "transactionNum": "SUI696YOK79TD2JH",
            "createdAt": "2022-11-14T18:10:06.517Z",
            "updatedAt": "2022-11-14T18:10:06.517Z",
            "__v": 0
        }
    ],
    "success": true,
    "msg": "TRANSACTION_SUCCESSFUL"
}

Get users latest transactions

Endpoint

GET {host}/ji036/v1/transaction/latest-by-user

Sample response

{
    "data": [
        {
            "currencyCode": "XAF",
            "serviceType": 1,
            "status": 10,
            "version": null,
            "sex": 1,
            "_id": "6372847ef478ee2e2871aa34",
            "amount": "0",
            "currency": "XAF",
            "recipientName": "bimeri noel",
            "appId": "",
            "orgId": "tztstmzud2s36vpf",
            "userId": "68f8c53b42ef47e38664da826dd07a86",
            "recipientAccountNumber": "",
            "paymentMethod": "MTN MoMo",
            "serviceName": "Hello Event",
            "serviceRef": "63726c10b849a76190d7c04e",
            "remark": "",
            "scopeId": "",
            "transactionNum": "SUI696YOK79TD2JH",
            "createdAt": "2022-11-14T18:10:06.517Z",
            "updatedAt": "2022-11-14T18:10:06.517Z",
            "__v": 0
        }
    ],
    "success": true,
    "msg": "TRANSACTION_SUCCESSFUL"
}

Get users transactions

Endpoint

GET {host}/ji036/v1/transaction/mine

Sample response

{
    "data": {
        "list": [
            {
                "currencyCode": "XAF",
                "serviceType": 1,
                "status": 10,
                "version": null,
                "sex": 1,
                "_id": "637295ca243bc01e8cdecb93",
                "amount": "2000",
                "currency": "XAF",
                "recipientName": "bimeri noel",
                "appId": "",
                "orgId": "tztstmzud2s36vpf",
                "userId": "68f8c53b42ef47e38664da826dd07a86",
                "recipientAccountNumber": "",
                "paymentMethod": "MTN MoMo",
                "serviceName": "Hello Event",
                "serviceRef": "637266a1946e005e004d757f",
                "remark": "",
                "scopeId": "",
                "transactionNum": "Y2TBT8ECC7DPCRGH",
                "createdAt": "2022-11-14T19:23:54.910Z",
                "updatedAt": "2022-11-14T19:23:54.910Z",
                "__v": 0
            },
          {
            ....
          }
        ],
        "total": 19,
        "totalPages": 2,
        "hasMore": true,
        "currentPage": 1
    },
    "success": true,
    "msg": "TRANSACTION_SUCCESSFUL"
}

cortex

Account

Account management. Displays list of standard accounts : PRIMARY - the "pseudo wallet" account BONUS - that stores the bonus offered by the system Merchant's default - the merchant default account (applicable only for merchants )

Endpoint

GET /v1/account/list

Filter parameters

None

Response

Account list

{
    "data": {
        "list": [
            {
                "id": "243",
                "currencyCode": "XAF",
                "type": "1",
                "balanceAmount": 1000063226682,
                "name": "",
                "description": "",
                "avatarUrl": null,
                "label": "TYPE_PRIMARY",
                "isActive": "1",
                "createdAt": "2021-10-20 16:23:12"
            },
            {
                "id": "245",
                "currencyCode": "XAF",
                "type": "4",
                "balanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": null,
                "label": "TYPE_BONUS_REWARD",
                "isActive": "1",
                "createdAt": "2021-10-20 16:23:12"
            },
            {
                "id": "247",
                "currencyCode": "XAF",
                "type": "5",
                "balanceAmount": 2893929,
                "name": "",
                "description": "",
                "avatarUrl": null,
                "label": "TYPE_MERCHANT_DEFAULT",
                "isActive": "1",
                "createdAt": "2021-10-20 16:23:12"
            }
        ]
    },
    "dateTime": "2021-10-28T09:38:57+00:00",
    "duration": "0.04s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

Bonus Rewards

Bonus reward management interface (for end-user)

Status Codes

    const STATUS_PENDING_ACCEPTANCE = 1 ;
    const STATUS_ACTIVE = 2 ; //active 
    const STATUS_COMPLETED = 3; //Bonus used up
    const STATUS_INACTIVE = -1 ;

List Bonus

Displays list of available bonus rewards Only bonus in PENDING or ACTIVE state will be shown.

Endpoint

GET /v1/bonus/list

Request Body params

Parameter Type required Description
id int true ID of reward
status int true status . STATUS_PENDING_ACCEPTANCE = 1 ; STATUS_ACTIVE = 2 ; STATUS_COMPLETED = 3; STATUS_INACTIVE = -1 ;

Response

Bonus reward list

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "10",
                "bonusPlanId": "1",
                "balance": 754,
                "allocatedAmount": 754,
                "status": "1",
                "orgUserId": "23",
                "createdByUserId": "23",
                "expiresAt": "2022-04-30 02:41:59",
                "createdAt": "2022-03-14 19:41:59",
                "currencyCode": "XAF",
                "statusText": "pending acceptance",
                "name": "Cool bonus planssssssss",
                "description": "Description of some cool bonus plan",
                "typeText": "merchant payment"
            },
            {
                "id": "9",
                "bonusPlanId": "1",
                "balance": 733,
                "allocatedAmount": 733,
                "status": "1",
                "orgUserId": "23",
                "createdByUserId": "23",
                "expiresAt": "2022-04-30 02:41:58",
                "createdAt": "2022-03-14 19:41:58",
                "currencyCode": "XAF",
                "statusText": "pending acceptance",
                "name": "Cool bonus planssssssss",
                "description": "Description of some cool bonus plan",
                "typeText": "merchant payment"
            },
            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 9
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-14T21:22:43+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.092s",
        "userId": 23,
        "type": 3,
        "orgUserId": 23,
        "roleId": 1000,
        "roleLabel": "owner",
        "firstName": null,
        "displayName": "tz23"
    }
}

Activate/Accept Bonus

Confirms a bonus reward. Upon confirmation, the reward will be made available for use. Only bonus rewards with status STATUS_ACTIVE may be used to discount transaction.

Endpoint

POST /v1/bonus/list

Request Body params

Parameter Type required Description
id int true ID of reward

Response

The response shown in the view section

View details of a bonus reward

Confirms a bonus reward. Upon confirmation, the reward will be made available for use. Only bonus rewards with status STATUS_ACTIVE may be used to discount transaction.

Endpoint

GET /v1/bonus/view?id=<ID>

Request Body params

Parameter Type required Description
id int true ID of reward

Response

{
    "id": 1,
    "bonusPlanId": 1,
    "balance": 0,
    "allocatedAmount": 530,
    "status": "3",
    "expiresAt": "2022-04-30 01:37:07",
    "createdAt": "2022-03-14 18:37:08",
    "currencyCode": "XAF",
    "statusText": "used up",
    "name": "Cool bonus planssssssss",
    "description": "Description of some cool bonus plan",
    "type": "merchant payment"
}

Customers

Merchant interface to manage and interact with their customers. Customers are automatically created after completion of a financial transaction. Merchants may not be allowed to directly add users as customers of theirs.

Update a customer's info

Updates customer info

Endpoint

POST /v1/customer/update

Request Body Parameters

Parameter Type required Description
_id String (100) true unique customer ID
displayName String(100) false The display name
note String(200) false note
{
    "_id": "CUSJ08ELDVUXLVYR",
    "displayName" : "A basssddd customer"  ,
    "note" : "This is an awesome customer! Send s"
}

Response

The response data is shown in the VIEW section

See the [view] section

View

Displays customer info

Endpoint

GET /v1/customer/view?_id=customerId

Request Body Parameters

Parameter Type required Description
_id String (100) true unique customer ID

Response

The customer data

    "data": {
        "_id": "CUS7A6MU8W8EPYGB",
        "acquisitionMethod": "1",
        "acquisitionMethodText": "purchase",
        "allTimePoints": "90",
        "avatarUrl": null,
        "createdAt": "2022-04-06 13:39:30",
        "currencyCode": "XAF",
        "currentPoints": "90",
        "displayName": null,
        "note": "",
        "totalInboundAmount": 9000,
        "totalInboundTransactionCount": "1",
        "totalOutboundAmount": 0,
        "totalOutboundTransactionCount": "0",
        "updatedAt": "2022-04-06 14:39:54",
        "userDisplayName": null,
        "userId": "sys4o2ut70skfde6"
    },

List customers

Lists customers

Endpoint

GET /v1/customer/list

Response

Listing

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "CUS7A6MU8W8EPYGB",
                "displayName": "A basssddd customer",
                "note": "A big spender. Spender!",
                "acquisitionMethod": "1",
                "totalInboundAmount": 9000,
                "totalOutboundAmount": 0,
                "totalInboundTransactionCount": "1",
                "totalOutboundTransactionCount": "0",
                "currentPoints": "90",
                "allTimePoints": "90",
                "createdAt": "2022-04-06 13:39:30",
                "updatedAt": "2022-04-06 16:06:09",
                "acquisitionMethodText": "purchase",
                "currencyCode": "XAF",
                "userId": "sys4o2ut70skfde6",
                "avatarUrl": null,
                "userDisplayName": null
            },
            {
                "_id": "CUSGXPQ7A3EB6X6Z",
                "displayName": null,
                "note": "",
                "acquisitionMethod": "1",
                "totalInboundAmount": 16800,
                "totalOutboundAmount": 0,
                "totalInboundTransactionCount": "1",
                "totalOutboundTransactionCount": "0",
                "currentPoints": "163",
                "allTimePoints": "163",
                "createdAt": "2022-04-05 17:44:49",
                "updatedAt": "2022-04-06 12:19:40",
                "acquisitionMethodText": "purchase",
                "currencyCode": "XAF",
                "userId": "845f5c7c0a7249c69e689054e1634b15",
                "avatarUrl": "null",
                "userDisplayName": null
            },
            {
                "_id": "CUSW2BVF5EL6Q9DP",
                "displayName": "Freddy",
                "note": "",
                "acquisitionMethod": "1",
                "totalInboundAmount": 199,
                "totalOutboundAmount": 0,
                "totalInboundTransactionCount": "1",
                "totalOutboundTransactionCount": "0",
                "currentPoints": "2",
                "allTimePoints": "2",
                "createdAt": "2022-04-05 15:41:57",
                "updatedAt": "2022-04-05 16:45:37",
                "acquisitionMethodText": "purchase",
                "currencyCode": "XAF",
                "userId": "5af45258d73640438aa0ec4e444f3439",
                "avatarUrl": "null",
                "userDisplayName": "Freddy"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 3
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-04-06T15:08:08+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.039s",
        "userId": 22,
        "_userId": "tz22",
        "scopeId": null,
        "type": 3,
        "orgUserId": 22,
        "roleId": 1000,
        "roleLabel": "owner",
        "firstName": null,
        "displayName": "tz22"
    }
}

Other actions

The following are supported actions :

For search , use the VIEW interface and pass the customerId in the param

Dashboard

Displays the merchant dashboard stats

Main Dashboard

Endpoint

GET /v1/dashboard/index

Filter parameters

None

Response

Merchant sales and other stats

{
    "genStartTime": 66342990717678,
    "accounts": {
        "currencyCode": "XAF",
        "balance": {
            "primary": 999999998136934,
            "merchant": 130000
        },
        "merchantSubAccounts": "1"
    },
    "sales": {
        "amount": {
            "allTime": 130000,
            "last30Days": 130000,
            "last7Days": 130000,
            "last3Days": 130000,
            "last24Hours": 130000,
            "today": 130000
        },
        "volume": {
            "allTime": "13",
            "last30Days": "13",
            "last7Days": "13",
            "last3Days": "13",
            "last24Hours": "13",
            "today": "13"
        },
        "peakAmount": {
            "allTime": 10000,
            "last30Days": 10000,
            "last7Days": 10000,
            "last3Days": 10000,
            "last24Hours": 10000,
            "today": 10000
        },
        "timeSeries": {
            "allTime": [
                "10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000",
                "2021-11-24 18:35:49,2021-11-24 18:35:52,2021-11-24 18:35:52,2021-11-24 18:35:53,2021-11-24 18:35:53,2021-11-24 18:35:54,2021-11-24 18:35:54,2021-11-24 18:35:55,2021-11-24 18:35:55,2021-11-24 18:35:56,2021-11-24 18:35:56,2021-11-24 18:35:57,2021-11-24 18:35:58"
            ],
            "last30Days": {
                "amount": [
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000
                ],
                "transactionTime": [
                    "2021-11-24 18:35:49",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:57",
                    "2021-11-24 18:35:58"
                ]
            },
            "last7Days": {
                "amount": [
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000
                ],
                "transactionTime": [
                    "2021-11-24 18:35:49",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:57",
                    "2021-11-24 18:35:58"
                ]
            },
            "last3Days": {
                "amount": [
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000
                ],
                "transactionTime": [
                    "2021-11-24 18:35:49",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:57",
                    "2021-11-24 18:35:58"
                ]
            },
            "last24Hours": {
                "amount": [
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000,
                    10000
                ],
                "transactionTime": [
                    "2021-11-24 18:35:49",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:52",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:53",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:54",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:55",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:56",
                    "2021-11-24 18:35:57",
                    "2021-11-24 18:35:58"
                ]
            }
        }
    },
    "outbound": {
        "amount": {
            "allTime": 7779930,
            "last30Days": 7779930,
            "last7Days": 7779930,
            "last3Days": 7779930,
            "last24Hours": 7779930,
            "today": 7779930
        },
        "transfers": {
            "amount": {
                "allTime": 0,
                "last30Days": 0,
                "last7Days": 0,
                "last3Days": 0,
                "last24Hours": 0,
                "today": 0
            }
        },
 "refunds": {
                "volume": {
                    "allTime": 0,
                    "last30Days": 0,
                    "last7Days": 0,
                    "last3Days": 0,
                    "last24Hours": 0,
                    "today": 0
                }
            }
    },
    "customer": {
        "allTime": "1",
        "last30Days": "1",
        "last7Days": "1",
        "last3Days": "1",
        "last24Hours": "1",
        "today": "1"
    },
    "createdAt": "2021-11-24 17:40:20",
    "genEndTime": 66343060053763,
    "netTime": 66342993710772280,
    "merchantUserId": 87
}

Generate Stats

This should be called to refresh or generate/update the dash stats. Note that the stat generation is carried out asynchronously.

Endpoint

GET /v1/dashboard/generate

Filter parameters

None

Response

Success or failure message

{
    "data": "Request successfully submitted",
    "success": true,
    "dateTime": "2021-11-22T20:55:25+00:00",
    "duration": "0.248s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Introduction to Cortex

Core Transaction Engine X, or Cortex for short, is the payment processing engine for Tranzak.

Base URL

The Base URL is staging-api.tranzak.me/fapi/

Request Method

For consistency, all requests that will create/update data in the backend shall be accessed via https POST requests. Read access will be carried out via https GET .

Authentication

Authentication will follow the same guideline as provided in the internal API development. All authentication tokens will be created by the user center and passed on in every request to the Cortex backend.

Invoice

Merchant invoice

Status Codes

    const STATUS_DRAFT =  1 ;
    const STATUS_PENDING =  2 ;  //Active but not paid (unpaid)
    const STATUS_PARTIALLY_PAID = 3 ;  //FULLY paid
    const STATUS_PAID = 4 ;  //FULLY paid
    const STATUS_CANCELLED = -1 ; //Cancelled

Create (from scratch)

Create an invoice from scratch

Endpoint

POST /v1/invoice/create

Request Body Parameters

Parameter Type required Description
title String true Invoice title
currencyCode String true the invoice currency code. Defaults to user's currency code
userInvoiceRef String false custom invoice ref
totalTax String false tax if applicable. default : 0
billToName String false Name of invoice
billToAddress String false custom invoice ref
billToEmail String false custom invoice ref
memo String false Memo
activateUponCreation String false Make invoice available for payment
clientNote String false payer's note
items String true JSON representation of the items (see request body)
receivingAccountId Number false The MERCHANT account type account ID that the invoice will be paid into. Default : merchant default account
issueDate String false Invoice date of issue
dueDate String false Invoice due date
acceptPartialPayments Boolean false Partial payments accepted?
{
    "invoiceId" : 2,
    "userInvoiceRef" : "210ssssssssssss000" ,
    "title" : "invoice tiles" ,
    "totalTax" : 100,
    "billToName" : "Tranzak Descriptinaria" ,
    "billToAddress" : "Rue Druot" ,
    "billToEmail" : "trrr@tranzak.net" ,
    "memo" : "my memo" ,
    "type" : 1,
    "clientNote" : "Client note is cool" ,
    "acceptPartialPayments" : 1,
    "activateUponCreation" : 1,
    "receivingAccountId" : "247" ,
    
"items" : [
    {
        "itemDescription" : "some item" ,
        "unitPrice" : 1000,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item2" ,
        "unitPrice" : 100,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item2" ,
        "unitPrice" : 100,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item3" ,
        "unitPrice" : 100,
        "quantity" : 2
    }
]
 
 
}

Response

See VIEW section

Upload an invoice

Uploads an invoice file

Request body

Parameter Type required Description
title String true Invoice title
fileUrl String true file URL
amount String true the amount (as shown in the invoice file)
currencyCode String true the invoice currency code. Defaults to user's currency code
userInvoiceRef String false custom invoice ref
totalTax String false tax if applicable. default : 0
billToName String false Name of invoice
billToAddress String false custom invoice ref
billToEmail String false custom invoice ref
memo String false Memo
activateUponCreation String false Make invoice available for payment
clientNote String false payer's note
receivingAccountId Number false The MERCHANT account type account ID that the invoice will be paid into. Default : merchant default account
issueDate String false Invoice date of issue
dueDate String false Invoice due date
acceptPartialPayments Boolean false Partial payments accepted?

Update

Updates model

Endpoint

POST /v1/invoice/update

Request Body Parameters

Parameter Type required Description
_id String true GC code

See [[CREATE]] for other params

Response

See the VIEW section

View

Shows data

Endpoint

GET /v1/invoice/view?_id=INVOICE_ID

Request Body Parameters

Issue a GET request

Response

{
    "data": {
        "id": "20",
        "key": "INVSBT22IQ4AFVJYHEPIVGW",
        "userId": "87",
        "accountId": null,
        "userInvoiceRef": "210000",
        "title": "invoice tiles",
        "totalTax": "100",
        "subtotal": "2600",
        "currencyCode": "XAF",
        "type": "1",
        "issueDate": "2021-10-24",
        "dueDate": "2021-10-24",
        "billToName": "Tranzak Descriptinaria",
        "billToAddress": "Rue Druot",
        "billToEmail": "trrr@tranzak.net",
        "billToUserId": null,
        "memo": "my memo",
        "clientNote": "Client note is cool",
        "acceptPartialPayments": "1",
        "status": "2",
        "cancellationNote": null,
        "hasInternalPayment": "0",
        "hasExternalPayment": "0",
        "totalExternalPaymentAmount": "0",
        "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
        "fileUrl": null,
        "postedAt": null,
        "createdAt": "2021-10-24 14:18:12",
        "updatedAt": null,
        "account": null
    },
    "dateTime": "2021-10-24T13:18:12+00:00",
    "duration": "0.047s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

List

List items

Endpoint

GET /v1/invoice/list

Filter parameters

Parameter Type required Description
status Number true [1 - draft, 2- pending , 3-active , 4-closed , 5-cancelled , 6-suspended]

Response

Listing

{
    "data": {
        "list": [
            {
                "id": "23",
                "key": "INVTJIR09U0P90BQC2DGO8E",
                "userId": "87",
                "accountId": null,
                "userInvoiceRef": "210000",
                "title": "invoice tiles",
                "totalTax": "100",
                "subtotal": "2600",
                "currencyCode": "XAF",
                "type": "1",
                "issueDate": "2021-10-24",
                "dueDate": "2021-10-24",
                "billToName": "Tranzak Descriptinaria",
                "billToAddress": "Rue Druot",
                "billToEmail": "trrr@tranzak.net",
                "billToUserId": null,
                "memo": "my memo",
                "clientNote": "Client note is cool",
                "acceptPartialPayments": "1",
                "status": "2",
                "cancellationNote": null,
                "hasInternalPayment": "0",
                "hasExternalPayment": "0",
                "totalExternalPaymentAmount": "0",
                "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                "fileUrl": null,
                "postedAt": null,
                "createdAt": "2021-10-24 14:23:35",
                "updatedAt": null,
                "account": null
            },
            {
                "id": "22",
                "key": "INVTXNEGDROC3DBMKJVQXQ3",
                "userId": "87",
                "accountId": null,
                "userInvoiceRef": "210000",
                "title": "invoice tiles",
                "totalTax": "100",
                "subtotal": "2600",
                "currencyCode": "XAF",
                "type": "1",
                "issueDate": "2021-10-24",
                "dueDate": "2021-10-24",
                "billToName": "Tranzak Descriptinaria",
                "billToAddress": "Rue Druot",
                "billToEmail": "trrr@tranzak.net",
                "billToUserId": null,
                "memo": "my memo",
                "clientNote": "Client note is cool",
                "acceptPartialPayments": "1",
                "status": "2",
                "cancellationNote": null,
                "hasInternalPayment": "0",
                "hasExternalPayment": "0",
                "totalExternalPaymentAmount": "0",
                "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                "fileUrl": null,
                "postedAt": null,
                "createdAt": "2021-10-24 14:23:34",
                "updatedAt": null,
                "account": null
            },
            
        ],
        "totalItems": 23,
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "currentPage": 1,
        "hasMore": true
    },
    "dateTime": "2021-10-24T13:23:53+00:00",
    "duration": "0.05s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

Add a payment

Adds a non-Tranzak payment using some other source

Endpoint

POST /v1/invoice/add-payment

Filter parameters

Parameter Type required Description
_id Number true invoice ID
amount Number true amount in invoice currency
paymentSourceId Number true payment source ID 2 => PAYMENT_SOURCE_CASH , 3 => PAYMENT_SOURCE_OTHER_MEANS
note Number true a note
{
    "_id" : "IV375WEJ3BEBPRJ4ZBS3",
    "amount" : 1   ,
    "paymentSourceId" : 2,
    "note" : "We added payment  !"
  
}

Response

See VIEW-PAYMENT section

View Payment

Views an invoice payment

Endpoint GET /invoice/view-payment?_id=PAYMENT_ID

{
    "data": {
        "_id": "IPQEZD1Z61RRQ78KJJMS",
        "amount": 1,
        "paymentId": null,
        "paymentSourceId": 2,
        "note": "We added payment  !",
        "createdAt": "2021-10-30 17:49:21",
        "invoice": {
            "_id": "IVOXIV5U4LYR5DY58EBI",
            "userInvoiceRef": "5555",
            "title": "invoice tiles",
            "totalTax": 100,
            "subtotal": 8000,
            "totalPaid": 36,
            "currencyCode": "XAF",
            "type": 1,
            "issueDate": "2021-10-30",
            "dueDate": "2021-10-30",
            "billToName": "Tranzak Descriptinaria",
            "billToAddress": "Rue Druot",
            "billToEmail": "trrr@tranzak.net",
            "billToUserId": null,
            "memo": "my memo",
            "clientNote": "Client note is cool",
            "acceptPartialPayments": 1,
            "status": 3,
            "cancellationNote": null,
            "hasInternalPayment": 0,
            "hasExternalPayment": 1,
            "totalExternalPaymentAmount": 36,
            "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":1000}]",
            "fileUrl": null,
            "submittedAt": null,
            "createdAt": "2021-10-30 17:49:21",
            "updatedAt": "2021-10-30 18:49:01",
            "receivingAccount": {
                "name": "",
                "description": "",
                "id": 247,
                "type": "Merchant account (Default)"
            },
            "statusText": "partially paid",
            "merchant": {
                "_id": "TZONL8EHWO00IGGY",
                "displayName": "tz87",
                "countryCode": "CM",
                "verifiedName": null
            }
        },
        "paymentSourceText": "paid via cash"
    },
    "dateTime": "2021-10-30T17:49:21+00:00",
    "duration": "0.058s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

List Payments

List payments made to invoices. Use filters to filter through list

Endpoint GET /invoice/list-payments

Request Body (filters)

Parameter Type required Description
_id String false Payment ID
invoiceId String false _id of invoice
paymentId String false payment Id
paymentSourceId String false source ID

RESPONSE

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "IP5NU8BZZ3XLIRXNW4W7",
                "invoiceId": "IV22041519WYGAK1KD3C",
                "amount": 100,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "Payment via cash",
                "createdAt": "2022-04-15 12:35:52",
                "currencyCode": "XAF",
                "paymentSourceText": "paid via cash"
            },
            {
                "_id": "IPCRAKBRG8GBEE88CIFZ",
                "invoiceId": "IV22041519WYGAK1KD3C",
                "amount": 100,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "Payment via cash",
                "createdAt": "2022-04-15 12:35:51",
                "currencyCode": "XAF",
                "paymentSourceText": "paid via cash"
            },
            {
                "_id": "IPZHFWEO8YTIS6PMWZ2H",
                "invoiceId": "IV22041519WYGAK1KD3C",
                "amount": 100,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "Payment via cash",
                "createdAt": "2022-04-15 12:35:51",
                "currencyCode": "XAF",
                "paymentSourceText": "paid via cash"
            },
            {
                "_id": "IPKQS2NAXKN8VFQVITBV",
                "invoiceId": "IV22041519WYGAK1KD3C",
                "amount": 100,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "Payment via cash",
                "createdAt": "2022-04-15 12:35:50",
                "currencyCode": "XAF",
                "paymentSourceText": "paid via cash"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 4
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-04-15T12:38:39+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.046s",
        "userId": 25,
        "_userId": "845f5c7c0a7249c69e689054e1634b15",
        "scopeId": "stebnuufw93vrs",
        "type": 2,
        "orgUserId": 25,
        "roleId": 1000,
        "roleLabel": "owner",
        "firstName": null,
        "displayName": null
    }
}

Other actions

Details

Displays invoice info. This interface is meant to be accessed by the public to view (and act on) an invoice.

Endpoint

GET /v1/invoice/details?_id=INVOICE_ID

Request Body Parameters

Issue a GET request

Response

See VIEW section

Cancel

Cancels an invoice

Endpoint

POST /v1/invoice/cancel

Submit

Submits an invoice in draft status and make it available to receive payment

Endpoint

POST /v1/invoice/submit

Create Transaction

Creates a transaction - to be called by the payer

Endpoint

POST /v1/invoice/create-transaction

Mark as paid

Marks the invoice as paid

Endpoint

POST /v1/invoice/mark-as-paid

Request body params

Parameter Type required Description
_id String true Payment ID
paymentSourceId String true _id of invoice
note String true payment Id
{
  "_id": "IVRYCSMGIEW2OO6TMUPY",
   "paymentSourceId" : 1,
   "note" : "We closed this invoice !"
}

Move to draft

Moves an UNPAID invoice to draft status so that it can be edited

Endpoint

POST /v1/invoice/move-to-draft

Request Body

{
    "_id": "IVRYCSMGIEW2OO6TMUPY"
}

Lucky Money (Merchant)

This is the lucky money interface.

Status Codes

    const STATUS_PENDING =  1 ; //Not authorized (payment not made)
    const STATUS_ACTIVE = 2 ; //Paid and available for picking    
    const STATUS_COMPLETED = 4; // ALL Draws successfully completed    
    const STATUS_CANCELLED = -1; // Unpaid - cancelled
    const STATUS_CLOSED = -2 ; //LM expired with some draws not claimed. Campaign closed
    const STATUS_REFUNDED = -3; //Refund was manually triggered

EVENTS (Via Webhook)

    const WH_EVENT_LUCKY_MONEY_TRANSACTION_COMPLETED = 'LUCKYMONEY.TRANSACTION.COMPLETED' ;
    const WH_EVENT_LUCKY_MONEY_LUCKY_DRAW = 'LUCKYMONEY.LUCKYDRAW' ;

Creates a LM Transaction

Creates a LM and returns the transaction payload which will be used for authorization. See [[Transaction]] section

Endpoint

POST /fapi/lucky-money/create-transaction

Request Body Parameters

Parameter Type required Description
luckyMoneyId String true The unique lucky money ID
amount Number true Amount (the default currency = currency of the user)
currencyCode Number false the currency code e.g XAF, USD. (the currency = currency of the current user)
appId String true the appId (if the LM is created by an app). Callbacks will be sent to the app (via webhooks)
payerMessage Number false A custom message from the payer.
expiresAt date false The expiry date. LM will not be allocated after the expiry date is reached
isBonusReward Boolean true If the LM shall be allocated as bonus
bonusValidityHours Number false usable if isBonusReward=true : How long the allocated bonus should last in hours (e.g 1, 24, 72)
{
    "luckyMoneyId": "sasaseefbhfghjfg",
    "amount": 1000,
    "currencyCode": "XAF",
    "appId": "apwbmpg97os2ga",
    "payerMessage": "Thank you for your awesomeness",
    "isBonusReward": 1,
    "bonusValidityHours": 72,
    "expiresAt": "2022-12-19 13:45:11"
}

Response

Upon creation, a transaction object is created and returned for authorization. The LM ID can be obtained from the serviceId attribute in the transaction payload.

See the TRANSACTION VIEW page

View

Displays LM data

Endpoint

GET/fapi//lucky-money/view?id=[[LM_ID]]

Request Body Parameters

Parameter Type required Description
id String true The LM Id

Response

LM Data

{
    "data": {
         "id": "ssssasassa",
        "orgId": "tzi38oovovoz5uq9",
        "createdByUserId": "buhvz1fqjux1l9mc",
        "amount": 1000,
        "currencyCode": "XAF",
        "paymentId": "TX22121912C83QHMOMBI",
        "status": 4,
        "payerMessage": null,
        "createdAt": "2022-12-19 15:05:51",
        "isBonusReward": null,
        "appId": "apwbmpg97os2ga",
        "balance": "0",
        "refundId": null,
        "bonusValidityHours": 72,
        "expiresAt": "2022-12-24 13:45:11",
        "lastUpdatedAt": null,
 
        "lastDrawCompletedAt": "2022-12-19 15:06:25.822592",
 
        "statusText": "terminé",
        "drawTimeInSeconds": 34,
        "drawTimeInHumanTime": "34 seconds after"
    },
    "success": true     
}

View With More details

Displays LM data with extra calculated data (e.g totalAllocatedAmount )

Endpoint

GET/fapi//lucky-money/details?id=[[LM_ID]]

Request Body Parameters

Parameter Type required Description
id String true The LM Id

Response

LM Data

{
    "data": {
        "id": "LM12sssss3",
        "orgId": "tzi38oovovoz5uq9",
        "createdByUserId": "buhvz1fqjux1l9mc",
        "amount": 1000,
        "currencyCode": "XAF",
        "paymentId": "TX221216JFUXOBIJNTZF",
        "status": 2,
        "payerMessage": null,
        "createdAt": "2022-12-16 14:48:23",
        "allocatedAsBonus": null,
        "type": 1,
        "isBonusReward": 1,
        "appId": "apwbmpg97os2ga",
        "luckyMoneyId": "LM12sssss3",
        "balance": "400",
        "refundId": null,
        "bonusValidityHours": null,
        "statusText": "Actif",
        "totalAllocatedAmount": 600
    },
    "success": true 
}

Lucky Draw

Trigger a lucky draw

Endpoint

POST /fapi/lucky-money/pick

Filter parameters

Parameter Type required Description
luckyMoneyId String true The LM ID
luckyDrawId String true The UNUQUE lucky draw ID. This will be used to enforce duplicate check
amount Number true The amount that will be assigned to the current user. The currency of the LM will be used

Request body

{
    "luckyMoneyId": "LM12sssss3",
    "amount" : 100,
    "currencyCode" : "XAF",
    "luckyDrawId" : "1223sdssssssds"
}

Response

Lucky draw data

{
    "data": {
        "id": "LM12ssssss3asa3ss",
        "luckyMoneyId": "LM12ssssss3asa3ss",
        "orgId": "tzi38oovovoz5uq9",
        "createdByUfId": "buhvz1fqjux1l9mc",
        "paymentId": "TX221219ON157OGX0P8O",
        "amount": 1,
        "currencyCode": "USD",
        "message": null,
        "bonusRewardId": "BN221219S5Q1K7XX",
        "createdAt": "2022-12-19 10:33:16.535703",
        "appId": "apwbmpg97os2ga"
    },
    "success": true 
}

View Lucky Draw Details

Diplays lucky draw data

Endpoint

GET /fapi/lucky-money/pick/fapi/lucky-money/view-draw?id=DRAW_ID

Filter parameters

Parameter Type required Description
id String true The draw ID

Request body

Response

Lucky draw data

{
    "data": {
        "id": "LM12ssssss3asa3ss",
        "luckyMoneyId": "LM12ssssss3asa3ss",
        "orgId": "tzi38oovovoz5uq9",
        "createdByUfId": "buhvz1fqjux1l9mc",
        "paymentId": "TX221219ON157OGX0P8O",
        "amount": 1,
        "currencyCode": "USD",
        "message": null,
        "bonusRewardId": "BN221219S5Q1K7XX",
        "createdAt": "2022-12-19 10:33:16.535703",
        "appId": "apwbmpg97os2ga"
    },
    "success": true 
}

CLOSE LM

Closes a lucky money campaign. Operation

  1. If LM is of status PENDING/UNPAID , it will be marked as CANCELLED
  2. If LM is of status ACTIVE (PAID) , then the unclaimed balance will be REFUNDED and the LM marked as CLOSED
  3. If the LM is of status ACTIVE (PAID) and the all draws have been completed, then the LM will be marked as COMPLETED
  4. if the LM is of status completed or closed, then NO action

Endpoint

POST /fapi/lucky-money/mark-as-closed

Filter parameters

Parameter Type required Description
luckyMoneyId String true The LM ID

Request body

{
    "luckyMoneyId": "LM12ss3" 
}

Response

Lucky LM data

{
    "data": {
        "id": "ssssasassssssssssa",
        "orgId": "tzi38oovovoz5uq9",
        "createdByUserId": "buhvz1fqjux1l9mc",
        "amount": 1000,
        "currencyCode": "XAF",
        "paymentId": "TX221219ZEE2OYDMT23W",
        "status": -3,
        "payerMessage": null,
        "createdAt": "2022-12-19 15:42:47.443332",
        "isBonusReward": 1,
        "appId": "apwbmpg97os2ga",
        "balance": 0,
        "refundId": "REF221219SYE0H0PTFF2",
        "bonusValidityHours": 72,
        "expiresAt": "2022-12-24 13:45:11",
        "lastUpdatedAt": null,
        "closedByStaffId": null,
        "lastDrawCompletedAt": null,
        "adminRefundNote": null,
        "statusText": "closed/refunded"
    },
    "success": true 
}

REFUND LM

Refunds remaining balance of lucky money to the creator. The refund is synchronous, i.e. it will happen immediately during the API call.

Endpoint

POST /fapi/lucky-money/refund

Filter parameters

Parameter Type required Description
luckyMoneyId String true The LM ID

Request body

{
    "luckyMoneyId": "LM12ss3" 
}

Response

Lucky LM data

{
    "data": {
        "id": "LM12ss3",
        "orgId": "tzi38oovovoz5uq9",
        "createdByUserId": "buhvz1fqjux1l9mc",
        "amount": 1000,
        "currencyCode": "XAF",
        "paymentId": "TX221216QW53GWYBAPVV",
        "status": -1,
        "payerMessage": null,
        "createdAt": "2022-12-16 14:42:09",
        "allocatedAsBonus": null,
        "type": 1,
        "isBonusReward": 1,
        "appId": "apwbmpg97os2ga",
        "luckyMoneyId": "LM12ss3",
        "balance": "1000",
        "refundId": "REF22121648G5R70NRBN"
    },
    "success": true 
}

Merchant Sub-Accoounts

Management of Merchant sub-accounts

Creates a Merchant sub-account

Creates a mch sub-account

Endpoint

POST /v1/mch-account/create

Request Body Parameters

Parameter Type required Description
name Number true Name of the sub-account
description String(500) true description
enableManualSettlement Boolean false whether/not to enable manual settlement
settlementAccountId String false the settlement (payment method) accountId
{
 
    "name": "w6shp1cry97x",
    "description" : "Party scatter"  ,
    "enableManualSettlement" : 1, 
    "settlementAccountId" : 247
}

Response

Upon creation, a transaction object is created and returned for authorization See the VIEW section

Update

Updates a merchant account info

see create

Request body

Endpoint POST /v1/mch-account/update

{
    "_id" : "ACNN3JOMQXS5YWLUBDB0" ,
    "name": "w6shp1cry97x",
    "description" : "Party scatter"  ,
    "enableManualSettlement" : 1, 
    "settlementAccountId" : "ACAWQA0KIMLF6JIBLRAG"
}

Response

See the VIEW section

View

Displays

Endpoint

GET /v1/mch-account/view/_id_?=ACCOUNT_ID

Request Body Parameters

Parameter Type required Description
_id String true The account ID

Response

Merchant account data

{
    "data": {
        "_id": "ACJTWGZ6PFTWHGPSD5GR",
        "enableManualSettlement": 1,
        "createdAt": "2021-10-31 01:43:28",
        "lastUpdatedAt": null,
        "user": {
            "_id": "TZF3SBZWL3JQWTAK",
            "displayName": "tz87",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null
        },
        "settlementAccount": {
            "accountId": "ACJTWGZ6PFTWHGPSD5GR",
            "name": "w6shp1cry97x",
            "description": "Party scatter",
            "avatarUrl": "/static/img/logos/tz-logo-btn-black.png"
        },
        "name": "w6shp1cry97x",
        "description": "Party scatter",
        "balanceAmount": 0,
        "withheldBalanceAmount": 0,
        "avatarUrl": "/static/img/logos/tz-logo-btn-black.png",
        "isActive": 1
    },
    "dateTime": "2021-10-31T01:43:28+00:00",
    "duration": "0.049s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

List

Lists

Endpoint

GET /v1/mch-account/list

Filter parameters

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "enableManualSettlement": "1",
                "account": {
                    "_id": "MSA4AG0Y0LLXSNAEHARO",
                    "type": "6",
                    "typeText": "Merchant account",
                    "name": "w6shp1cry97x",
                    "description": "Party scatter",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "balanceAmount": 0,
                    "currencyCode": "XAF",
                    "createdAt": "2021-12-22 17:19:42"
                },
                "settlementAccount": {
                    "_id": "PMI42MCRPUBUGA4J7PHW",
                    "type": "7",
                    "typeText": "Payment method",
                    "name": "porky cshop",
                    "description": "chatter box",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/mtn.png",
                    "provider": "MTN Momo",
                    "providerAccountHolderId": "237674728670",
                    "providerType": "telecom wallet"
                }
            },
            {
                "enableManualSettlement": "1",
                "account": {
                    "_id": "MSAM3JXE67VWWO14NF2H",
                    "type": "6",
                    "typeText": "Merchant account",
                    "name": "w6shp1cry97x",
                    "description": "Party scatter",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "balanceAmount": 0,
                    "currencyCode": "XAF",
                    "createdAt": "2021-12-22 17:14:15"
                },
                "settlementAccount": {
                    "_id": "PMI42MCRPUBUGA4J7PHW",
                    "type": "7",
                    "typeText": "Payment method",
                    "name": "porky cshop",
                    "description": "chatter box",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/mtn.png",
                    "provider": "MTN Momo",
                    "providerAccountHolderId": "237674728670",
                    "providerType": "telecom wallet"
                }
            }
            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 7
    },
    "success": true,
    "dateTime": "2021-12-28T10:11:07+00:00",
    "duration": "0.064s",
    "lang": "en-US",
    "userId": 109,
    "orgUserId": 108,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Merchant Settlement interface

Merchant settlement interface.

Status Codes

    const STATUS_PENDING = 1;    
    const STATUS_THIRD_PARTY_PROCESSING = 2; //Applicable to external batch payments.     
    const STATUS_COMPLETED = 3;
    const STATUS_FAILED = -1;

Creates a LM

Creates a partial settlement. This is applicable for merchant accounts with enableManualSettlement = 1.

Endpoint

GEET /v1/mch-settlement/create

Request Filter Parameters

Parameter Type required Description
amount flat true Custom settlement amount.
currencyCode string false optional. Currencycode of merchant sub-account
beneAccountId Number true the destination account ID (e.g payment method _id, Tz wallet)
payerAccountId Number true The source merchant account
description Boolean false description narration
isCrossBorder Boolean false whether/not this settlement is for cross-border transactions

Request payload

{
    "amount": "5646100",
    "beneAccountId": "AC8DDER98LYUZT9W0140",
    "payerAccountId": "MSATGI7LV549JIHB8VMO",
    "description" : "Manual settlement",
    "isCrossBorderSettlement" : 0
}

Response

The response is Transaction payload. The transaction authorization page should be loaded to enable the user authorize the payment.

    "data": {
        "_id": "PP2201057FSTTC4R4ZNZ",
        "amount": 10000,
        "bene": { }
... truncated         

Lists

List settlements (pending/historic)

Endpoint

GEET /v1/mch-settlement/list

Request Filter Parameters

Parameter Type required Description
_id string false Batch ID
accountId Number false The merchant account ID
destinationAccountId Number false the destination account ID (e.g payment method ID)
status Number false the status Code : 1-pending , 2-third-party processing , 3-completed, 4-failed
isCrossBorder Boolean false cross-border flag : 1 for Xborder , 0 for same country , NULL for not included

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "MSBDUMXF30RYBGSC",
                "amount": null,
                "fee": null,
                "status": "1",
                "statusText": "pending",
                "isManualSettlement": null,
                "isCrossBorder": "0",
                "dueDate": "2022-01-18 00:00:00",
                "reportFilePath": null,
                "account": {
                    "_id": "MSA366G9OI456BZDK7A0",
                    "type": "6",
                    "typeText": "Merchant account",
                    "name": "w6shp1cry97x",
                    "description": "Party scatter",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "balanceAmount": 100100,
                    "currencyCode": "XAF"
                }
            },
            {
                "_id": "MSBC2209H6UX10QR",
                "amount": 5646100,
                "fee": 56461,
                "status": "3",
                "statusText": "completed",
                "isManualSettlement": "1",
                "isCrossBorder": "0",
                "dueDate": "2022-01-17 17:27:42",
                "reportFilePath": null,
                "account": {
                    "_id": "MSATGI7LV549JIHB8VMO",
                    "type": "6",
                    "typeText": "Merchant account",
                    "name": "w6shp1cry97x",
                    "description": "Party scatter",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "balanceAmount": 10000,
                    "currencyCode": "XAF"
                },
                "destinationAccount": {
                    "_id": "AC8DDER98LYUZT9W0140",
                    "type": "1",
                    "typeText": "Primary account",
                    "name": "",
                    "description": "",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "provider": "tranzak",
                    "providerAccountHolderId": "AC8DDER98LYUZT9W0140",
                    "providerType": "internal account"
                }
            },
           
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 4
    },
    "success": true,
    "dateTime": "2022-01-17T19:12:14+00:00",
    "duration": "0.054s",
    "lang": "en-US",
    "userId": 36,
    "orgUserId": 35,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

View

Displays Mch settlement data

Endpoint

GET /v1/mch-settlement/view?_id=MSBDUMXF30RYBGSC

Request Body Parameters

Parameter Type required Description
id String true The Mch SETT Id
accountId String true merchant account to be settled
destinationAccountId String true dest account
status String true status e.g. 1-pending, 2-third-party processing , 3-completed , 4-failed

Response

the merchant settlement batch data

{
    "data": {
        "_id": "MSBDUMXF30RYBGSC",
        "account": {
            "_id": "MSA366G9OI456BZDK7A0",
            "name": "w6shp1cry97x",
            "description": "w6shp1cry97x",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
            "balanceAmount": 100100,
            "currencyCode": "XAF"
        },
        "accountId": "MSA366G9OI456BZDK7A0",
        "currencyCode": "XAF",
        "dateTime": null,
        "destinationAccount": null,
        "fee": 0,
        "isCrossBorder": "0",
        "isManualSettlement": null,
        "status": "1",
        "statusText": "pending"
    },
    "success": true,
    "dateTime": "2022-01-17T19:20:47+00:00",
    "duration": "0.056s",
    "lang": "en-US",
    "userId": 36,
    "orgUserId": 35,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

List Transactions in a batch

Lists LMs that have already been allocated. LM in draft mode will NOT be shown

Endpoint

GET /v1/mch-settlement/list-transactions

Request Filter Parameters

Parameter Type required Description
_id Number false The merchant sett batch job ID
paymentId Number false The merchant sett batchId
settlementBatchId Number false The merchant sett batchId
accountId Number false The accountId
isCrossBorder bit false whether transaction is cross-border/not

Response

Listing

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "paymentId": "MP220117PG0U6EXQ9XSJ",
                "settlementBatchId": "MSBDUMXF30RYBGSC",
                "amount": 1001,
                "currencyCode": "XAF",
                "createdAt": "2022-01-17 18:05:10",
                "accountId": "MSA366G9OI456BZDK7A0",
                "account": {
                    "_id": "MSA366G9OI456BZDK7A0",
                    "type": "6",
                    "typeText": "Merchant account",
                    "name": "w6shp1cry97x",
                    "description": "Party scatter",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "balanceAmount": 100100,
                    "currencyCode": "XAF"
                }
            },
            {
                "paymentId": "MP220117V8MTOX2YGQMM",
                "settlementBatchId": "MSBDUMXF30RYBGSC",
                "amount": 1001,
                "currencyCode": "XAF",
                "createdAt": "2022-01-17 18:05:10",
                "accountId": "MSA366G9OI456BZDK7A0",
                "account": {
                    "_id": "MSA366G9OI456BZDK7A0",
                    "type": "6",
                    "typeText": "Merchant account",
                    "name": "w6shp1cry97x",
                    "description": "Party scatter",
                    "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "balanceAmount": 100100,
                    "currencyCode": "XAF"
                }
            },
           
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 401
    },
    "success": true,
    "dateTime": "2022-01-17T19:23:38+00:00",
    "duration": "0.065s",
    "lang": "en-US",
    "userId": 36,
    "orgUserId": 35,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Merchant Settings

Provides an interface to display and update merchant settings

View Merchant Setting

Displays merchant info

Endpoint

GET /v1/merchant/details

Request Body Parameters

N/A

Response

The response is the merchant details

Response

The customer data

{
    "data": {
        "commission": 0.0225,
        "commissionCap": 0,
        "createdAt": "2021-11-12 13:36:20",
        "enableCrossBorderCollection": true,
        "enableCustomCouponCodes": 0,
        "enableGiftCard": 0,
        "enableGuestPayments": 0,
        "enableInPersonPayment": 1,
        "enableManualSettlement": false,
        "enableMembershipService": 0,
        "enableVirtualAccounts": 0,
        "freezeSettlement": null,
        "gracePeriodEndsAt": "2021-11-12 13:36:20",
        "lastUpdatedAt": "2021-11-15 20:28:41",
        "maxActiveCoupons": 10,
        "maxCouponsPerPromotion": 200,
        "maxLuckyMoneyAmount": 500,
        "maxLuckyMoneyQuantity": 500,
        "maxSubAccounts": 30,
        "maxVirtualAccounts": 100,
        "minSettlementAmount": 100,
        "settlementAccount": {
            "_id": "ACMO9X1OBNGSU7NXES07",
            "balance": null,
            "providerName": "Orange Money",
            "partnerAccountHolderId": "655007058",
            "partnerAccountHolderName": null,
            "avatarUrl": "https://rest.tranzak.me/static/img/partners/orange.png",
            "name": "Orange Money | 655007058"
        },
        "settlementWindowId": null,
        "userId": 87
    },
    "success": true,
    "dateTime": "2021-11-15T20:28:41+00:00",
    "duration": "0.068s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Update Merchant Settings

Updates the settings

Endpoint

POST /v1/merchant/update

Request Body Parameters

Parameter Type required Description
settlementAccountId String true the settlement account - to be selected from External payment method list
enableManualSettlement bool false Whether/not to enable manual settlement
enableCrossBorderCollection bool false Whether/not to enable cross-border collection
payoutAllowedIpAddressList bool false IP address list for payouts/mass payments
{
    "enableManualSettlement" : false ,
    "enableCrossBorderCollection" : true ,
    "enableCrossBorderCollection": true,
    "payoutAllowedIpAddressList" : "192.168.137.1 , 10.1.1.1, 10.2.2.2-90"

}

Response

The response is the merchant info (see above);

Merchant tool for creating links to receiving money

Status Codes

    const STATUS_DRAFT =  1 ; //editable not not payable
    const STATUS_ACTIVE =  2 ; // non-editable & unpaid -> payable
    const STATUS_PAID = 3 ; //FULLY PAID -- non-editable, non-payable
    const STATUS_CANCELLED = -1; //UNPAID -- non-editable, non-payable

Create a refund request

Creates a payment link

Endpoint

POST /v1/payment-link/create

Request Body Parameters

Parameter Type required Description
amount Float true the amount
currencyCode Number false 3-letter currency code. Default is to use merchant's primary currency code
description String(200) true Description that will be shown to payer
acceptMultiplePayments boolean false Name of the sub-account
acceptUserSpecifiedAmount boolean false Whether to allow payer to specify an amount. If this is set, then amount should be set to 0
receivingAccountId Number false the MERCHANT (sub)-account that will receive payments
enableAfterCreation boolean false Whether to auto-enable the link after submission
avatarUrl boolean false The AvatarUrl
{

    "amount": 100,
     "currencyCode": "USD",
    "description": "My description makes yours look descriptive",
    "acceptMultiplePayments": true,
    "acceptUserSpecifiedAmount": 0,
    "enableAfterCreation":1 ,
    "receivingAccountId" : "ACEFWGU029UWA2Q66KGJ" ,
    "avatarUrl" : "http://tranzak.me/assets/img/why-us.png"
}

Response

See the VIEW section

Update

Endpoint POST /v1/payment-link/update

Request body params

Parameter Type required Description
_id String true Id of the p-link
amount Float true the amount
currencyCode Number false 3-letter currency code. Default is to use merchant's primary currency code
description String(200) true Description that will be shown to payer
acceptMultiplePayments boolean false Name of the sub-account
acceptUserSpecifiedAmount boolean false Whether to allow payer to specify an amount. If this is set, then amount should be set to 0
receivingAccountId Number false the MERCHANT (sub)-account that will receive payments
enableAfterCreation boolean false Whether to auto-enable the link after submission
avatarUrl boolean false The Avatar Url
{
     "_id": "PLZG3LKT227VVGC0M8CB",
    "amount": 100,
     "currencyCode": "USD",
    "description": "My description makes yours look descriptive",
    "acceptMultiplePayments": true,
    "acceptUserSpecifiedAmount": 0,
    "accountId": "" ,
    "enableAfterCreation":1 ,
    "receivingAccountId" : "ACEFWGU029UWA2Q66KGJ"
}

Deactivate

Cancels /deactivates a link

Endpoint POST /v1/payment-link/deactivate

Request body

Parameter Type required Description
_id String true Id of the p-link
{
    "_id" : "PLZG3LKT227VVGC0M8CB"
}

Response

See the VIEW section

View

Displays

Endpoint

GET /v1/payment-link/view/_id_?=PLINK_ID

e.g /payment-link/view?_id=PLZG3LKT227VVGC0M8CB

Request Body Parameters

Parameter Type required Description
_id String true The p-link ID

Response

PL data

{
    "data": {
        "_id": "PLZG3LKT227VVGC0M8CB",
        "amount": 100,
        "currencyCode": "XAF",
        "description": "My description makes yours look descriptive",
        "acceptMultiplePayments": 1,
        "acceptUserSpecifiedAmount": 0,
        "userTransactionRef": "",
        "status": 2,
         "avatarUrl": "http://tranzak.me/assets/img/why-us.png",
        "expiresAt": "2021-11-02 16:46:37",
        "createdAt": "2021-10-31 16:46:37",
        "lastUpdatedAt": null,
        "receivingAccount": {
            "_id": "ACEFWGU029UWA2Q66KGJ",
            "currencyCode": "XAF",
            "type": 6,
            "avatarUrl": "/static/img/logos/tz-logo-btn-black.png"
        },
        "statusText": "active"
    },
    "dateTime": "2021-10-31T17:03:47+00:00",
    "duration": "0.041s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

List

Lists

Endpoint

GET /v1/payment-link/list

Filter parameters

Parameter Type required Description
status int false Filter by status codes : e.g 1- DRAFT (editable), 2- STATUS_ACTIVE (payable) , 3- STATUS_PAID , 4-STATUS_CANCELLED

_id | int | false | filter by ID

Response

Listing

{
    "data": {
        "list": [
            {
                "_id": "PLOD5D8NZ8XOXGNEINLW",
                "amount": 100,
                "currencyCode": "XAF",
                "description": "My description makes yours look descriptive",
                "acceptMultiplePayments": "1",
                "acceptUserSpecifiedAmount": "0",
                "userTransactionRef": "",
                "status": "1",
                "expiresAt": "2021-11-02 16:46:37",
                "createdAt": "2021-10-31 16:46:37",
                "lastUpdatedAt": null,
                 "avatarUrl": "http://tranzak.me/assets/img/why-us.png",
                "receivingAccount": {
                    "_id": "ACEFWGU029UWA2Q66KGJ",
                    "currencyCode": "XAF",
                    "type": "6",
                    "avatarUrl": "/static/img/logos/tz-logo-btn-black.png"
                },
                "statusText": "draft"
            },
            {
                "_id": "PLZS4C7CQFAGY0U6QAFP",
                "amount": 100,
                "currencyCode": "XAF",
                "description": "My description makes yours look descriptive",
                "acceptMultiplePayments": "1",
                "acceptUserSpecifiedAmount": "0",
                "userTransactionRef": "",
                "status": "1",
                "expiresAt": "2021-11-02 16:46:37",
                "createdAt": "2021-10-31 16:46:37",
                "lastUpdatedAt": null,
   
                "statusText": "draft"
            },
           
        ],
        "totalItems": 9,
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "currentPage": 1,
        "hasMore": false
    },
    "dateTime": "2021-10-31T17:23:24+00:00",
    "duration": "0.045s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

Create transaction

Creates a transaction from a P-LINK this endpoint should be called by the payer. Creates a Transaction object as response. Visit the TRANSACTION VIEW section

POST /v1/payment-link/create-transaction

Request body params

Parameter Type required Description
paymentLinkId String true Id of the p-link
transactionAmount Number true The amount . this is applicable only if acceptUserSpecifiedAmount = true
{
    "_id" : "PLZG3LKT227VVGC0M8CB",
    "transactionAmount" : 100
}

Other actions

Clone

Make a clone of a Payment link

Endpoint POST /v1/payment-link/clone

activate

Activates a p-link

POST /v1/payment-link/activate

{
    "_id" : "PLZG3LKT227VVGC0M8CB"
}

Payment Method

PM management

Status Codes

    const STATUS_PENDING =  1 ;
    const STATUS_ACTIVE = 2 ;
    const STATUS_DEACTIVATED = -1;

List Operators

Lists operators/service providers that may be added as PM. The FULL list of the operators will be returned (i.e. NO PAGINATION IS NEEDED)

GET /v1/payment-method/list-operators

Request body params

The following filter(s) apply

Parameter Type required Description
typeId String(100) true Filter by treasury typeId. Current types : const TYPE_BANK_CREDIT = 1; const TYPE_BANK_DEBIT = 2; const TYPE_BANK_PREPAID = 3; const TYPE_TELCO_WALLET = 4;
{
    "data": [
        {
            "id": "16",
            "accountId": "ACISG2AUKQKWJWRELW35",
            "shortName": "BICEC - Cameroun",
            "name": "BICEC - Cameroun",
            "description": "CM | BICEC - Cameroun",
            "bankCode": "10003",
            "typeId": "1",
            "typeText": "credit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/bicec.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/",
            "isPaymentMethod": "1"
        },
        {
            "id": "13",
            "accountId": "ACV0SMS7GNVQVPB53194",
            "shortName": "SocGen",
            "name": "SocGen",
            "description": "CM | SocGen",
            "bankCode": "10048",
            "typeId": "1",
            "typeText": "credit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/socgen.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/",
            "isPaymentMethod": "1"
        },
        {
            "id": "10",
            "accountId": "ACXE5G4YI8W95GRM1ZGT",
            "shortName": "StanChart - Cameroon",
            "name": "StanChart - Cameroon",
            "description": "CM | StanChart - Cameroon",
            "bankCode": "10064",
            "typeId": "1",
            "typeText": "credit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/stanchart.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/",
            "isPaymentMethod": "1"
        },
        {
            "id": "7",
            "accountId": "ACB8DKBV9NJ3VUPH2244",
            "shortName": "Afriland Cameroon",
            "name": "Afriland Cameroon",
            "description": "CM | Afriland Cameroon",
            "bankCode": "10078",
            "typeId": "1",
            "typeText": "credit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/afriland.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/",
            "isPaymentMethod": "1"
        },
        {
            "id": "4",
            "accountId": "AC889BINH2T5OWS8RK63",
            "shortName": "UBA Cameroon",
            "name": "UBA Cameroon",
            "description": "CM | UBA Cameroon",
            "bankCode": "10037",
            "typeId": "1",
            "typeText": "credit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/uba.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/",
            "isPaymentMethod": "1"
        }
    ],
    "success": true,
    "dateTime": "2022-02-05T05:09:31+00:00",
    "duration": "0.047s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Links a mobile wallet

Endpoint

POST /v1/payment-method/add-mobile-wallet

Request Body Parameters

Parameter Type required Description
partnerAccountHolderId String true the identifier , e.g phone number +237612345678 for MWP or bank account for linking bank accounts
partnerAccountHolderName String false The account holder name
name String(100) true Custom name for the PM
description Number (200) false Custom description for the PM
{
    "partnerAccountHolderId" : 237674728670,
    "partnerAccountHolderName" : "Dan Momo Ntui",
    "name" : "Fav momo" ,
    "description" : "The momo i used for to shop online."
}

Response

See the VIEW section

Links a debit card from a list of providers

Endpoint

POST /v1/payment-method/add-bank-debit

Request Body Parameters

Parameter Type required Description
partnerAccountHolderId String true the account number
partnerAccountHolderName String true The account holder name
bankBranchCode String true The branch code
bankRibCode String true The RIB (key) for the account
treasuryAccountId String true The treasury service account ID. This is to be obtained from list-operators endpoint by filtering for typeId = 2
name String(100) true Custom name for the PM
description Number (200) false Custom description for the PM
{
    "bankBranchCode" : "00001",
    "bankRibCode" : "0078" ,
    "partnerAccountHolderId" : "00712345678999",
    "partnerAccountHolderName" : "Dan From Tranzak",
    "name" : "My fav bank account" ,
    "description" : "Much money" ,
    "treasuryAccountId" : "15"
}

Response

See the VIEW section

Links a debit card from a list of providers

Endpoint

POST /v1/payment-method/add-prepaid-card

Request Body Parameters

Parameter Type required Description
prepaidCardFirstSixDigits String true The first 6 digits of card
prepaidCardLastFourDigits String true The last 4 digits of the card
prepaidCardCustomerId String true 10-digit - The customer ID (located on the backside of the card)
partnerAccountHolderName String true The account holder's name
treasuryAccountId String true The treasury service account ID. This is to be obtained from list-operators endpoint by filtering for typeId = 3
name String(100) true Custom name for the PM
description Number (200) false Custom description for the PM
{
    "prepaidCardFirstSixDigits" : "00001",
    "prepaidCardLastFourDigits" : "0078" ,
    "prepaidCardCustomerId" : "0000998774",
    "partnerAccountHolderName" : "Dan Prepaid Name",
    "name" : "Fav Prepaid card" ,
    "description" : "Prepaid card for online payments" ,
    "treasuryAccountId" : "17"
}

Response

See the VIEW section

Update

The params may be edited

POST /v1/payment-method/update

Request body params

Parameter Type required Description
_id String true model ID
name String(100) false Name of PM
description Number (200) false brief desc
{
    "_id" :"ACPN6AZBYQVH1TVXUN7J",
    "name" : "My s4444444" ,
    "description" : "Momo",
    ...(other params)
}

View

Displays model data

Endpoint

GET /v1/payment-method/view/_id_?=PM_ID

Request Body Parameters

Parameter Type required Description
_id String true The PM ID

Response

PM data

Debit card
{
    "data": {
        "_id": "PMF2I3XL693RE1ZCMCS4",
        "bankBranchCode": "00001",
        "bankRibCode": "0078",
        "createdAt": "2022-02-05 05:04:11",
        "createdByUserId": 34,
        "description": "Much money",
        "isVerified": 0,
        "name": "My fav bank account",
        "orgUserId": 33,
        "partnerAccountHolderId": "00712345678999",
        "partnerAccountHolderName": "Dan From Tranzak",
        "partnerAccountIdType": null,
        "prepaidCardCustomerId": null,
        "prepaidCardFirstSixDigits": null,
        "prepaidCardLastFourDigits": null,
        "providerData": {
            "_id": "PMF2I3XL693RE1ZCMCS4",
            "accountId": "PMF2I3XL693RE1ZCMCS4",
            "providerType": 2,
            "providerTypeText": "bank",
            "serviceType": "debit card",
            "id": 7,
            "countryCode": "CM",
            "name": "BICEC - Cameroun",
            "code": "cmbicec-ca",
            "shortName": "BICEC - Cameroun",
            "description": "CM | BICEC - Cameroun",
            "isOffline": 0,
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/bicec.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/"
        },
        "requirePinForTransaction": 1,
        "status": 2,
        "statusText": "active"
    },
    "success": true,
    "dateTime": "2022-02-05T05:27:47+00:00",
    "duration": "0.048s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Prepaid card
{
    "data": {
        "_id": "PM9S3U4R2ZFT69081YZR",
        "bankBranchCode": null,
        "bankRibCode": null,
        "createdAt": "2022-02-05 05:05:14",
        "createdByUserId": 34,
        "description": "Prepaid card for online payments",
        "isVerified": 0,
        "name": "Fav Prepaid card",
        "orgUserId": 33,
        "partnerAccountHolderId": "0078",
        "partnerAccountHolderName": "Dan Prepaid Name",
        "partnerAccountIdType": null,
        "prepaidCardCustomerId": "0000998776",
        "prepaidCardFirstSixDigits": "00001",
        "prepaidCardLastFourDigits": "0078",
        "providerData": {
            "_id": "PM9S3U4R2ZFT69081YZR",
            "accountId": "PM9S3U4R2ZFT69081YZR",
            "providerType": 3,
            "providerTypeText": "bank",
            "serviceType": "prepaid card",
            "id": 7,
            "countryCode": "CM",
            "name": "BICEC - Cameroun",
            "code": "cmbicec-ca",
            "shortName": "BICEC - Cameroun",
            "description": "CM | BICEC - Cameroun",
            "isOffline": 0,
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/bicec.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/"
        },
        "requirePinForTransaction": 1,
        "status": 2,
        "statusText": "active"
    },
    "success": true,
    "dateTime": "2022-02-05T05:26:00+00:00",
    "duration": "0.049s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Mobile wallet
{
    "data": {
        "_id": "PMBTNU7CQPJ9WI4UA9P3",
        "bankBranchCode": null,
        "bankRibCode": null,
        "createdAt": "2022-02-05 05:03:32",
        "createdByUserId": 34,
        "description": "chatter box",
        "isVerified": 0,
        "name": "porky cshop",
        "orgUserId": 33,
        "partnerAccountHolderId": "237674728670",
        "partnerAccountHolderName": "sssssjsdlsd",
        "partnerAccountIdType": null,
        "prepaidCardCustomerId": null,
        "prepaidCardFirstSixDigits": null,
        "prepaidCardLastFourDigits": null,
        "providerData": {
            "_id": "PMBTNU7CQPJ9WI4UA9P3",
            "accountId": "PMBTNU7CQPJ9WI4UA9P3",
            "providerType": 4,
            "providerTypeText": null,
            "serviceType": "telecom wallet",
            "id": 1,
            "countryCode": "CM",
            "name": "MTN Momo",
            "code": "cmmtnmomo",
            "shortName": "MTN Momo",
            "description": "CM | MTN Momo",
            "isOffline": 0,
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/mtn.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/"
        },
        "requirePinForTransaction": 1,
        "status": 2,
        "statusText": "active"
    },
    "success": true,
    "dateTime": "2022-02-05T05:26:52+00:00",
    "duration": "0.046s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

List

Lists PMs

Endpoint

GET /v1/payment-method/list

Filter parameters

Parameter Type required Description
status int false Filter by status codes : e.g 1- DRAFT, 2- STATUS_ACTIVE , 3- STATUS_PAID , 4-STATUS_CANCELLED
type int false Filter by type codes : e.g 1- refund, 2- reversal
id int false filter by ID

Response

Listing

{
    "data": [
        {
            "partnerAccountHolderId": "237637758893",
            "partnerAccountHolderName": null,
            "partnerAccountIdType": null,
            "requirePinForTransaction": "1",
            "status": "2",
            "bankBranchCode": null,
            "bankRibCode": null,
            "prepaidCardFirstSixDigits": null,
            "prepaidCardLastFourDigits": null,
            "prepaidCardCustomerId": null,
            "isVerified": "0",
            "createdAt": "2022-04-05 15:28:27",
            "_id": "PMLYUCJE5BKR4ZVIJBHD",
            "name": "Orange Money | 237637758893",
            "description": "",
            "statusText": "active",
            "providerData": {
                "providerServiceId": "2",
                "providerType": "Telecom operator",
                "providerTypeText": "Telecom operator",
                "serviceType": "telecom wallet",
                "providerId": "2",
                "countryCode": "CM",
                "name": "Orange Money",
                "bankCode": null,
                "shortName": "Orange Money",
                "description": "CM | Orange Money",
                "isOffline": "0",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/partners/orange.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/fapi/static/img/partners/cards/"
            }
        },
        {
            "partnerAccountHolderId": "237616181398",
            "partnerAccountHolderName": null,
            "partnerAccountIdType": null,
            "requirePinForTransaction": "1",
            "status": "2",
            "bankBranchCode": null,
            "bankRibCode": null,
            "prepaidCardFirstSixDigits": null,
            "prepaidCardLastFourDigits": null,
            "prepaidCardCustomerId": null,
            "isVerified": "0",
            "createdAt": "2022-04-05 15:28:27",
            "_id": "PMEQUUHNLBAEYA9TLVR7",
            "name": "MTN Momo | 237616181398",
            "description": "",
            "statusText": "active",
            "providerData": {
                "providerServiceId": "1",
                "providerType": "Telecom operator",
                "providerTypeText": "Telecom operator",
                "serviceType": "telecom wallet",
                "providerId": "1",
                "countryCode": "CM",
                "name": "MTN Momo",
                "bankCode": null,
                "shortName": "MTN Momo",
                "description": "CM | MTN Momo",
                "isOffline": "0",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/partners/mtn.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/fapi/static/img/partners/cards/"
            }
        }
    ],
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-04-11T10:31:06+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.042s",
        "userId": 22,
        "_userId": "tz22",
        "scopeId": null,
        "type": 3,
        "orgUserId": 22,
        "roleId": 1000,
        "roleLabel": "owner",
        "firstName": null,
        "displayName": "tz22"
    }
}

Other actions

Deactivate

Deactivates a PM

Endpoint POST /v1/payment-method/deactivate

Activate

Submits a report for processing

POST /v1/payment-method/activate

{
    "_id" : "PM9S3U4R2ZFT69081YZR"
}

List (For Settlement)

Lists payment methods that may be used for settlement

Endpoint

GET /v1/payment-method/list-for-settlement

Response

Response is similar in structure as given in the [[list]] section

Payout | Mass Payment

Payout or mass payment is a service that enables making payments to one or more users. The beneficiaries can be INTERNAL or EXTERNAL (bank, MWP, Visa Prepaid cards etc) ; There are two ways of creating payouts:

  1. By manually adding recipients via JSON payload;
  2. By uploading a payout file using the relevant Payout template (MWP, internal, Bank transfer, prepaid card transfer)

Four services , using different templates are supported :

  1. Internal transfer - transfer funds to one or more tranzak internal users. Users will be searched ufId
  2. Mobile wallet transfer - send money to one or more mobile wallet users
  3. Bank transfer - send funds to bank accounts
  4. Pre-paid card transfer - top-up pre-paid cards

Each of the 4 types listed above supports either creating a request via JSON or via file upload using separate endpoints.

IMPORTANT NOTES

  1. Note that the user's default currency code will be used for the transaction
  2. The update endpoints are to be used exclusively by the service types created via JSON config.
  3. For requests created via file upload, all changes to the content must be done in the uploaded file by the user and re-uploaded.
    const STATUS_PENDING =  1 ;
    const STATUS_PAID = 2 ;  // The payout has been paid to
    const STATUS_PROCESSING = 3; // Batch job launched
    const STATUS_COMPLETED = 4 ; //Completed
    const STATUS_CANCELLED = -2 ; //Cancelled
    const STATUS_FAILED = -1 ; // Failed
    const STATUS_INTERNAL_TRANSFER_COMPLETED = 7 ; // internal transfer completed

Types

    const TYPE_INTERNAL_TRANSFER = 1;
    const TYPE_MOBILE_WALLET_TRANSFER = 2;
    const TYPE_BANK_DEBIT_TRANSFER = 3; //
    const TYPE_PREPAID_TRANSFER = 4; //

Create Internal Transfer (JSON)

Request endpoint

POST /payout/create-internal-transfer

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    
    "receivers" : [
     {
        "tranzakId" : "tz13",
        "accountName" : "Dan Internal",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },
    {
        "tranzakId" : "tz14",
        "accountName" : "Dan Internal",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary2",
        "payerNote" : "Transfer to user2",
        "payerReferenceId" : "22222"
    },
    {
        "tranzakId" : "tz15",
        "accountName" : "Dan Internal",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary3",
        "payerNote" : "Transfer to user3",
        "payerReferenceId" : "33333"
    }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

Update Internal Transfer Request

Updates the content of an internal transfer created via JSON configuration.

Endpoint

POST /payout/update-internal-transfer

Request body params

Parameter Type required Description
_id String true ID of the PO
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
  "_id": "POOESL0X1NYDTFN54U9H",
    "title": "Payout cool title",
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "items" : [
        {
            "beneficiaryAccountId" : "tz87",
            "beneficiaryAccountName" : "testing",
            "beneficiaryOrgCode" : "0",
            "amount" : "1000"
        },

        {
            "beneficiaryAccountId" : "666666666",
            "beneficiaryAccountName" : "MTN Test recipient",
            "beneficiaryOrgCode" : "cmmtnmomo",
            "amount" : "1000"
        }   ,

        {
            "beneficiaryAccountId" : "tz87",
            "beneficiaryAccountName" : "Orange Test",
            "beneficiaryOrgCode" : "cmoramomo",
            "amount" : "1000" 
        }             
    ]
 
}

Response

See the VIEW section for the response

UPLOAD Internal Transfer FILE

This endpoint creates an internal transfer via file upload

Endpoint

POST /payout/upload-internal-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

Creates a MOBILE MONEY TRANSFER via JSON

This endpoint creates an mobile money transfer via JSON configuration

Request endpoint

POST /payout/create-mw

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
      {
        "mobileNumber" : "+237674728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },
    {
        "mobileNumber" : "+237674728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary2",
        "payerNote" : "Transfer to user2",
        "payerReferenceId" : "22222"
    },
    {
        "mobileNumber" : "+237674728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary3",
        "payerNote" : "Transfer to user3",
        "payerReferenceId" : "33333"
    }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

Update Mobile Money Transfer Request

Updates the content of an Mobile money transfer created via JSON configuration.

Endpoint

POST /payout/update-mw

Request body params

Parameter Type required Description
_id String true ID of the PO
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
  "_id": "POSTY8AJRD3FQHIA8CTT",
   "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
      {
        "mobileNumber" : "+237674728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },
    {
        "mobileNumber" : "+237674728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary2",
        "payerNote" : "Transfer to user2",
        "payerReferenceId" : "22222"
    },
    {
        "mobileNumber" : "+237674728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary3",
        "payerNote" : "Transfer to user3",
        "payerReferenceId" : "33333"
    }
    ]
 
}

Response

See the VIEW section for the response

UPLOAD Mobile Money Transfer FILE

This endpoint creates an mobile wallet transfer via file upload

Endpoint

POST /payout/upload-mw-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

Creates a BANK DEBIT TRANSFER via JSON

This endpoint creates an bank transfer via JSON configuration

Request endpoint

POST /payout/create-bank-transfer

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
       {
        "accountNumber" : "10001111111111",
        "accountName" : "Paddy Wak Chuk",
        "bankCode" : "10033",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary|UBA",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },

       {
        "accountNumber" : "100022222222",
        "accountName" : "Jezz Tabac",
        "bankCode" : "10033",
        "branchCode" : "0007",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary|UBA",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "22222"
    },    

    {
        "accountNumber" : "2000222222222",
        "accountName" : "XiaLai Tui",
        "bankCode" : "10005",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello XiaLai|AFB",
        "payerNote" : "Transfer to XiaLai",
        "payerReferenceId" : "2222222"
    },
    {
        "accountNumber" : "3330000000000333",
        "accountName" : "Wizzy Brown",
        "bankCode" : "10005",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello wizz|AFB",
        "payerMessage" : "Transfer to wizz",
        "payerReferenceId" : "3333333"
    }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

Update Bank Transfer Request

Updates the content of an Mobile money transfer created via JSON configuration.

Endpoint

POST /payout/update-bank-transfer

Request body params

Parameter Type required Description
_id String true ID of the PO
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
  "_id": "POSTY8AJRD3FQHIA8CTT",
   "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
       {
        "accountNumber" : "10001111111111",
        "accountName" : "Paddy Wak Chuk",
        "bankCode" : "10033",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary|UBA",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },

       {
        "accountNumber" : "100022222222",
        "accountName" : "Jezz Tabac",
        "bankCode" : "10033",
        "branchCode" : "0007",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary|UBA",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "22222"
    },    

    {
        "accountNumber" : "2000222222222",
        "accountName" : "XiaLai Tui",
        "bankCode" : "10005",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello XiaLai|AFB",
        "payerNote" : "Transfer to XiaLai",
        "payerReferenceId" : "2222222"
    },
    {
        "accountNumber" : "3330000000000333",
        "accountName" : "Wizzy Brown",
        "bankCode" : "10005",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello wizz|AFB",
        "payerMessage" : "Transfer to wizz",
        "payerReferenceId" : "3333333"
    }
    ]
 
}

Response

See the VIEW section for the response

UPLOAD Mobile Money Transfer FILE

This endpoint creates an mobile wallet transfer via file upload

Endpoint

POST /payout/upload-bank-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

Creates a PREPAID CARD TOPUP via JSON

This endpoint creates an prepaid card topup via JSON configuration

Request endpoint

POST /payout/create-prepaid-card-transfer

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
     {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        },
        {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        },
        {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

Update Prepaid card topup Request

Updates the content of an Prepaid card topup created via JSON configuration.

Endpoint

POST /payout/update-bank-transfer

Request body params

Parameter Type required Description
_id String true ID of the PO
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
  "_id": "POSTY8AJRD3FQHIA8CTT",
 "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
     {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        },
        {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        },
        {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        }
    ]
 
}

Response

See the VIEW section for the response

UPLOAD Prepaid Card Topup FILE

This endpoint creates an pre-paid card topup via file upload

Endpoint

POST /payout/upload-prepaid-card-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

View

View the details of a PO

Request body params

GET /fapi/payout/view?_id=<_id_of_PO>

Parameter Type required Description
_id String true ID of the PO

TYPES

    const TYPE_INTERNAL_TRANSFER = 1;
    const TYPE_MOBILE_WALLET_TRANSFER = 2;
    const TYPE_BANK_DEBIT_TRANSFER = 3; //
    const TYPE_VISA_PREPAID_TRANSFER = 4; //

STATUSES

    const STATUS_PENDING =  1 ;
    const STATUS_PAID = 2 ;  // The payout has been paid to
    const STATUS_PROCESSING = 3; // Batch job launched
    const STATUS_COMPLETED = 4 ; //Completed
    const STATUS_CANCELLED = 5 ; //Cancelled
    const STATUS_FAILED = 6 ; // Failed
    const STATUS_INTERNAL_TRANSFER_COMPLETED = 7 ; // internal transfer completed

Response

The following is response for a sample internal transfer

{
    "data": {
        "_id": "POFE7E3WVHBMOACOXMQF",
        "completedAt": null,
        "createdAt": "2022-02-07 18:31:52",
        "createdByUserId": 34,
        "currencyCode": "USD",
        "description": null,
        "feeIsPaidByReceiver": 1,
        "isCreatedViaFileUpload": 0,
        "isPriority": 1,
        "mchTransactionRef": "ref12345566666",
        "payment": null,
        "priorityFee": 35,
        "receivers": [
            {
                "tranzakId": "tz13",
                "accountName": "Dan Internal",
                "amount": "1000",
                "beneficiaryNote": "Hello salary",
                "payerNote": "Transfer to user",
                "payerReferenceId": "111111"
            },
            {
                "tranzakId": "tz14",
                "accountName": "Dan Internal",
                "amount": "1000",
                "beneficiaryNote": "Hello salary2",
                "payerNote": "Transfer to user2",
                "payerReferenceId": "22222"
            },
            {
                "tranzakId": "tz15",
                "accountName": "Dan Internal",
                "amount": "1000",
                "beneficiaryNote": "Hello salary3",
                "payerNote": "Transfer to user3",
                "payerReferenceId": "33333"
            }
        ],
        "refund": null,
        "spreadSheetReportFilePath": null,
        "status": 1,
        "statusText": "pending",
        "title": "Payout cool title",
        "totalAmount": 3000,
        "totalFailedTransactionAmount": 0,
        "totalFee": 0,
        "totalNumberFailedTransactions": 0,
        "totalNumberOfReceivers": 3,
        "type": 1,
        "typeText": "internal transfer"
    },
    "success": true,
    "dateTime": "2022-02-07T18:32:30+00:00",
    "duration": "0.057s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Create A transaction

Creates a transaction to authorize a PO.

Parameter Type required Description
_id String true PO ID

Request Body

{
    "_id" : "POAMB0GRBDWPMYCVMKNN"
}

Response

The response is standard TRANSACTION OBJECT . See Transaction VIEW section

List

Paginated list of PO

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "POR0SQVN3ML1TQ117SR1",
                "title": "Payout cool title",
                "createdByUserId": "34",
                "totalAmount": 3000,
                "type": "4",
                "currencyCode": "USD",
                "mchTransactionRef": null,
                "description": null,
                "feeIsPaidByReceiver": "1",
                "totalFee": 0,
                "priorityFee": "35",
                "isPriority": "1",
                "status": "1",
                "totalNumberOfReceivers": "3",
                "isCreatedViaFileUpload": "0",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-07 18:35:43",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "VISA pre-paid card transfer"
            },
            {
                "_id": "POO91U1TDN57LG3CMRUG",
                "title": "Payout cool title",
                "createdByUserId": "34",
                "totalAmount": 4000,
                "type": "3",
                "currencyCode": "USD",
                "mchTransactionRef": "ref12345566666",
                "description": null,
                "feeIsPaidByReceiver": "1",
                "totalFee": 0,
                "priorityFee": "35",
                "isPriority": "1",
                "status": "1",
                "totalNumberOfReceivers": "4",
                "isCreatedViaFileUpload": "0",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-07 18:35:40",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "bank transfer"
            },
            {
                "_id": "POON9TCAWODF6PJ05V7R",
                "title": "Payout cool title",
                "createdByUserId": "34",
                "totalAmount": 3000,
                "type": "2",
                "currencyCode": "USD",
                "mchTransactionRef": "ref12345566666",
                "description": null,
                "feeIsPaidByReceiver": "1",
                "totalFee": 0,
                "priorityFee": "35",
                "isPriority": "1",
                "status": "1",
                "totalNumberOfReceivers": "3",
                "isCreatedViaFileUpload": "0",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-07 18:35:37",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "mobile money transfer"
            },

            {
                "_id": "PON45LV8V8IVKHR16EUY",
                "title": "Payout cool title",
                "createdByUserId": "34",
                "totalAmount": 4000,
                "type": "3",
                "currencyCode": "USD",
                "mchTransactionRef": "ref12345566666",
                "description": null,
                "feeIsPaidByReceiver": "1",
                "totalFee": 0,
                "priorityFee": "35",
                "isPriority": "1",
                "status": "1",
                "totalNumberOfReceivers": "4",
                "isCreatedViaFileUpload": "0",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-07 18:05:50",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "bank transfer"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 5
    },
    "success": true,
    "dateTime": "2022-02-07T18:35:45+00:00",
    "duration": "0.05s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

List Transfers (jobs) for a payout

List all the transfers that have been made for a particular Payout request (if payoutId has been set) or for ALL payout requests. Filter by payoutId

request body params

GET /payout/list-jobs?payoutId=POAMB0GRBDWPMYCVMKNN

Filters

Parameter Type required Description
id String false transfer iD
payoutId String false ID of the PO
status int false job status e.g 1-pending, 2-processing, 3-pending-settlement, 4-completed , 5-failed
type int false Filter by type (See above)

The following params may be used for filtering :

currencyCode, beneficiaryBankName, beneficiaryAccountNumber, 
beneficiaryAccountName, partnerTransactionRefId, payerNote, beneficiaryNote,
beneficiaryRibCode, beneficiaryPrepaidFirst6Digits, beneficiaryPrepaidLast4Digits, beneficiaryPrepaidCustomerId
{
    "data": {
        "list": [
            {
                "id": "3",
                "type": "1",
                "payoutId": "POAMB0GRBDWPMYCVMKNN",
                "amount": 1000,
                "beneAmount": "980",
                "feeAmount": 20,
                "currencyCode": "XAF",
                "outboundOrgCode": null,
                "outboundOrgName": "tranzak",
                "outboundAccountId": "tz87",
                "outboundAccountName": null,
                "swiftCode": null,
                "partnerTransactionRefId": null,
                "payerNote": null,
                "beneNote": null,
                "status": "3",
                "errorCode": null,
                "message": null,
                "debugMessage": null,
                "createdAt": "2021-10-31 19:08:14",
                "lastUpdatedAt": "2021-10-31 20:08:14",
                "payment": {
                    "transactionId": "PP20211031OK999UKUP0",
                    "datetime": "2021-10-31 20:08:14.508745"
                },
                "payout": {
                    "_id": "POAMB0GRBDWPMYCVMKNN",
                    "title": "Payout cool title",
                    "totalAmount": 3000,
                    "currencyCode": "XAF",
                    "paymentId": "31",
                    "refundId": null,
                    "userTransactionRef": null,
                    "description": null,
                    "feeIsPaidByReceiver": "1",
                    "totalFee": 0,
                    "priorityFee": "200",
                    "isPriority": "1",
                    "status": "7",
                    "totalNumberOfReceivers": "3",
                    "isCreatedViaFileUpload": "0",
                    "spreadSheetReportFilePath": null,
                    "createdAt": "2021-10-31 19:59:02",
                    "completedAt": null,
                    "statusText": "internal transfers completed"
                },
                "typeText": "internal transfer",
                "errorCodeText": "unknown",
                "statusText": "internal system error"
            },
            {
                "id": "1",
                "type": "1",
                "payoutId": "POAMB0GRBDWPMYCVMKNN",
                "amount": 1000,
                "beneAmount": "980",
                "feeAmount": 20,
                "currencyCode": "XAF",
                "outboundOrgCode": null,
                "outboundOrgName": "tranzak",
                "outboundAccountId": "tz87",
                "outboundAccountName": null,
                "swiftCode": null,
                "partnerTransactionRefId": null,
                "payerNote": null,
                "beneNote": null,
                "status": "3",
                "errorCode": null,
                "message": null,
                "debugMessage": null,
                "createdAt": "2021-10-31 19:08:14",
                "lastUpdatedAt": "2021-10-31 20:08:14",
                "payment": {
                    "transactionId": "PP20211031I5LKC1OR47",
                    "datetime": "2021-10-31 20:08:14.477032"
                },
                "payout": {
                    "_id": "POAMB0GRBDWPMYCVMKNN",
                    "title": "Payout cool title",
                    "totalAmount": 3000,
                    "currencyCode": "XAF",
                    "paymentId": "31",
                    "refundId": null,
                    "userTransactionRef": null,
                    "description": null,
                    "feeIsPaidByReceiver": "1",
                    "totalFee": 0,
                    "priorityFee": "200",
                    "isPriority": "1",
                    "status": "7",
                    "totalNumberOfReceivers": "3",
                    "isCreatedViaFileUpload": "0",
                    "spreadSheetReportFilePath": null,
                    "createdAt": "2021-10-31 19:59:02",
                    "completedAt": null,
                    "statusText": "internal transfers completed"
                },
                "typeText": "internal transfer",
                "errorCodeText": "unknown",
                "statusText": "internal system error"
            }
        ],
        "totalItems": 2,
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "currentPage": 1,
        "hasMore": false
    },
    "dateTime": "2021-10-31T20:15:43+00:00",
    "duration": "0.082s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

View a Transfer Job

Displays details of the job. A job is a single transaction inside a mass payment request.

Request Endpoint

```GET /payout/view-job?jobId=3 `

Filters

Parameter Type required Description
id int false job iD

Response

{
    "data": {
        "amount": 1000,
        "beneAmount": 99900,
        "beneficiaryAccountName": "Dan Internal",
        "beneficiaryAccountNumber": "tz15",
        "beneficiaryBankCode": null,
        "beneficiaryBankName": "",
        "beneficiaryBranchCode": null,
        "beneficiaryNote": "Hello salary3",
        "beneficiaryPrepaidCustomerId": null,
        "beneficiaryPrepaidFirst6Digits": null,
        "beneficiaryPrepaidLast4Digits": null,
        "beneficiaryRibCode": null,
        "createdAt": "2022-02-07 20:22:13",
        "currencyCode": "USD",
        "errorCode": 2,
        "errorCodeText": "user not found",
        "feeAmount": 1,
        "id": "3",
        "lastUpdatedAt": "2022-02-07 21:22:14",
        "message": "Tranzak user tz15 was not found.",
        "partnerTransactionRefId": null,
        "payerNote": "Transfer to user3",
        "payerReferenceId": "33333",
        "payout": {
            "_id": "PO3MYHNUTS9U8VVK791T",
            "title": "Payout cool title",
            "createdByUserId": 34,
            "totalAmount": 3000,
            "type": 1,
            "currencyCode": "USD",
            "mchTransactionRef": "ref12345566666",
            "description": null,
            "feeIsPaidByReceiver": 1,
            "totalFee": 0,
            "priorityFee": 35,
            "isPriority": 1,
            "status": 4,
            "totalNumberOfReceivers": 3,
            "isCreatedViaFileUpload": 0,
            "spreadSheetReportFilePath": "@datastore/payouts/2022/02/payout_1_PO3MYHNUTS9U8VVK791T.xlsx",
            "createdAt": "2022-02-07 20:20:24",
            "completedAt": "2022-02-07 20:22:14",
            "statusText": "completed",
            "typeText": "internal transfer",
            "totalNumberFailedTransactions": "3",
            "totalFailedTransactionAmount": 3000
        },
        "status": 5,
        "statusText": "failed"
    },
    "success": true,
    "dateTime": "2022-02-07T20:51:31+00:00",
    "duration": "0.045s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 34,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Download Transfer File (report)

Download a payout report file

Request Endpoint

```GET /payout/view-job?jobId=3 `

Filters

Parameter Type required Description
id int false job iD

Clone

Clones a PO

Parameter Type required Description
_id String true PO ID

Request Body

{
    "_id" : "POAMB0GRBDWPMYCVMKNN"
}

Response

A PO object . See VIEW section

List operators

Displays list of operators that funds may be transferred to

request body params

Endpoint

GET /payout/list-operators

Request Body

Parameter Type required Description
_id String true treasury account ID

Response

List of treasuries The FULL list of the operators will be returned (i.e. NO PAGINATION IS NEEDED)

{
    "data": [
        {
            "accountId": "AC1A58ZY5MJW4ZMGNRX9",
            "shortName": "BICEC - Cameroun",
            "name": "BICEC - Cameroun",
            "description": "CM | BICEC - Cameroun",
            "typeId": "2",
            "typeText": "debit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/bicec.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/bicec-dark.png",
            "isPaymentMethod": "1"
        },
        {
            "accountId": "AC2ZSJR2U0IJHOM7QQZH",
            "shortName": "SocGen",
            "name": "SocGen",
            "description": "CM | SocGen",
            "typeId": "2",
            "typeText": "debit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/socgen.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/socgen-dark.png",
            "isPaymentMethod": "1"
        },
        {
            "accountId": "ACJ9AT76QXUNSQI6994P",
            "shortName": "StanChart - Cameroon",
            "name": "StanChart - Cameroon",
            "description": "CM | StanChart - Cameroon",
            "typeId": "2",
            "typeText": "debit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/stanchart.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/stanchart-dark.png",
            "isPaymentMethod": "1"
        },
        {
            "accountId": "ACSFXZOZJTIFNSMPJUPX",
            "shortName": "Afriland Cameroon",
            "name": "Afriland Cameroon",
            "description": "CM | Afriland Cameroon",
            "typeId": "2",
            "typeText": "debit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/afriland.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/afriland-dark.png",
            "isPaymentMethod": "1"
        },
        {
            "accountId": "ACCPH2FT07NSQNULR7XJ",
            "shortName": "UBA Cameroon",
            "name": "UBA Cameroon",
            "description": "CM | UBA Cameroon",
            "typeId": "2",
            "typeText": "debit card",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/uba.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/uba-dark.png",
            "isPaymentMethod": "1"
        },
        {
            "accountId": "ACBUF2ADFJVJ4F5U78DR",
            "shortName": "Orange Money",
            "name": "Orange Money",
            "description": "CM | Orange Money",
            "typeId": "4",
            "typeText": "telecom wallet",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/orange.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/orange-dark.png",
            "isPaymentMethod": "1"
        },
        {
            "accountId": "ACHL4UGMZCIKCF82KV2Y",
            "shortName": "MTN Momo",
            "name": "MTN Momo",
            "description": "CM | MTN Momo",
            "typeId": "4",
            "typeText": "telecom wallet",
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/mtn.png",
            "cardAvatarUrl": "http://staging-api.tranzak.me/fapi/static/img/partners/cards/mtn-momo-dark.png",
            "isPaymentMethod": "1"
        }
    ],
    "success": true,
    "dateTime": "2021-12-28T10:42:55+00:00",
    "duration": "0.042s",
    "lang": "en-US",
    "userId": 109,
    "orgUserId": 108,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Refunds (Merchant)

Refund interface for merchant. Merchants may not directly create a refund request . They may however act on a request by : APPROVING or REJECTING it within the refund SLA lifetime

Status Codes

    const STATUS_PENDING = 1 ;
    const STATUS_APPROVED = 2; //Will be reported as 'processing'
    const STATUS_COMPLETED  = 3 ;
    const STATUS_CANCELLED = -1 ; //Cancelled by payer
    const STATUS_REJECTED = -2 ; //Rejected (by merchant or system)
    const STATUS_ONHOLD = -3 ; 

Types

    const TYPE_DEFAULT = 1;
    const TYPE_REVERSAL = 2;
    const TYPE_MERCHANT_REJECT = 3;
    const TYPE_CHARGEBACK = 4;

Request Reason Codes

    const REASON_CODE_MUTUAL_AGREEMENT = 1; // buyer and seller reached mutual agreement
    const REASON_CODE_ORDER_MISMATCH = 2; // order mismatch
    const REASON_CODE_SUSPICIOUS_TRANSACTION = 3; //suspicious transaction
    const REASON_CODE_DISPUTED_TRANSACTION = 4; //Part or all of the transaction terms of services was/were not fulfilled
    const REASON_CODE_OTHER = 5;  //Other reasons
    const REASON_CODE_OUTBOUND_PAYMENT_FAIL = 5;  //Other reasons
    const REASON_CODE_DEFICIENT_PRODUCT_QUALITY = 6;  //Other reasons
    const REASON_CODE_DUP_TRANSACTION = 7;  //Other reasons
    const REASON_CODE_PRODUCT_NOT_DELIVERED = 8;  //Other reasons

Rejection/Cancellation Reason codes

    const REJECT_INSUFF_EVIDENCE = 1;
    const REJECT_MUTUAL_AGREEMENT = 2;

Create Refund

Creates a merchant-issued refund for a transaction

Endpoint

POST /fapi/refund-mch/create

Request Params

Parameter Type required Description
refundedPaymentId string true The transaction ID to be refunded
amount Number no The amount to to be refunded. Set to NULL if FULL refund
reasonCode Number true Reason code. See GET /fapi/refund/list-request-reason-codes for list of reason codes
cancellationNote string No Optional note to payer/customer
{
    "refundedPaymentId": "MP220413Y8LCF5SDYYHK",
    "reasonCode": 2,
    "note": "Sorry for the inconvenience" ,
    "amount" : 12
}

Response

See VIEW Section

Approve a refund request

Approves a refund request

Endpoint

POST /v1/mch-refund/approve

Request Body Parameters

Parameter Type required Description
_id Number true Name of the sub-account
approvalNote string false Custom note
{
    "_id": "REFF94KJRWSPHW0N5CGJ",
    "approvalNote": "Thanks for supporting us"
}

Response

See the VIEW section

REJECT

Rejects a refund

Request body

Parameter Type required Description
refundId Number true Name of the sub-account
reasonCode Number true Name of the sub-account . See GET /fapi/refund-mch/list-reject-codes endpoint for list
cancellationNote string false custom note

Endpoint POST /v1/mch-refund/reject

{
    "_id": "REFHDJQJ86TNI84T118Q",
    "cancelCode" : 2,
    "cancellationNote": "we agreed on this!"
}

Response

See the VIEW section

View

Displays

Endpoint

GET /v1/mch-refund/view/_id?=REFUND_ID

Request Body Parameters

Parameter Type required Description
_id String true The refund ID

Response

Merchant account data

"data": {
        "_id": "REFF94KJRWSPHW0N5CGJ",
        "amount": 1,
        "approvedAt": "2022-04-06 23:11:16",
        "cancelledAt": null,
        "createdAt": "2022-04-06 23:08:51",
        "currencyCode": "XAF",
        "disputeId": null,
        "dueDate": "2022-04-09 23:08:51",
        "isApprovedBy": 2,
        "isApprovedByText": "system",
        "isCancelledBy": 0,
        "isCancelledByText": "",
        "isFinalRefund": 0,
        "isInitiatedBy": 1,
        "isInitiatedByText": "customer",
        "lastUpdatedAt": "2022-04-06 23:11:16",
        "lastUpdatedByStaffId": null,
        "merchantRefundNumber": null,
        "note": "My name is QR",
        "reasonCode": 2,
        "reasonText": "the order did not match the transaction agreement",
        "refundedActivityPoints": 0,
        "refundedPaymentId": "MP2204066B6MSMD8B1WK",
        "status": 3,
        "statusText": "completed",
        "type": 1
    },

List

Lists

Endpoint

GET /v1/mch-refund/list

Filter parameters

Parameter Type required Description
status int false Filter by status codes : e.g 1- PENDING, 2- approved , 3- completed , 4-cancelled , 5-rejected , 6-on-hold
type int false Filter by type codes : e.g 1- refund, 2- reversal
refundedPaymentId int false Filter by refunded transaction ID

Response

Listing

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "REFF94KJRWSPHW0N5CGJ",
                "refundedPaymentId": "MP2204066B6MSMD8B1WK",
                "type": "1",
                "currencyCode": "XAF",
                "amount": 1,
                "dueDate": "2022-04-09 23:08:51",
                "status": "3",
                "refundedActivityPoints": "0",
                "merchantRefundNumber": null,
                "note": "My name is QR",
                "reasonCode": "2",
                "isFinalRefund": "0",
                "disputeId": null,
                "isInitiatedBy": "1",
                "isCancelledBy": "0",
                "isApprovedBy": "2",
                "createdAt": "2022-04-06 23:08:51",
                "cancelledAt": null,
                "approvedAt": "2022-04-06 23:11:16",
                "lastUpdatedAt": "2022-04-06 23:11:16",
                "lastUpdatedByStaffId": null,
                "payment": null,
                "statusText": "completed",
                "reasonText": "the order did not match the transaction agreement",
                "isInitiatedByText": "customer",
                "isCancelledByText": "",
                "isApprovedByText": "system",
                "merchant": {
                    "_id": "tz22",
                    "ufId": null,
                    "displayName": "tz22",
                    "verifiedName": null,
                    "avatarUrl": null
                }
            },
            {
                "_id": "REFH6W5VG2VBCFCBZ8X3",
                "refundedPaymentId": "MP220406Z2SDCCUL4RH7",
                "type": "1",
                "currencyCode": "XAF",
                "amount": 1,
                "dueDate": "2022-04-09 21:15:46",
                "status": "1",
                "refundedActivityPoints": "0",
                "merchantRefundNumber": null,
                "note": "My name is QR",
                "reasonCode": "2",
                "isFinalRefund": "0",
                "disputeId": null,
                "isInitiatedBy": "1",
                "isCancelledBy": "0",
                "isApprovedBy": "0",
                "createdAt": "2022-04-06 21:15:46",
                "cancelledAt": null,
                "approvedAt": null,
                "lastUpdatedAt": null,
                "lastUpdatedByStaffId": null,
                "payment": null,
                "statusText": "pending approval",
                "reasonText": "the order did not match the transaction agreement",
                "isInitiatedByText": "customer",
                "isCancelledByText": "",
                "isApprovedByText": "",
                "merchant": {
                    "_id": "tz22",
                    "ufId": null,
                    "displayName": "tz22",
                    "verifiedName": null,
                    "avatarUrl": null
                }
            },
            
           
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 9
    },
    "success": true, 
}

List Reject Codes

Lists out rejection codes with translated text

Endpoint

GET /fapi/refund-mch/list-reject-codes

Response

    "data": {
        "1": "insufficient evidence",
        "2": "mutual agreement"
    },

Refunds

Refund interface for payer.

Status Codes

    const STATUS_PENDING = 1 ;
    const STATUS_APPROVED = 2; //Will be reported as 'processing'
    const STATUS_COMPLETED  = 3 ;
    const STATUS_CANCELLED = -1 ; //Cancelled by payer
    const STATUS_REJECTED = -2 ; //Rejected (by merchant or system)
    const STATUS_ONHOLD = -3 ; 

Types

    const TYPE_DEFAULT = 1;
    const TYPE_REVERSAL = 2;
    const TYPE_MERCHANT_REJECT = 3;
    const TYPE_CHARGEBACK = 4;

Request Reason Codes

    const REASON_CODE_MUTUAL_AGREEMENT = 1; // buyer and seller reached mutual agreement
    const REASON_CODE_ORDER_MISMATCH = 2; // order mismatch
    const REASON_CODE_SUSPICIOUS_TRANSACTION = 3; //suspicious transaction
    const REASON_CODE_DISPUTED_TRANSACTION = 4; //Part or all of the transaction terms of services was/were not fulfilled
    const REASON_CODE_OTHER = 5;  //Other reasons
    const REASON_CODE_OUTBOUND_PAYMENT_FAIL = 5;  //Other reasons
    const REASON_CODE_DEFICIENT_PRODUCT_QUALITY = 6;  //Other reasons
    const REASON_CODE_DUP_TRANSACTION = 7;  //Other reasons
    const REASON_CODE_PRODUCT_NOT_DELIVERED = 8;  //Other reasons

Rejection/Cancellation Reason codes

    const REJECT_INSUFF_EVIDENCE = 1;
    const REJECT_MUTUAL_AGREEMENT = 2;

Create a refund request

Creates a refund request

Endpoint

POST /v1/refund/create

Request Body Parameters

Parameter Type required Description
refundedPaymentId Number true the ID of the transaction to be refunded
note Number false The note to merchant
reasonCode Number true Reason codes . Call the relevant endpoint to obtain list of reason codes : e.g 1-mutual agreement , 2-order-mismatch , 3-suspicious/unauthorized transaction , 4- disputed transaction , 5-other
amount Number true Name of the sub-account
{
    "refundedPaymentId" : "352451",
    "note" : "please, refund",
    "reasonCode" : 2,
    "amount" : 1 
}

Response

See the VIEW section

CANCEL

Cancels a refund

Request body

Parameter Type required Description
refundId Number true Name of the sub-account
cancellationNote string no Note

Endpoint POST /v1/refund/cancel,

{
    "refundId" : "REF26G2BYD744UJEW23I"  ,
    "cancellationNote": "Sorry for the inconvenience" ,
}

Response

See the VIEW section

View

Displays

Endpoint

GET /v1/refund/view/_id?=REFUND_ID

Request Body Parameters

Parameter Type required Description
_id String true The refund ID

Response

Merchant account data

{
    "data": {
        "_id": "REFF94KJRWSPHW0N5CGJ",
        "amount": 1,
        "approvedAt": "2022-04-06 23:11:16",
        "cancelledAt": null,
        "createdAt": "2022-04-06 23:08:51",
        "currencyCode": "XAF",
        "disputeId": null,
        "dueDate": "2022-04-09 23:08:51",
        "isApprovedBy": 2,
        "isApprovedByText": "system",
        "isCancelledBy": 0,
        "isCancelledByText": "",
        "isFinalRefund": 0,
        "isInitiatedBy": 1,
        "isInitiatedByText": "customer",
        "lastUpdatedAt": "2022-04-06 23:11:16",
        "lastUpdatedByStaffId": null,
        "merchantRefundNumber": null,
        "note": "My name is QR",
        "reasonCode": 2,
        "reasonText": "the order did not match the transaction agreement",
        "refundedActivityPoints": 0,
        "refundedPaymentId": "MP2204066B6MSMD8B1WK",
        "status": 3,
        "statusText": "completed",
        "type": 1
    },
    "success": true,
 
}

List

Lists

Endpoint

GET /v1/refund/list

Filter parameters

Parameter Type required Description
status int false Filter by status codes : e.g 1- PENDING, 2- approved , 3- completed , 4-cancelled , 5-rejected , 6-on-hold
type int false Filter by type codes : e.g 1- refund, 2- reversal
refundedPaymentId int false Filter by refunded transaction ID

Response

Listing

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "REFF94KJRWSPHW0N5CGJ",
                "refundedPaymentId": "MP2204066B6MSMD8B1WK",
                "type": "1",
                "currencyCode": "XAF",
                "amount": 1,
                "dueDate": "2022-04-09 23:08:51",
                "status": "3",
                "refundedActivityPoints": "0",
                "merchantRefundNumber": null,
                "note": "My name is QR",
                "reasonCode": "2",
                "isFinalRefund": "0",
                "disputeId": null,
                "isInitiatedBy": "1",
                "isCancelledBy": "0",
                "isApprovedBy": "2",
                "createdAt": "2022-04-06 23:08:51",
                "cancelledAt": null,
                "approvedAt": "2022-04-06 23:11:16",
                "lastUpdatedAt": "2022-04-06 23:11:16",
                "lastUpdatedByStaffId": null,
                "payment": null,
                "statusText": "completed",
                "reasonText": "the order did not match the transaction agreement",
                "isInitiatedByText": "customer",
                "isCancelledByText": "",
                "isApprovedByText": "system",
                "merchant": {
                    "_id": "tz22",
                    "ufId": null,
                    "displayName": "tz22",
                    "verifiedName": null,
                    "avatarUrl": null
                }
            },
            {
                "_id": "REFH6W5VG2VBCFCBZ8X3",
                "refundedPaymentId": "MP220406Z2SDCCUL4RH7",
                "type": "1",
                "currencyCode": "XAF",
                "amount": 1,
                "dueDate": "2022-04-09 21:15:46",
                "status": "1",
                "refundedActivityPoints": "0",
                "merchantRefundNumber": null,
                "note": "My name is QR",
                "reasonCode": "2",
                "isFinalRefund": "0",
                "disputeId": null,
                "isInitiatedBy": "1",
                "isCancelledBy": "0",
                "isApprovedBy": "0",
                "createdAt": "2022-04-06 21:15:46",
                "cancelledAt": null,
                "approvedAt": null,
                "lastUpdatedAt": null,
                "lastUpdatedByStaffId": null,
                "payment": null,
                "statusText": "pending approval",
                "reasonText": "the order did not match the transaction agreement",
                "isInitiatedByText": "customer",
                "isCancelledByText": "",
                "isApprovedByText": "",
                "merchant": {
                    "_id": "tz22",
                    "ufId": null,
                    "displayName": "tz22",
                    "verifiedName": null,
                    "avatarUrl": null
                }
            },
            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 9
    },
    "success": true,
 
}

List Refund Request Reason Codes

Lists the reason codes with translated text for payer

Endpoint

GET /fapi/refund/list-request-reason-codes

Response

{
    "data": {
        "1": "mutual agreement between buyer and seller",
        "2": "the order did not match the transaction agreement",
        "3": "suspicious transaction",
        "4": "disputed transaction",
        "5": "other reasons",
        "6": "Deficient product/service",
        "7": "Duplicate transaction"
    },
    "success": true
 
}

Transaction Report

Transaction report generator

Status Codes


    const STATUS_DRAFT =  1 ;
    const STATUS_PENDING =  2 ;  //submitted
    const STATUS_PROCESSING = 3;
    const STATUS_COMPLETED = 4 ;  //completed
    const STATUS_CANCELLED = -2 ; //Cancelled/closed (failed, or cancelled)
    const STATUS_FAILED = -1 ; //Cancelled/closed (failed, or cancelled)

Create a report

Creates a report

Endpoint

POST /v1/report/create

Request Body Parameters

Parameter Type required Description
name String(100) true Name of report
description Number (200) false description of report
filterStartDateTime Datetime true Filter start date/time
filterEndDateTime Datetime false Filter end date/time
submitAfterCreation boolean false Whether to submit report for processing immediately after creating
accountIds Datetime false List of comma-separated accounts
includeInvoicePayment boolean false Whether to include invoice in the report
includeSales boolean false Whether to include sales data in report
includeSettlementHistory boolean false Whether/not to include settlement history
includeSettlementTransactions boolean false Whether/not to include settlement transaction details
includePayouts boolean false includePayouts
includeTransactions boolean false includeTransactions
includePlatformPayments boolean false includePlatformPayments
includeCustomerData boolean false includeCustomerData
{
    "name": "My report card",
    "description": "Report my case",
    "filterStartDateTime": "2021-9-11 13:57:41",
    "submitAfterCreation": 1,
    "accountIds": "MSAMIOF9281FKHPBI0FO,MSATYLZSDYA2ON7C4ZH7",
    "includeInvoicePayment": 1,
    "includeSales": 1,
    "includeSettlementHistory": 1,
    "includeSettlementTransactions": 1
}

Response

See the VIEW section

Update

Endpoint POST /v1/report/update

Request body params

Parameter Type required Description
reportId String true model ID
name String(100) true Name of report
description Number (200) false description of report
filterStartDateTime Datetime true Filter start date/time
filterEndDateTime Datetime false Filter end date/time
submitAfterCreation boolean false Whether to submit report for processing immediately after creating
{
    "reportId" : 12,
    "name" : "My report card",
    "description" : "Reportss my case" ,
    "filterStartDateTime" : "2021-10-1w 13:57:41",
    "filterEndDateTime" : "2021-10-18 13:57:41"
}

View

Displays model data

Endpoint

GET /v1/report/view/reportId?=REPORT_ID

Request Body Parameters

Parameter Type required Description
reportId String true The model ID

Response

Merchant account data

{
    "data": {
        "name": "My report card",
        "description": "Report my case",
        "filterStartDateTime": "2021-10-26 18:51:04",
        "status": 2,
        "userId": 87,
        "createdAt": "2021-10-26 18:51:04",
        "key": "RP3C07OFI7Z0I59TETDU",
        "id": 15,
        "staffId": null,
        "filterEndDateTime": null,
        "createPdfFile": null,
        "createExcelFile": null,
        "htmlFilePath": null,
        "pdfFilePath": null,
        "excelFilePath": null,
        "genStartTime": null,
        "genEndTime": null,
        "submittedAt": null,
        "completedAt": null,
        "lastUpdatedAt": null
    },
    "dateTime": "2021-10-26T18:51:04+00:00",
    "duration": "0.053s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

List

Lists

Endpoint

GET /v1/report/list

Filter parameters

Parameter Type required Description
status int false Filter by status codes : e.g 1- DRAFT, 2- STATUS_ACTIVE , 3- STATUS_PAID , 4-STATUS_CANCELLED
type int false Filter by type codes : e.g 1- refund, 2- reversal
id int false filter by ID

Response

Listing

{
    "data": {
        "list": [
            {
                "id": 15,
                "key": "RP3C07OFI7Z0I59TETDU",
                "name": "My report card",
                "userId": 87,
                "description": "Report my case",
                "status": 2,
                "staffId": null,
                "filterStartDateTime": "2021-10-26 18:51:04",
                "filterEndDateTime": null,
                "createPdfFile": 0,
                "createExcelFile": 0,
                "htmlFilePath": null,
                "pdfFilePath": null,
                "excelFilePath": null,
                "genStartTime": null,
                "genEndTime": null,
                "createdAt": "2021-10-26 18:51:04",
                "submittedAt": null,
                "completedAt": null,
                "lastUpdatedAt": null
            },
            {
                "id": 14,
                "key": "RPGREDUROTHX0ZXB1B3T",
                "name": "My report card",
                "userId": 87,
                "description": "Report my case",
                "status": 2,
                "staffId": null,
                "filterStartDateTime": "2021-10-22 11:47:19",
                "filterEndDateTime": null,
                "createPdfFile": 0,
                "createExcelFile": 0,
                "htmlFilePath": null,
                "pdfFilePath": null,
                "excelFilePath": null,
                "genStartTime": null,
                "genEndTime": null,
                "createdAt": "2021-10-22 11:47:19",
                "submittedAt": null,
                "completedAt": null,
                "lastUpdatedAt": null
            }
           
        ],
        "totalItems": 15,
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "currentPage": 1,
        "hasMore": false
    },
    "dateTime": "2021-10-26T18:55:26+00:00",
    "duration": "0.065s",
    "lang": "en-US",
    "roleId": 1,
    "roleLabel": "owner",
    "scopeUserId": 87,
    "success": true,
    "userId": 87
}

Download Report File

Downloads a generated report file

Request URL

GET /fapi/report/download-file?_id=REPORT_ID

Request Params

Parameter Type required Description
_id String(100) true _id of report

Response

The Raw Excel file

Other actions

Clone

Make a clone of a Payment link

Endpoint POST /v1/report/clone

submit

Submits a report for processing

POST /v1/report/submit

{
    "reportId" : 10
}

Payment Request

Interface to request for funds from a payer

Status Codes

     const STATUS_PENDING = 1 ;
     const STATUS_PAYMENT_IN_PROGRESS = 2; //transient stage
     const STATUS_COMPLETED = 3; //success
     const STATUS_FAILED = -1 ;    
     const STATUS_CANCELLED = -2;
     const STATUS_CANCELLED_BY_PAYER = -4;
     const STATUS_VOIDED = -3 ;

Create a request

Initiates a payment request to a mobile phone number. Upon creation, the mobile user will be required to authorize the payment.

Endpoint

POST /v1/request/create

Request Body Parameters

Parameter Type required Description
amount String(100) true amount
currencyCode String(3) true currency code
receivingAccountId String false The receivingAccountId
mobileWalletNumber Datetime false The mobile wallet number. If mW number is set, a transaction will be automatically generated and a sent to the payer MW account for authorization.
mobileWalletNumber boolean false Whether to submit report for processing immediately after creating
{
    "amount": 1,
    "currencyCode" : "XAF", 
    "note" : "This is a noty note",       
    "receivingAccountId" : "MSAZTFNJSNA1S0VEJPIX" ,
    "mwNumber" : "23768067567"  
}

Response

See the VIEW section

Create Transaction

This endpoint is to generate a transaction payload for a request.

Request Body Parameters

POST /fapi/request/create-transaction

Parameter Type required Description
requestId String(100) true ID of request
{
    "_id" : "REQ220218WGTVJDO4TG3"
}

Response

The response is a standard Transaction payload. See Transaction VIEW page.

VIEW

View the request data GET /fapi/request/view?_id=:REQID

Response

{
    "data": {
        "_id": "REQ220511Y7VIN9VTCRD",
        "amount": 1000,
        "appId": "c4jtk945h35i",
        "beneNote": "",
        "createdAt": "2022-05-11 15:43:06",
        "createdByUserId": 25,
        "currencyCode": "XAF",
        "description": "Merchant Payment",
        "id": 8,
        "invoiceId": null,
        "itemDetails": "",
        "lastUpdatedAt": null,
        "mchTransactionRef": "2333333",
        "mobileWalletNumber": null,
        "notifyUrl": null,
        "orgUserId": 25,
        "payerNote": "",
        "payerUserId": null,
        "payment": null,
        "paymentId": null,
        "receivingAccount": null,
        "receivingAccountId": null,
        "returnUrl": "",
        "status": -4,
        "statusText": "cancelled(by payer)",
        "type": 2
    },
    "success": true,
 
}

Cancel a request

This endpoint is used to cancel a payment request. NOTE : Cancellation may be done by the creator (merchant) or the payer

Request Body Parameters

POST /fapi/request/cancel

Parameter Type required Description
_id String(100) true ID of request
{
    "_id" : "REQ220218WGTVJDO4TG3"
}

Response

See VIEW section.

List Requests

Paginated list of requests

Endpoint

GET /request/list

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "requestId": "REQ220512JUJ9VVRTGTW",
                "status": "pending",
                "amount": 1000,
                "currencyCode": "XAF",
                "description": "Merchant Payment",
                "itemDetails": "",
                "mchTransactionRef": "2333333",
                "creationTime": "2022-05-12 19:49:48"
            },
            {
                "requestId": "REQ2205126SURX2ZS0EF",
                "status": "pending",
                "amount": 1000,
                "currencyCode": "XAF",
                "description": "Merchant Payment",
                "itemDetails": "",
                "mchTransactionRef": "2333333",
                "creationTime": "2022-05-12 19:49:47"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 2,
        "totalItems": 18
    },
    "success": true,
 
}

Transaction

View, update, capture a transaction

Status Codes

    const STATUS_PENDING = 10; // transcient state
    const STATUS_PAYMENT_IN_PROGRESS = 11 ; //Payer is in process of authorizing payment. This may be useful to merchant QR payment as the merchant can be shown the progress of the payment - transcient state
    const STATUS_PENDING_INBOUND_PAYMENT = 20 ; // Awaiting transaction authorization from FUNDING source . 
    const STATUS_INBOUND_EXTPAY_FAILED = -20; //Inbound external payment failed. Payer should be presented with option to select PM
    const STATUS_OUTBOUND_PROCESSING_BY_THIRD_PARTY = 30 ; //transcient state
    const STATUS_COMPLETED = 40;    //Completed successfully - terminal state
    const STATUS_FAILED = -40 ; //Terminal state - FAILED
    const STATUS_REVERSED = -41; //Reversal/refund completed  - terminal state
    const STATUS_REFUNDED = -42 ; //Refunded - terminal state
    const STATUS_CANCELLED = -43; //Cancelled - terminal state
    const STATUS_EXPIRED = -44;  // Txn expired . terminal state       

Types

    const TYPE_TRANSFER =  1; //Default service type TRANSFER for non-merchant p2p
    const TYPE_PAYMENT = self::TYPE_TRANSFER ;
    const TYPE_MERCHANT_PAYMENT = 3;
    const TYPE_REFUND = 4;
    const TYPE_REVERSAL = 5;
    const TYPE_FEE = 6;    
    const TYPE_TOPUP = 7; 
    const TYPE_CASHOUT = 8; 

Update a transaction

This call is for updating a transaction in pending state in preparation for during the capture process.

Endpoint

POST /v1/transaction/update

Request Body Parameters

Parameter Type required Description
payerAccountId Number false The payment method account ID
collectedCouponId Number false the coupon ID (for merchant payments)
tipAmount Number false the tip amount in transaction currency. Applicable only to merchant transactions
giftCardId Number false Apply the gift card ID if applicable . The gift card amount will be automatically calculated based on available balance

Response

The response is a standard TRANSACTION response payload. See the transaction response section

See Transaction VIEW page

Capture a transaction

Capturing is the process of authorizing/confirming a transaction.

Endpoint

POST /v1/transaction/capture

Request Body Parameters

Parameter Type required Description
payerAccountId Number false The payment method account ID (Set if the payer uses a diff PM)
paymentPin Number true the user's 6-digit payment PIN used for authorizing transactions

Response

Response is standard Transaction payload response.

View transaction

Views transaction details. The details of a transaction will vary slightly depending on :

  1. Whether the current user is the payer or beneficiary.
  2. Whether the transaction is PENDING or in TERMINAL (completed/refunded/failed) state .

GET /v1/transaction/view?id=_TRANSACTION_ID

Request Body Parameters

Parameter Type required Description
_id String true The transaction ID

Response

Response is standard Transaction payload response. The payload for PAYER and BENEFICIARY are slightly different. the resulting payload will be generated based on the current user

PAYER's payload for transaction in PENDING State

{
    "data": {
        "_id": "MP220420OLT1VMFESEMA",
        "amount": 1000,
        "beneAccount": {
            "name": "w6shp1cry97x",
            "currencyCode": "XAF",
            "_id": "MSAZ0I6E0JALVIPEYBSI"
        },
        "beneUser": {
            "_id": "tz22",
            "displayName": "tz22",
            "beneficiaryAccountNumber": "tz22",
            "isVerified": 0,
            "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
            "note": "this is a nice note",
            "netAmount": 1000,
            "currencyCode": "XAF",
            "amount": 1000,
            "fee": 0
        },
        "completedAt": null,
        "createdAt": "2022-04-20 15:54:53.341854",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "tz22",
            "ufId": null,
            "displayName": "tz22",
            "verifiedName": null,
            "avatarUrl": null,
            "orgUserId": "tz22"
        },
        "description": "Payment to tz22",
        "disablePayerAccountSelection": null,
        "isInitiatedByPayer": 1,
        "itemDetails": "",
        "mchTransactionRef": null,
        "payerAccount": {
            "_id": "ACYXG5PYRK3UZ2XW5PZW",
            "name": "Primary balance",
            "description": "",
            "balance": 99999970,
            "currencyCode": "XAF",
            "isExternal": false
        },
        "payerOrgUser": {
            "_id": "tz22",
            "displayName": "tz22",
            "avatarUrl": null,
            "currencyCode": "XAF",
            "amount": 1000,
            "fee": 0,
            "bonusAmount": 0,
            "netAmount": 1000,
            "isVerified": 0
        },
        "paymentMethods": [
            {
                "_id": "ACYXG5PYRK3UZ2XW5PZW",
                "balance": 99999970,
                "providerName": "Tranzak",
                "partnerAccountHolderId": "",
                "partnerAccountHolderName": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo.png",
                "name": "Primary account balance",
                "ussdCode": null
            },
            {
                "_id": "PMKF8S8YPL4DG12RCGKU",
                "balance": null,
                "providerName": "MTN Momo",
                "partnerAccountHolderId": "237675589201",
                "partnerAccountHolderName": null,
                "avatarUrl": "/static/img/partners/mtn.png",
                "name": "MTN Momo | 237675589201",
                "ussdCode": "*126#"
            },
            {
                "_id": "PMED9H63ZA9DR0FAF3J5",
                "balance": null,
                "providerName": "Orange Money",
                "partnerAccountHolderId": "237612950679",
                "partnerAccountHolderName": null,
                "avatarUrl": "/static/img/partners/orange.png",
                "name": "Orange Money | 237612950679",
                "ussdCode": "#150#"
            },
            {
                "_id": "PMBB5DKOPNJX578Q5M9B",
                "balance": null,
                "providerName": "MTN Momo",
                "partnerAccountHolderId": "237674728670",
                "partnerAccountHolderName": "Dan Momo Ntui",
                "avatarUrl": "/static/img/partners/mtn.png",
                "name": "MTN Momo | 237674728670",
                "ussdCode": "*126#"
            },
            {
                "_id": "MSAW9KFE5IRA16E05T2L",
                "balance": 20,
                "providerName": "Tranzak merchant account",
                "partnerAccountHolderId": "MSAW9KFE5IRA16E05T2L",
                "partnerAccountHolderName": " 1",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo.png",
                "name": " 1",
                "ussdCode": "*126#"
            }
        ],
        "requirePinForTransaction": 1,
        "returnUrl": "",
        "status": 10,
        "statusText": "pending",
        "type": 3,
        "typeText": "merchant payment"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-04-20T15:54:53+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.121s",
        "userId": 22,
        "_userId": "tz22",
        "scopeId": null,
        "type": 3,
        "orgUserId": 22,
        "roleId": 1000,
        "roleLabel": "owner",
        "firstName": null,
        "displayName": "tz22"
    }
}

Payer's payload For transaction in TERMINAL (completed) state

{
    "data": {
        "_id": "MP220120POU1NRP84W0O",
        "amount": 1000,
        "bene": {
            "displayName": "tz12",
            "beneficiaryAccountId": "tz12",
            "isVerified": 0,
            "avatarUrl": null,
            "note": null,
            "netAmount": 900
        },
        "completedAt": "2022-01-20 01:39:29.664083",
        "createdAt": "2022-01-20 00:16:51.808261",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "syswkz2y65ugrmto",
            "displayName": "tz13",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null,
            "primaryCurrencyCode": "XAF"
        },
        "description": "Payment to tz12",
        "disablePayerAccountSelection": null,
        "isInitiatiatedByPayer": true,
        "itemDetails": null,
        "mchTransactionRef": null,
        "membership": {
            "planId": "MEMSHOSURRCOVX58",
            "_id": "CMDIJ6S3QAGO84Y6",
            "name": "VIP membership",
            "description": "buy at half price!",
            "avatarUrl": "https://avatar.com/image.png",
            "payerAmount": 100,
            "payerCurrencyCode": "XAF",
            "beneAmount": 100,
            "beneCurrencyCode": "XAF"
        },
        "merchantCouponAmount": 0,
        "payer": {
            "displayName": "tz13",
            "avatarUrl": null,
            "currencyCode": "XAF",
            "amount": 1000,
            "fee": 0,
            "bonusAmount": 0,
            "merchantDiscountAmount": 0,
            "giftCardAmount": 0,
            "membershipAmount": 100,
            "netAmount": 900,
            "isVerified": 0,
            "account": {
                "_id": "ACWO7CG5KTSLE7FPL1Z8",
                "name": "Primary balance",
                "description": "",
                "balance": 99999999100,
                "currencyCode": "XAF",
                "isExternal": false,
                "openingBalance": 100000000000,
                "closingBalance": 99999999100
            }
        },
        "requirePinForTransaction": 1,
        "returnUrl": null,
        "status": 2,
        "statusText": "completed",
        "tipAmount": 0,
        "type": 3,
        "typeText": "merchant payment"
    },
    "success": true,
    "dateTime": "2022-01-20T11:10:10+00:00",
    "duration": "0.061s",
    "lang": "en-US",
    "userId": 13,
    "orgUserId": 13,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

BENEFICIARY Payload in TERMINAL state

{
    "data": {
        "_id": "MP220120POU1NRP84W0O",
        "amount": 1000,
        "bene": {
            "displayName": "Merchant account (Default)",
            "beneficiaryAccountId": "tz12",
            "isVerified": 0,
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
            "note": null,
            "netAmount": 900,
            "currencyCode": "XAF",
            "amount": 1000,
            "fee": 0,
            "giftCardDiscountAmount": 0,
            "membershipDiscountAmount": 100,
            "account": {
                "name": "Merchant account (Default)",
                "currencyCode": "XAF",
                "_id": "MSAEDQL3H3UBK40L5H23",
                "openingBalance": 0,
                "closingBalance": 900
            }
        },
        "completedAt": "2022-01-20 01:39:29.664083",
        "createdAt": "2022-01-20 00:16:51.808261",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "sysk4ml12hm856e9",
            "displayName": "tz12",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null,
            "primaryCurrencyCode": "XAF"
        },
        "description": "Payment to tz12",
        "disablePayerAccountSelection": null,
        "isInitiatiatedByPayer": true,
        "itemDetails": null,
        "mchTransactionRef": null,
        "membership": {
            "planId": "MEMSHOSURRCOVX58",
            "_id": "CMDIJ6S3QAGO84Y6",
            "name": "VIP membership",
            "description": "buy at half price!",
            "avatarUrl": "https://avatar.com/image.png",
            "payerAmount": 100,
            "payerCurrencyCode": "XAF",
            "beneAmount": 100,
            "beneCurrencyCode": "XAF"
        },
        "merchantCouponAmount": 0,
        "payer": {
            "displayName": "tz13",
            "avatarUrl": null
        },
        "requirePinForTransaction": 1,
        "returnUrl": null,
        "status": 2,
        "statusText": "completed",
        "tipAmount": 0,
        "type": 3,
        "typeText": "merchant payment"
    },
    "success": true,
    "dateTime": "2022-01-20T11:10:35+00:00",
    "duration": "0.055s",
    "lang": "en-US",
    "userId": 12,
    "orgUserId": 12,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Poll Transaction

Polls the transaction to obtain the status. Useful for payments that use external funding sources.

Endpoint

GET /v1/transaction/poll?_id=TXN_ID

Response

{
    "status": 1,
    "statusText": "pending"
}

Refresh Inbound External Payment Status

For payments using external payment methods. If the payment too long without status update, the payer may be asked to "refresh" the status of the payment to obtain the latest status from the service provider. The delay may be caused by payment not being sent/received or provider internal issues.

Request Endpoint

GET /transaction/refresh-inbound-payment-status

{
   "_id" : "MP2202070XD9JIW6FBZS"           
}

Response

Success/failure message

    "data": {
        "message": "success"
    },

List transaction history

Displays Transaction history

Endpoint

POST /v1/transaction/list

Search Filter params

Parameter Type required Description
_id string false transaction ID
accountId string false Any account ID (could be payer or benef)
startDateTime Date false start date time
endDateTime Date false end date time
payerAccountId Number false payer's (source) account ID
beneAccountId Number false beneficiary's (destination) account ID
payerUserId String false payer UserId
beneUserId String false beneficiary's user ID
payerOrgUserId String false payer's org User ID
customerId String false Transactions involving this customer (for merchants)
payerUserId String false Filter by SID of the authorizing user
beneIdToken String false the beneficiary token (e.g mobile number, bank account number) e.g 237683160662
description String false transaction narration

Response

{
   "data": {
       "currentPage": 1,
       "hasMore": false,
       "list": [
         {
               "_id": "MP220120HZ8YSECOBMV0",
               "currencyCode": "USD",
               "amount": 100,
               "status": "2",
               "statusText": "completed",
               "type": "3",
               "typeText": "merchant payment",
               "serviceType": "1",
               "serviceTypeText": "payment",
               "description": "backdoor | demo data",
               "completedAt": "2022-01-20 13:24:29.978583",
               "isInitiatiatedByPayer": "1",
               "couponAmount": 0,
               "tipAmount": 0,
               "payerOrgUser": {
                   "merchantDiscountAmount": 0,
                   "currencyCode": "XAF",
                   "amount": 56461,
                   "fee": 0,
                   "bonusAmount": 0,
                   "giftCardAmount": 0,
                   "netAmount": 56461,
                   "_id": "sysmk14qw1xwj5ys",
                   "displayName": " ",
                   "isVerified": "0",
                   "avatarUrl": null
               },
               "payerAccount": {
                   "_id": "ACJRIPS25TL7290AR7XX",
                   "currencyCode": "XAF",
                   "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                   "name": "Primary account",
                   "description": "",
                   "type": "1",
                   "typeText": "Primary account"
               },
               "beneUser": {
                   "currencyCode": "XAF",
                   "amount": 56461,
                   "fee": 0,
                   "netAmount": 56461,
                   "_id": "sysk4ml12hm856e9",
                   "displayName": "tz12",
                   "isVerified": "0",
                   "avatarUrl": null
               },
               "beneAccount": {
                   "_id": "MSAAQNHR8OVSDGAKVPJ6",
                   "currencyCode": "XAF",
                   "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "name": "m3",
                   "description": "Party scatter m3",
                   "type": "6",
                   "typeText": "Merchant account"
               },
               "service": {
                   "type": "1",
                   "typeText": "payment"
               }
           },
           
       ],
       "pageCount": [
           1,
           50
       ],
       "pageSize": 10,
       "totalItems": 10
   },
   "success": true,
   "dateTime": "2022-01-18T21:50:49+00:00",
   "duration": "0.077s",
   "lang": "en-US",
   "userId": 34,
   "orgUserId": 33,
   "roleId": 1000,
   "roleLabel": "super admin/owner",
   "hostname": "cortex01",
   "serverIpAddress": "192.168.137.2"
}

List SALES

Sales or sale transactions are a type of inbound transactions where :

  1. The current user is a merchant and the beneficiary ; And
  2. The receiving account type = merchant (sub)account

Request Endpoint

GET /v1/transaction/sales

Filter params

All filters applicable to transactions may be applied to sales. The following are extra filters supported by sales:

Parameter Type required Description
mchTransactionRef String false merchant custom transaction ref
giftCardPackId String false gift card pack ID
couponId String false coupon ID
withTip String false whether to filter by transactions with tips
membershipPlanId String false membership plan ID

Response

List of sale transactions The response payload is same as in transaction plus a few extra attributes

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
               

                 "giftCard": {
                    "_id": "GPYZXQ2IZNF3JW83",
                    "name": "Save on purchasesSave on purchasesSave on! 100F off!",
                    "description": "Big things popping. Small things stopping it.",
                    "avatarUrl": null,
                    "valueAmount": "10000",
                    "currencyCode": "XAF",
                    "payerAmount": 100,
                    "payerCurrencyCode": "XAF",
                    "beneAmount": 100,
                    "beneCurrencyCode": "XAF",
                },

                "coupon": {
                    "_id": "CPMRLNVKR065WXB8",
                    "name": "Save on purchasesSave on purchasesSave on! 100F off!",
                    "description": "Big things popping. Small things stopping it.",
                    "amountOff": "100",
                    "currencyCode": "XAF",
                    "percentageOff": null,
                    "code": "VF48JK"
                },
                "membership": {
                    "_id": "CMA90I7XG7BQPXOV",
                    "planId": "MEMSHOSURRCOVX58",
                    "name": "VIP membership",
                    "description": "buy at half price!",
                    "payerAmount": 100,
                    "payerCurrencyCode": "XAF",
                    "beneAmount": 100,
                    "beneCurrencyCode": "XAF",
                    "avatarUrl": "https://avatar.com/image.png"
                }
            },

            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 10
    },
    "success": true,
    "dateTime": "2022-01-18T21:50:49+00:00",
    "duration": "0.077s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

List OUTbound transactions

Outbound transactions are transactions where the current user is the payer .

GET /v1/transaction/outbound

Filter params

See list transactions

Response

Same as list transactions response

List INbound transactions

Outbound transactions are transactions where the current user is the payer

GET /v1/transaction/inbound

Filter params

See list transactions

Response

Same as list transactions response

View Inbound External Transactions

Inbound External transactions are transaction funded by external payment methods (e.g MWP) ; If an ext payment method is used to fund a transaction, then while waiting for the ext payment to finalize, then status of the ext payment can be tracked by calling this interface

Request body

GET /v1/transaction/view-inbound-ext-payment?_id=IBXXXX

Response

The transaction payload is returned with inboundExternalPayment data Sample transaction showing inbound payment data. The status of the inbound extPay can be tracked using this interface.

{
    "data": {
        "_id": "PP20211110G41L6O6866",
        "amount": 1694,
        "bene": {
            "displayName": "MTN Momo | 655237546",
            "isVerified": 0,
            "avatarUrl": "http://rest.tranzak.me/static/img/partners/mtn.png",
            "currencyCode": "XAF",
            "amount": 1694,
            "fee": 0,
            "netAmount": 1694,
            "account": {
                "name": "MTN Momo | 655237546",
                "currencyCode": "XAF"
            }
        },
        "completedAt": "2021-11-10 18:26:45.801312",
        "createdAt": "2021-11-10 17:26:43.641522",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "sysn887xszvk8coz",
            "displayName": "tz87",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null
        },
        "description": "Payment to tz87",
        "inboundExternalPayment": {
            "_id": "IB20211110URNT2O",
            "serviceProviderShortName": "MTN Momo",
            "serviceProviderName": "MTN Momo",
            "serviceProviderCountryCode": "CM",
            "partnerAccountHolderId": "655237546",
            "partnerAccountHolderName": null,
            "avatarUrl": "/static/img/partners/mtn.png",
            "providerType": "telecom wallet",
            "status": 2,
            "statusText": "completed"
        },
        "payer": {
            "displayName": "Tranzak System Account | Cameroon",
            "avatarUrl": null
        },
        "status": 2,
        "statusText": "completed",
        "type": 1,
        "typeText": "transfer"
    },
    "success": true,
    "dateTime": "2021-11-10T17:33:00+00:00",
    "duration": "0.052s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Cancel Inbound External Payment

Cancels an ongoing inbound ext payment . Upon cancelling the inbound ext payment, the user should be redirected to the payment authorization page

Request body

POST /v1/transaction/cancel-inbound-ext-payment

{
    "_id" : "IB20211110Z2SVGY"
}

Response

The transaction payload is returned with inboundExternalPayment data. The status of the inboundExtPayment to confirm

{
    "data": {
        "_id": "PP20211110890QCQW90N",
        "amount": 1694,
        "bene": {
            "displayName": "MTN Momo | 655237546",
            "isVerified": 0,
            "avatarUrl": "http://rest.tranzak.me/static/img/partners/mtn.png",
            "currencyCode": "XAF",
            "amount": 1694,
            "fee": 0,
            "netAmount": 1694,
            "account": {
                "name": "MTN Momo | 655237546",
                "currencyCode": "XAF"
            }
        },
        "completedAt": null,
        "createdAt": "2021-11-10 17:46:14.051510",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "sysn887xszvk8coz",
            "displayName": "tz87",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null
        },
        "description": "Payment to tz87",
        "inboundExternalPayment": {
            "_id": "IB20211110MM1VOB",
            "serviceProviderShortName": "MTN Momo",
            "serviceProviderName": "MTN Momo",
            "serviceProviderCountryCode": "CM",
            "partnerAccountHolderId": "655237546",
            "partnerAccountHolderName": null,
            "avatarUrl": "/static/img/partners/mtn.png",
            "providerType": "telecom wallet",
            "status": 5,
            "statusText": "cancelled"
        },
        "payer": {
            "displayName": "Tranzak System Account | Cameroon",
            "avatarUrl": null
        },
        "paymentMethods": [],
        "status": 1,
        "statusText": "pending",
        "type": 1,
        "typeText": "transfer"
    },
    "success": true,
    "dateTime": "2021-11-10T17:46:26+00:00",
    "duration": "0.057s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

User Management

Manage/view user-related settings

View user info

GET /v1/user/info

Request Body Parameters

NA

Response

(to be filtered) The user info

{
    "data": {
        "_id": "845f5c7c0a7249c69e689054e1634b15",
        "avatarUrl": "null",
        "countryCode": "CM",
        "displayName": null,
        "firstName": null,
        "hasSetPaymentPin": false,
        "lastName": null,
        "merchant": {
            "_id": "845f5c7c0a7249c69e689054e1634b15",
            "displayName": null,
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": "null",
            "primaryCurrencyCode": "XAF",
            "type": 2,
            "typeText": "business account",
            "firstName": null,
            "lastName": null
        },
        "merchantid": 4,
        "orgUserId": "845f5c7c0a7249c69e689054e1634b15",
        "primaryCurrencyCode": "XAF",
        "roleId": 1000,
        "roleName": "owner",
        "type": 2,
        "typeText": "business account",
        "verifiedName": null
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-04-14T09:22:26+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.035s",
        "userId": 25,
        "_userId": "845f5c7c0a7249c69e689054e1634b15",
        "scopeId": "stebnuufw93vrs",
        "type": 2,
        "orgUserId": 25,
        "roleId": 1000,
        "roleLabel": "owner",
        "firstName": null,
        "displayName": null,
        "testSpecialCharacters": "Crédit"
    }
}

Set Payment PIN

Sets a payment PIN for particular user

POST /v1/user/set-pin

Request Body Parameters

Parameter Type required Description
pin Number(6) true 6-digit payment PIN
pinConfirm Number(6) false 6-digit payment PIN (confirmation)
{ 
    "pin" : "123456" ,
    "pinConfirm" : "123456" 
}

Response

Success/failure response

{
    "data": [],
    "success": true,
    "dateTime": "2021-11-10T16:56:23+00:00",
    "duration": "0.061s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Reset Payment PIN

Reset the current PIN

POST /v1/user/reset-pin

Request Body Parameters

Parameter Type required Description
currentPin Number(6) true 6-digit payment PIN
pin Number(6) true 6-digit payment PIN
pinConfirm Number(6) false 6-digit payment PIN (confirmation)
{
    "currentPin" : "123456" ,
    "pin" : "123456" ,
    "pinConfirm" : "123456" 
}

Response

Success/failure response

{
    "data": [],
    "success": true,
    "dateTime": "2021-11-10T16:56:23+00:00",
    "duration": "0.061s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Get User Balance Summary

Retrieves the backend total balance for user. The balance = Primary account + total balance on all merchant sub-accounts (if applicable)

Request

GET /user/balance

Response

{
    "data": {
        "currencyCode": "XAF",
        "primaryAccountBalance": 99992885914,
        "totalBalance": 100450220014,
        "totalMerchantAccountBalance": "457334100"
    },
    "success": true,
    "dateTime": "2022-02-09T19:09:47+00:00",
    "duration": "0.063s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Generate In-Person Authorization Code

This endpoint generates the authorization code for a payer that intends to make an in-person (QR) payment.

Endpoint

POST /fapi/user/gen-in-person-auth-code

Request Params

Parameter Type required Description
paymentMethodId string false Optional. The payment method ID that will be used to make payment.

Response

{
    "data": {
        "authCode": "tzx34kqn5kft3599j636bd6",
        "expires": "2022-08-05 05:10:55",
        "paymentMethodId": "ACXECXC9M4V5Y4PK1MCU"
    },
    "success": true,
}
 

X-Pay / Transfer

Movement of funds from one account to another.

Transfer to an account

Make an arbitrary transfer to an account. Account is arbitrary and shall include all types : e.g PaymentMethods , merchant subaccounts, virtual accounts, primary accounts ...etc

POST /v1/xpay/to-account

Request Body Parameters

Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String (3) false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
beneAccountId String true the Tranzak account ID of the receiver e.g user account , Fundraiser accountId , etc .. eg: ACVFF9Z3MTI0SKLZ2Z2A
payerAccountId String false the Tranzak account ID of the PAYER (could be tranzak wallet, or external payment method, ) eg: PMOWOGHC17NJR0YXCAT4
note String false The narration (to be shown to beneficiary)
requestRecurringPayment int false Enable recurring payment flag (if supported)
{
    "amount": 1000,
    "currencyCode" : "XAF" ,
    "beneAccountId" : "ACVFF9Z3MTI0SKLZ2Z2A",
    "payerAccountId" : "PMOWOGHC17NJR0YXCAT4",
    "note" : "this is a nice note",
    "requestRecurringPayment" : 1 
 }

Response

The response is a standard TRANSACTION response payload. See Transaction

Transfer to a User

Make a transfer to a Tranzak user.

Endpoint

POST /v1/xpay/to-user

Request Params
Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String (3) false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
beneUserId String true the user friendly ID eg: tzabc123333 .
note String (200) false narration

Request body

{
    "amount": 100,
    "currencyCode" : "XAF" ,
    "beneUserId" : "stebnuufw93vrs" ,
    "note" : "Thanks for all"  ,
    "requestRecurringPayment" : 1 

}

Transfer to APP

Make a transfer to a merchant using an appId

Endpoint

POST /v1/xpay/to-app

Request Params
Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String (3) false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
appId String true the app ID (as provided from user center)
note String (200) false narration
notifyUrl String (200) false notification URL

Request body

{
    "amount": 100,
    "currencyCode" : "XAF" ,
    "beneUserId" : "stebnuufw93vrs" ,
    "note" : "Thanks for all"  ,
    "requestRecurringPayment" : 1 

}

Response

The response is a transaction payload. See the transaction [[VIEW]] page for sample. After receiving the response, the user should be presented with the payment authorization page

Transfer to Mobile Wallet

To telco MW operators (e.g. Momo , Orange Money)

Endpoint

POST /v1/xpay/to-mobile-wallet

Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String (3) false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
beneficiaryAccountNumber String true the MW number eg: 2376xxxxxxx . The number must be prefixed with the country dial code
payerAccountId String false the Tranzak account ID of the PAYER (could be tranzak wallet, or external payment method)
note String (200) false narration
{
"amount": 100,
"beneficiaryAccountNumber" : "237674728670" ,
"payerAccountId" : "PMOWOGHC17NJR0YXCAT4",
"note" : "Cheers"  
}

Response

The response is a transaction payload. See the transaction [[VIEW]] page for sample. After receiving the response, the user should be presented with the payment authorization page

Transfer to Mobile Wallet with instant CAPTURE

Transfer to mobile wallet with instant CAPTURE, i.e. no need to issue separate call to /transaction/capture interface . Instant capture would work if payerAccountId is an external/linked payment method

Endpoint

POST /v1/xpay/to-mobile-wallet-capture

Request Body

{
"amount": 1,
"beneficiaryAccountNumber" : "237674728670" ,
"payerAccountId" : "PMOWOGHC17NJR0YXCAT4" ,
"note" : "Cheers"  
}

Transfer FROM an account

Launch a transfer from an account to another. Usually from a merchant or virtual account into another

POST /v1/xpay/between-accounts

Request Body Parameters

Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String (3) false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
beneAccountId String true the Tranzak account ID of the receiver eg: 12345465
payerAccountId String true The internal destination account
{
    "amount": "1000",
    "beneAccountId": "MSAGX8J27RB2LM0214PF",
    "payerAccountId": "MSA5LKKPMI4470BSIFVY"
}

Response

The response is a standard TRANSACTION response payload. See Transaction

Transfer to a customerId

Transfer to a customerId

POST /v1/xpay/to-customer

Request Body Parameters

Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
customerId String true the customer ID
description String false description
{
    "amount": 10000,
    "customerId" : "CUS34MWFKF8548MQ",
    "outboundAccountId" : "666666666666666666" ,
    "outboundAccountName" : "Dannnnnnnn"   
}

Response

The response is a standard TRANSACTION response payload. See Transaction

Transfer Bank Account

Transfer to a bank debit account

POST /v1/xpay/to-bank-account

Request Body Parameters

Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
treasuryServiceId String true the provider ID taken from /list?type=TYPE_BANK_DEBIT ( TYPE_BANK_CREDIT = 1; TYPE_BANK_DEBIT = 2; TYPE_BANK_PREPAID = 3; TYPE_TELCO_WALLET = 4; TYPE_OTHER_WALLET = 5; )
beneficiaryAccountNumber String true bank account number
beneficiaryAccountName String true bank account name
beneficiaryBranchCode String true bank branch code
beneficiaryRibCode String true the RIB code
payerAccountId String false Optional, the payment method
note String false Optional, the narration (for the beneficiary)
{
    "amount": 1000,
    "treasuryServiceId" : 6,
    "beneficiaryAccountNumber" : "07766373737373",
    "beneficiaryAccountName" : "Dan UBA",
    "beneficiaryBranchCode" : "1222",
    "beneficiaryRibCode" : "22",
    "payerAccountId" : "ACIFBPZ7ZX69HEZ5UQD8" ,
    "note" : "beneficiary note"
 }

Response

The response is a standard TRANSACTION response payload. See Transaction

Transfer Bank Account

Transfer to a bank debit account

POST /v1/xpay//to-prepaid-card

Request Body Parameters

Parameter Type required Description
amount Number true the amount to be transferred/paid
currencyCode String false the 3-letter currency code. Defaults to the payer's own currency code e.g XAF, USD, CNY , EUR
treasuryServiceId String true the provider ID taken from /list?type=TYPE_BANK_PREPAID ( TYPE_BANK_CREDIT = 1; TYPE_BANK_DEBIT = 2; TYPE_BANK_PREPAID = 3; TYPE_TELCO_WALLET = 4; TYPE_OTHER_WALLET = 5; )
beneficiaryAccountName String true Name of account holder
beneficiaryPrepaidFirst6Digits String true First 6-digits of the prepaid card
beneficiaryPrepaidLast4Digits String true Last 4-digits of prepaid cards
beneficiaryPrepaidCustomerId String true Customer ID of the card (located on the backside)
payerAccountId String false Optional, the payment method
note String false Optional, the narration (for the beneficiary)
{
    "amount": 1000,
    "treasuryServiceId" : 5,
    "beneficiaryAccountName" : "Dan Prepaid monster" ,
    "beneficiaryPrepaidFirst6Digits" : "123456",
    "beneficiaryPrepaidLast4Digits" : "4321",
    "beneficiaryPrepaidCustomerId" : "1222",
    "payerAccountId" : "ACIFBPZ7ZX69HEZ5UQD8" ,
    "note" : "beneficiary note"
 }

Response

The response is a standard TRANSACTION response payload. See Transaction

List Operators

Lists external operators (e.g banks, MWPs) that support transfers

Endpoint

GET /v1/xpay/list-operators

Request

Parameter Type required Description
typeId Number false the type ID e.g. TYPE_BANK_CREDIT = 1; TYPE_BANK_DEBIT = 2; TYPE_BANK_PREPAID = 3; TYPE_TELCO_WALLET = 4; TYPE_OTHER_WALLET = 5;
name String false the provider name.
id String false Provider ID
bankCode String false bank code
{
    "data": {
        "list": [
            {
                "id": "5",
                "accountId": "AC7OWWKOP5BFT0V6I4U4",
                "shortName": "Afriland First Bank (Cameroon)",
                "name": "Afriland First Bank (Cameroon)",
                "description": "CM | Afriland First Bank (Cameroon)",
                "bankCode": "10005",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/afriland.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "18",
                "accountId": "ACO461DJNTZ88KD6FEBI",
                "shortName": "Banque Atlantique - Cameroun",
                "name": "Banque Atlantique - Cameroun",
                "description": "CM | Banque Atlantique - Cameroun",
                "bankCode": "10034",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/atlantique.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "7",
                "accountId": "AC39UCXN9S43QVPECEP4",
                "shortName": "BGFI Bank (Cameroon)",
                "name": "BGFI Bank (Cameroon)",
                "description": "CM | BGFI Bank (Cameroon)",
                "bankCode": "10035",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/bgfi.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "6",
                "accountId": "ACBCN07O3RY5FI95L5LE",
                "shortName": "BICEC",
                "name": "BICEC",
                "description": "CM | BICEC",
                "bankCode": "10001",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/bicec.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "10",
                "accountId": "AC8H5D0XZU1I10C9C5OK",
                "shortName": "CBC - Cameroon",
                "name": "CBC - Cameroon",
                "description": "CM | CBC - Cameroon",
                "bankCode": "10008",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/cbc.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "9",
                "accountId": "ACUKBIJXJ4NUPCJZGTH6",
                "shortName": "CCA Bank - Cameroon",
                "name": "CCA Bank - Cameroon",
                "description": "CM | CCA Bank - Cameroon",
                "bankCode": "99991",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/cca.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "15",
                "accountId": "ACJDXA3R6HQPS4AZKZJ7",
                "shortName": "Citi Bank - Cameroon",
                "name": "Citi Bank - Cameroon",
                "description": "CM | Citi Bank - Cameroon",
                "bankCode": "10007",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/citi.jpeg",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "17",
                "accountId": "AC6K63R32PG42GSGKZAU",
                "shortName": "Crédit Foncier - Cameroon",
                "name": "Crédit Foncier - Cameroon",
                "description": "CM | Crédit Foncier - Cameroon",
                "bankCode": "9995",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/cfc.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "11",
                "accountId": "ACCRUEZI2TD859WJYXAC",
                "shortName": "Ecobank Cameroon",
                "name": "Ecobank Cameroon",
                "description": "CM | Ecobank Cameroon",
                "bankCode": "10029",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/ecobank.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "22",
                "accountId": "ACS2XPTD2DPM9NRR2KG0",
                "shortName": "Mastercard",
                "name": "Mastercard",
                "description": "CM | Mastercard",
                "bankCode": null,
                "type": "3",
                "typeText": "prepaid card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/mastercard.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "1",
                "accountId": "ACROEQHXHLS0P3TZQFTV",
                "shortName": "MTN Momo",
                "name": "MTN Momo",
                "description": "CM | MTN Momo",
                "bankCode": null,
                "type": "4",
                "typeText": "telecom wallet",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/mtn.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "12",
                "accountId": "ACXBHIRV579WKCZ0NOAJ",
                "shortName": "NFC Bank - Cameroon",
                "name": "NFC Bank - Cameroon",
                "description": "CM | NFC Bank - Cameroon",
                "bankCode": "99992",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/nfc.jpg",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "2",
                "accountId": "ACJ6LWATRWUA5M99A6U8",
                "shortName": "Orange Money",
                "name": "Orange Money",
                "description": "CM | Orange Money",
                "bankCode": null,
                "type": "4",
                "typeText": "telecom wallet",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/orange.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "8",
                "accountId": "ACUU25SHUX94W8ZMLFOF",
                "shortName": "SCB - Cameroon",
                "name": "SCB - Cameroon",
                "description": "CM | SCB - Cameroon",
                "bankCode": "10002",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/scb.jpg",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "13",
                "accountId": "ACM5D751CY9JL8GL2RVI",
                "shortName": "Societe Generale - Cameroon",
                "name": "Societe Generale - Cameroon",
                "description": "CM | Societe Generale - Cameroon",
                "bankCode": "10003",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/socgen.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "16",
                "accountId": "ACUURRUMUO62B78FV569",
                "shortName": "Standard Chartered - Cameroon",
                "name": "Standard Chartered - Cameroon",
                "description": "CM | Standard Chartered - Cameroon",
                "bankCode": "10004",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/stanchart.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "23",
                "accountId": "ACSOB5XRE7QGG4K0Y82I",
                "shortName": "Tranzak Virtual Bank",
                "name": "Tranzak Inter-bank Transfer Services",
                "description": "CM | Tranzak Inter-bank Transfer Services",
                "bankCode": null,
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.mehttps://staging-api.tranzak.me/static/img/logos/tz-logo.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me",
                "isPaymentMethod": "1"
            },
            {
                "id": "3",
                "accountId": "ACL6II14VG8KHJMSPQ4G",
                "shortName": "UBA Cameroon",
                "name": "UBA Cameroon",
                "description": "CM | UBA Cameroon",
                "bankCode": "10033",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/uba.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "14",
                "accountId": "ACRS6ELN34AB8JM5NG3X",
                "shortName": "UBC - Cameroon",
                "name": "UBC - Cameroon",
                "description": "CM | UBC - Cameroon",
                "bankCode": "99993",
                "type": "2",
                "typeText": "debit card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/ubc.jpg",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            },
            {
                "id": "20",
                "accountId": "ACV43E5W3WQHB8RFP6YZ",
                "shortName": "Visa",
                "name": "Visa",
                "description": "CM | Visa",
                "bankCode": null,
                "type": "3",
                "typeText": "prepaid card",
                "avatarUrl": "https://staging-api.tranzak.me/static/img/partners/visa.png",
                "cardAvatarUrl": "https://staging-api.tranzak.me/static/img/partners/cards/",
                "isPaymentMethod": "1"
            }
        ]
    },
    "success": true 
}

miniApps

Base Url

https://staging-api.tranzak.me/aa038/ Staging https://api.tranzak.me/aa038/ Production

GET MP LIST BY ORG ID

https Request

GET /v1/org/list-by-orgId

Request Body Parameters

None

Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Parameter Type Description
list [MP] list of mini programs belong to the org Id
{
    "data": {
        "list": [
            {
                "url": "https://staging-app.tranzak.me/tzmp/ff1ruzi3vz5o/emergence/",
                "displayName": "Emergence",
                "name": "Emergence Bilingual School",
                "appPath": "emergence",
                "appId": "ff1ruzi3vz5o",
                "orgId": "p9m3rpjrnyxza9",
                "logo": "https://staging-fms.tranzak.me/cdn/ia/pxl31xmasfdvy7d9_ntkavem7umjzjf107333.1900369719.jpg"
            },
            {
                "url": "https://staging-app.tranzak.me/tzmp/i25ruoybb0owjz/camtel/",
                "displayName": "Camtel",
                "name": "Camtel",
                "appPath": "camtel",
                "appId": "i25ruoybb0owjz",
                "orgId": "p9m3rpjrnyxza9",
                "logo": "https://staging-fms.tranzak.me/cdn/ia/2msp7cyyl0usk6mh_x8pkwhwugwq693102978.038301376.png"
            },
            {
                "url": "https://staging-app.tranzak.me/tzmp/2abnjls9no8pe6/nis-kitchen/",
                "displayName": "Ni's Kitchen",
                "name": "Ni's Kitchen",
                "appPath": "nis-kitchen",
                "appId": "2abnjls9no8pe6",
                "orgId": "p9m3rpjrnyxza9",
                "logo": "https://staging-fms.tranzak.me/cdn/ia/gqqlpqdyvqvx9cs8_x8pkwhwugwq693105289.34095781448.png"
            },
            {
                "url": "https://staging-app.tranzak.me/tzmp/n7qyb51phi18r7/dsa/",
                "displayName": "dsa",
                "name": "dasdaadsads",
                "appPath": "dsa",
                "appId": "n7qyb51phi18r7",
                "orgId": "p9m3rpjrnyxza9",
                "logo": "https://staging-fms.tranzak.me/cdn/ia/ti305tyhjuw1tkoa_x8pkwhwugwq693108225.30012294921.png"
            }
        ]
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

Base Url

https://staging-api.tranzak.me/aa038/ Staging https://api.tranzak.me/aa038/ Production

GET Mini Programs Info(Detailed), used by the frond end apps

https Request

GET /v1/mps/details/:appId

Request Body Parameters

None

Response

{
    "data": {
        "tags": [
            "modem",
            "blue",
            "optical fibre",
            "4G",
            "5G"
        ],
        "categories": [
            "Technology",
            "Telecommunication"
        ],
        "status": [
            100
        ],
        "enabledServices": [],
        "countries": [
            "cm"
        ],
        "contactPhone": [],
        "appLangs": [
            "Francais",
            "English"
        ],
        "mode": 1,
        "deleted": false,
        "_id": "617a6633dfe63f0465be2a7c",
        "logo": "https://fms.tranzak.me/cdn/ia/2msp7cyyl0usk6mh_x8pkwhwugwq693102978.038301376.png",
        "backgroundImage": "https://fms.tranzak.me/cdn/ia/e8e4vq4b0y5davqz_x8pkwhwugwq693109535.96101458561.jpg",
        "name": "Camtel",
        "displayName": "Camtel",
        "desc": "La Cameroon Telecommunications (CAMTEL) est une entreprise publique détenue à 100% par l’État camerounais. Créée en 1998, Camtel est fortement impliquée dans le développement et la modernisation des télécommunications au Cameroun. L’entreprise doit garantir une excellente qualité de l’infrastructure nationale dans un secteur fortement concurrentiel.\nPour cela, Camtel propose des technologies performantes qui garantissent la disponibilité et la maitrise des solutions globales de télécommunications :\n• Connexion au câble sous-marin Sat3 ;\n• Construction et exploitation du réseau national de transmission en fibres optiques et FH;\n• Exploitation de réseaux téléphoniques fixes filaires, CDMA (fixe sans fil) et mobile GSM;\n• Exploitation de 03 stations terriennes.\nCamtel s’est développée grâce aux options managériales avisées qui mettent en valeur les compétences d’un personnel chevronné et qualifié pour son métier. Cet ensemble est au service de la communauté pour combler les besoins de tous en TIC. See less",
        "orgId": "k1yhlnmzgfz7ei",
        "owner": "dadb46c4d7a04a4ebf8717eecfdba825",
        "createdBy": "75b48c1c0ee144d5b10e34fee2ffa9a9",
        "ufId": "jq9a5w740lb0ig",
        "appId": "i25ruoybb0owjz",
        "createdAt": "2021-10-28T08:58:27.917Z",
        "updatedAt": "2021-10-28T08:58:27.917Z",
        "__v": 1,
        "address": [],
        "appPath": "camtel",
        "url": "https://app.tranzak.me/tzmp/i25ruoybb0owjz/camtel/"
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

Validate App Key

http(s) Request

POST /v1/services/devtool/validate-key

Request Body Parameters

Parameter Type Description
appKey String appKey eg: 45B290DDB2944092AE2F40336E7B46A0
keyType String collection or disbursement
env String sandbox or production
appId String app id: eg: g7o84wzypf64

Response

{
    "data": {
        "appInfo":{/**/}
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

// failure example
{
    "data": {
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": false
}

http(s) Request

POST /v1/services/mp-links/generate

Request Body Parameters

Parameter Type Required Description
url String true https://appmod.tranzak.me/merchant/?next=/shops/apmizi0bcd67tv/orders/1718&orgId=tzotwhx38zwnzel6
socialMediaTitle String false title that will show if the link is shared on social media
socialMediaDescription String false description that will show if the link is shared on social media
socialMediaDescription String false description that will show if the link is shared on social media
socialMediaImage String false image that will show if the link is shared on social media
utmSource String false The origin of the url.eg: chinamall.All utm parameters are needed only if you want to track the performance/popularity of a link
utmMedium String false Medium where the link will be shared. if the link is meant for a particular medium eg: facebook
utmCampaign String false If the link is for a particular campaign only. eg: new user sign up
utmContent String false Needed If you are doing A/B Testing
utmTerm String false Needed If you want to track search terms

Response

{
    "data": {
        "shortLink": "https://link.tranzak.net/gKrToqUgzTU3LTTx5",  // use this link
        "previewLink": "https://link.tranzak.net/gKrToqUgzTU3LTTx5?d=1"
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

GET Mini Programs Info(Minimal), used by other backend services

GET https://staging-api.tranzak.me/aa038/v1/services/details/minimal/:appId

Request Body Parameters

None

Header Parameters

Parameter Type required Description
Authorization String false user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Parameter Type Description
name String mp name
displayName String mp display name
orgId String owner's _id
logo String mini programs' logo
_id String _id
appId String appId
{
    "data": {
        "name": "Camtel",
        "displayName": "Camtel",
        "orgId": "k1yhlnmzgfz7ei",
        "logo": "https://fms.tranzak.me/cdn/ia/2msp7cyyl0usk6mh_x8pkwhwugwq693102978.038301376.png",
        "_id": "617a6633dfe63f0465be2a7c",
        "appId": "i25ruoybb0owjz"
    },
    "success": true
}

GET Mini Programs Info(Detailed), used by the frond end apps

https Request

GET https://staging-api.tranzak.me/aa038/v1/mps/details/:appId

Request Body Parameters

None

Response

{
    "data": {
        "tags": [
            "modem",
            "blue",
            "optical fibre",
            "4G",
            "5G"
        ],
        "categories": [
            "Technology",
            "Telecommunication"
        ],
        "status": [
            100
        ],
        "enabledServices": [],
        "countries": [
            "cm"
        ],
        "contactPhone": [],
        "appLangs": [
            "Francais",
            "English"
        ],
        "mode": 1,
        "deleted": false,
        "_id": "617a6633dfe63f0465be2a7c",
        "logo": "https://fms.tranzak.me/cdn/ia/2msp7cyyl0usk6mh_x8pkwhwugwq693102978.038301376.png",
        "backgroundImage": "https://fms.tranzak.me/cdn/ia/e8e4vq4b0y5davqz_x8pkwhwugwq693109535.96101458561.jpg",
        "name": "Camtel",
        "displayName": "Camtel",
        "desc": "La Cameroon Telecommunications (CAMTEL) est une entreprise publique détenue à 100% par l’État camerounais. Créée en 1998, Camtel est fortement impliquée dans le développement et la modernisation des télécommunications au Cameroun. L’entreprise doit garantir une excellente qualité de l’infrastructure nationale dans un secteur fortement concurrentiel.\nPour cela, Camtel propose des technologies performantes qui garantissent la disponibilité et la maitrise des solutions globales de télécommunications :\n• Connexion au câble sous-marin Sat3 ;\n• Construction et exploitation du réseau national de transmission en fibres optiques et FH;\n• Exploitation de réseaux téléphoniques fixes filaires, CDMA (fixe sans fil) et mobile GSM;\n• Exploitation de 03 stations terriennes.\nCamtel s’est développée grâce aux options managériales avisées qui mettent en valeur les compétences d’un personnel chevronné et qualifié pour son métier. Cet ensemble est au service de la communauté pour combler les besoins de tous en TIC. See less",
        "orgId": "k1yhlnmzgfz7ei",
        "owner": "dadb46c4d7a04a4ebf8717eecfdba825",
        "createdBy": "75b48c1c0ee144d5b10e34fee2ffa9a9",
        "ufId": "jq9a5w740lb0ig",
        "appId": "i25ruoybb0owjz",
        "createdAt": "2021-10-28T08:58:27.917Z",
        "updatedAt": "2021-10-28T08:58:27.917Z",
        "__v": 1,
        "address": [],
        "appPath": "camtel",
        "url": "https://app.tranzak.me/tzmp/i25ruoybb0owjz/camtel/"
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

GET Mini Programs Info(Minimal), used by other backend services

GET https://staging-api.tranzak.me/aa038/v1/services/details/minimal/:appId

Request Body Parameters

None

Header Parameters

Parameter Type required Description
Authorization String false user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Parameter Type Description
name String mp name
displayName String mp display name
orgId String owner's _id
logo String mini programs' logo
_id String _id
appId String appId
{
    "data": {
        "name": "Camtel",
        "displayName": "Camtel",
        "orgId": "k1yhlnmzgfz7ei",
        "logo": "https://fms.tranzak.me/cdn/ia/2msp7cyyl0usk6mh_x8pkwhwugwq693102978.038301376.png",
        "_id": "617a6633dfe63f0465be2a7c",
        "appId": "i25ruoybb0owjz"
    },
    "success": true
}

GET MP Minimal Info and Owner info

GET https://staging-api.tranzak.me/aa038/v1/services/details/minimal/with-owner/:appId

Request Body Parameters

None

Response

{
    "data": {
        "appInfo": {
            "name": "Camtel",
            "displayName": "Camtel",
            "orgId": "k1yhlnmzgfz7ei",
            "logo": "https://fms.tranzak.me/cdn/ia/2msp7cyyl0usk6mh_x8pkwhwugwq693102978.038301376.png",
            "_id": "617a6633dfe63f0465be2a7c",
            "appId": "i25ruoybb0owjz",
            "owner": {
                "sex": 0,
                "userType": 2,
                "isDeleted": false,
                "role": 1000,
                "hp": true,
                "firstName": "Camtel Owner",
                "lastName": "Automated",
                "phone": "+237622922163",
                "ufId": "k1yhlnmzgfz7ei",
                "orgId": "k1yhlnmzgfz7ei",
                "scopeId": "k1yhlnmzgfz7ei",
                "platformId": "k1yhlnmzgfz7ei",
                "userId": "dadb46c4d7a04a4ebf8717eecfdba825"
            }
        }
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

Validate App Key

http(s) Request

POST https://staging-api.tranzak.me/aa038/v1/services/devtool/validate-key

Request Body Parameters

Parameter Type Description
appKey String appKey eg: 45B290DDB2944092AE2F40336E7B46A0
keyType String collection or disbursement
env String sandbox or production
appId String app id: eg: g7o84wzypf64

Response

{
    "data": {
        "appInfo":{/**/}
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": true
}

// failure example
{
    "data": {
    },
    "errorMsg": "",
    "errorCode": 0,
    "success": false
}

cortexBackoffice

Rewards: Bonuses

Bonus reward Allocation & management interface (for staff)

List Matching Events

List a events that must be matched before bonus would apply

Endpoint

GET /backoffice/bonus/create-plan

Response

{
    "data": {
        "1": "merchant payment",
        "2": "payment method link",
        "3": "user account upgrade",
        "4": "real name verification"
    },
    "success": true,
}

Create Bonus Allocation Plan

Creates a plan on how bonus shall be allocated

Endpoint

POST /backoffice/bonus/create-plan

Request Body params

Parameter Type required Description
name int true ID of reward
description int true description
maxAllocationPerUser int true maxAllocationPerUser
countryCode int true countryCode
totalAmount int true totalAmount
eventTypeId int true eventTypeId
isRandomAmount int true isRandomAmount
maxAmount int true maxAmount
minAmount int true minAmount
durationHours int true durationHours
expiresAt int true expiresAt
autoActivateAfterAssignment int true autoActivateAfterAssignment
{
    "name": "Cool bonus plan",
    "description": "Description of some cool bonus plan",
    "maxAllocationPerUser": 1,
    "countryCode": "CM",
    "totalAmount": "1111",
    "eventTypeId": "1",
    "isRandomAmount": 1,
    "maxAmount": "1111",
    "minAmount": "1",
    "durationHours": "1111" ,
    "expiresAt": "2022-04-24 00:46:50" ,
    "autoActivateAfterAssignment" : 1
}

Status codes

   const DEFAULT_DURATION_HOURS = 7*24 ; //3 days
   const STATUS_PENDING = 1; //Pending approval
   const STATUS_ACTIVE = 2; //Active
   const STATUS_CLOSED = 3; //Used up 
   const STATUS_PAUSED = -1; //Temporarily paused
   const STATUS_CANCELLED = -2; //Cancelled

Response

See VIEW Bonus plan section

Update Bonus Plan

Create Bonus Allocation Plan

Creates a plan on how bonus shall be allocated

Endpoint

POST /backoffice/bonus/update-plan

Request Body params

Parameter Type required Description
id int true ID of reward
name string false name of bonus plan
description int false description
maxAllocationPerUser int true maxAllocationPerUser
countryCode int false countryCode
totalAmount int false totalAmount
eventTypeId int false eventTypeId
isRandomAmount int false isRandomAmount
maxAmount int false maxAmount
minAmount int false minAmount
durationHours int false durationHours
expiresAt int false expiresAt
autoActivateAfterAssignment int false autoActivateAfterAssignment
{
    "id" : 1,
    "name": "Cool bonus plan",
    "description": "Description of some cool bonus plan",
    "maxAllocationPerUser": 1,
    "countryCode": "CM",
    "totalAmount": "1111",
    "eventTypeId": "1",
    "isRandomAmount": 1,
    "maxAmount": "1111",
    "minAmount": "1",
    "durationHours": "1111" ,
    "expiresAt": "2022-04-24 00:46:50" ,
    "autoActivateAfterAssignment" : 1
}

Response

See VIEW Bonus plan section

View Plan

Displays plan details

Endpoint

GET /backoffice/bonus/view-plan

Request Body params

Parameter Type required Description
id int true ID of reward

Response

{
    "data": {
        "autoActivateAfterAssignment": 1,
        "countryCode": "CM",
        "createdAt": "2022-03-22 17:58:20",
        "createdByStaff": "1",
        "currencyCode": "XAF",
        "description": "Description of some cool bonus plan",
        "durationHours": 1111,
        "eventTypeId": 1,
        "eventTypeText": "merchant payment",
        "expiresAt": "2022-04-24 00:46:50",
        "fundingAccountBalance": 0,
        "fundingAccountId": 229,
        "id": 1,
        "isRandomAmount": 1,
        "lastUpdatedByStaffId": null,
        "matchOnlyMerchantPaymentFromOrgUserIdList": null,
        "matchOnlyMerchantPaymentsUsingPMTreasuryServiceList": null,
        "matchOnlyTreasuryAccountList": null,
        "maxAllocationPerUser": 1,
        "maxAmount": 1111,
        "minAmount": 1,
        "name": "Cool bonus plan",
        "status": 1,
        "statusText": "pending approval",
        "totalAmount": 1111
    },
    "success": true,
 
}

Activate Bonus Plan

Confirms a bonus reward. Upon confirmation, the reward will be made available for use. Only bonus rewards with status STATUS_ACTIVE may be used to discount transaction.

Endpoint

POST /backoffice/bonus/activate

Request Body params

Parameter Type required Description
id int true ID of reward
{
    "id": 1
}

Response

The response shown in the view-plan section

Topup Bonus Account

Adds funds from system discount account into the bonus account. Balance must be available otherwise action will fail.

Endpoint

POST /backoffice/bonus/topup

Request Body params

Parameter Type required Description
id int true ID of reward
topupAmount int true amount to be credited
{
    "id": 1,
    "topupAmount": 11111100
}

Response

See view-plan section

List Bonus Plans

Displays list of plans

Endpoint

POST /backoffice/bonus/list-plans

Request filters

        return [            
            [['id', 'totalAmount', 'eventTypeId', 'maxAllocationPerUser', 'isRandomAmount', 'minAmount', 'maxAmount', 'status', 'durationHours', 'fundingAccountId' , 'countryCode', 'name', 'description', 'matchOnlyMerchantPaymentsUsingPMTreasuryServiceList', 'matchOnlyTreasuryAccountList', 'matchOnlyMerchantPaymentFromOrgUserIdList', 'expiresAt', 'createdByStaff', 'lastUpdatedByStaffId', 'createdAt'], 'safe'],
        ];

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "countryCode": "CM",
                "totalAmount": 1111,
                "currencyCode": "XAF",
                "eventTypeId": "1",
                "maxAllocationPerUser": "1",
                "isRandomAmount": "1",
                "minAmount": 1,
                "maxAmount": 1111,
                "name": "Cool bonus plan",
                "description": "Description of some cool bonus plan",
                "status": "2",
                "durationHours": "1111",
                "matchOnlyMerchantPaymentsUsingPMTreasuryServiceList": null,
                "matchOnlyTreasuryAccountList": null,
                "matchOnlyMerchantPaymentFromOrgUserIdList": null,
                "fundingAccountId": "229",
                "expiresAt": "2022-04-24 00:46:50",
                "autoActivateAfterAssignment": "1",
                "createdByStaff": "1",
                "lastUpdatedByStaffId": null,
                "createdAt": "2022-03-22 17:58:20",
                "eventType": "merchant payment",
                "statusText": "merchant payment",
                "fundingAccountBalance": 111
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
}

Other Actions

Pause

Temporarily suspends a bonus plan

Endpoint

POST /backoffice/bonus/pause

Cancel

Cancels a bonus plan

Endpoint

POST /backoffice/bonus/cancel

List Rewards

Lists allocated bonus rewards

Request endpoint

GET /backoffice/bonus/list-rewards

Request Filters

[['id', 'bonusPlanId', 'balance', 'allocatedAmount', 'status', 'orgUserId', 'createdByUserId' , 'expiresAt', 'createdAt']

Response

{
   "data": {
       "currentPage": 1,
       "hasMore": false,
       "list": [
           {
               "id": "7",
               "bonusPlanId": "1",
               "balance": 207,
               "allocatedAmount": 207,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:38:36",
               "createdAt": "2022-03-22 18:38:36",
               "statusText": "active"
           },
           {
               "id": "6",
               "bonusPlanId": "1",
               "balance": 896,
               "allocatedAmount": 896,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:38:35",
               "createdAt": "2022-03-22 18:38:35",
               "statusText": "active"
           },
           {
               "id": "5",
               "bonusPlanId": "1",
               "balance": 817,
               "allocatedAmount": 817,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:38:34",
               "createdAt": "2022-03-22 18:38:34",
               "statusText": "active"
           },
           {
               "id": "4",
               "bonusPlanId": "1",
               "balance": 369,
               "allocatedAmount": 369,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:38:33",
               "createdAt": "2022-03-22 18:38:33",
               "statusText": "active"
           },
           {
               "id": "3",
               "bonusPlanId": "1",
               "balance": 165,
               "allocatedAmount": 165,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:38:33",
               "createdAt": "2022-03-22 18:38:33",
               "statusText": "active"
           },
           {
               "id": "2",
               "bonusPlanId": "1",
               "balance": 936,
               "allocatedAmount": 936,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:38:31",
               "createdAt": "2022-03-22 18:38:31",
               "statusText": "active"
           },
           {
               "id": "1",
               "bonusPlanId": "1",
               "balance": 853,
               "allocatedAmount": 853,
               "status": "2",
               "orgUserId": "25",
               "createdByUserId": "25",
               "expiresAt": "2022-05-08 01:37:45",
               "createdAt": "2022-03-22 18:37:45",
               "statusText": "active"
           }
       ],
       "pageCount": [
           1,
           50
       ],
       "pageSize": 20,
       "totalItems": 7
   },
   "success": true,
   "debugInfo": null,
   "debug": {
       "lang": "en-US",
       "dateTime": "2022-03-22T18:46:41+00:00",
       "hostname": "cortex01",
       "serverIpAddress": "192.168.137.2",
       "clientIpAddress": "192.168.137.1",
       "duration": "0.045s",
       "userId": "1",
       "staffId": "1",
       "staffFirstName": null
   }
}

View Reward Details

Displays details of a bonus reward allocation

Request Endpoint

GET /backoffice/bonus/view-reward?id=BONUS_REWARD_ID

Response

{
    "data": {
        "allocatedAmount": 853,
        "balance": 853,
        "bonusPlanId": 1,
        "createdAt": "2022-03-22 18:37:45",
        "createdByUserId": 25,
        "eventTypeText": "merchant payment",
        "expiresAt": "2022-05-08 01:37:45",
        "id": 1,
        "orgUserId": 25,
        "status": 2,
        "statusText": "active"
    },
    "success": true,
 
}

Cancel Reward

cancels an allocated reward

Request Endpoint

GET /backoffice/bonus/cancel-reward?id=BONUS_REWARD_ID

Request Params

Parameter Type required Description
id int true ID of reward
{
    "id": 1
}

Response

See View-reward section

Core System Accounts - CSA

Core systems accounts are special accounts for system use. They are used to track fund movement between customers and Tranzak

CSA List

Displays paginated list of CSAs

Request Endpoint

GET /backoffice/csa/list

Request Params

 [['id', 'accountId', 'countryCode', 'type', ], 'safe'],

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "countryCode": "CM",
                "type": "internal",
                "accountId": "1",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "1",
                    "_id": "ACI66XBMZALRNZ7PETWA",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "internal"
            },
            {
                "id": "9",
                "countryCode": "CM",
                "type": "guest_payment",
                "accountId": "9",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "9",
                    "_id": "ACQJOELHLKHKV2LJP707",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "guest_payment"
            },
            {
                "id": "8",
                "countryCode": "CM",
                "type": "cross_border",
                "accountId": "8",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "8",
                    "_id": "AC8LSATEM4JABPYOL346",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "cross_border"
            },
            {
                "id": "7",
                "countryCode": "CM",
                "type": "treasury",
                "accountId": "7",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "7",
                    "_id": "ACCA7QKPH2VRMFMOIZ3P",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "treasury"
            },
            {
                "id": "6",
                "countryCode": "CM",
                "type": "account_payable",
                "accountId": "6",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "6",
                    "_id": "ACYDS97RU9GT1Q20BKYX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "account_payable"
            },
            {
                "id": "5",
                "countryCode": "CM",
                "type": "profit_loss",
                "accountId": "5",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "profit_loss"
            },
            {
                "id": "4",
                "countryCode": "CM",
                "type": "luckymoney",
                "accountId": "4",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "4",
                    "_id": "ACCMOMHS5G4PLN3FBMQJ",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "0",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "luckymoney"
            },
            {
                "id": "3",
                "countryCode": "CM",
                "type": "bonus_credit",
                "accountId": "3",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "3",
                    "_id": "AC23X8236X45PE7ZTSYC",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "0",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "bonus_credit"
            },
            {
                "id": "2",
                "countryCode": "CM",
                "type": "external",
                "accountId": "2",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "2",
                    "_id": "ACRGFOF1Q8ENGVH3OTHG",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "external"
            },
            {
                "id": "10",
                "countryCode": "CM",
                "type": "gift_card_pack",
                "accountId": "10",
                "createdAt": "2022-03-25 12:20:51",
                "account": {
                    "id": "10",
                    "_id": "ACH6XWJEJLDHSJ9DU7G3",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": 0,
                    "withheldBalanceAmount": 0,
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null,
                    "typeText": "CSA account"
                },
                "country": {
                    "geoNameId": "2233387",
                    "code": "CM",
                    "name": "Cameroon",
                    "currencyName": "Franc",
                    "iso3": "CMR",
                    "currencyCode": "XAF",
                    "currencySymbol": null,
                    "dialCode": "237",
                    "isoNumeric": "120",
                    "capital": "Yaounde",
                    "continent": "AF",
                    "tld": ".cm",
                    "languages": "en-CM,fr-CM",
                    "createdAt": "2020-12-01 12:15:01"
                },
                "typeText": "gift_card_pack"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 10
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T14:35:06+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.045s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Add Supported Country.

This interface is called to add system accounts so that transactions from a particular country can work well. IF CSAs are not created for a new country , transactions involving that country will FAIL.

Endpoint

GET /backoffice/csa/add-supported-country

Request params

{
    "countryCode": "CD"
}

Response

Success | fail message.

List Supported Countries

List countries currently supported

Endpoint

GET /backoffice/csa/add-supported-country

Request params

N/A

Response

{
    "data": [
        {
            "id": "11",
            "countryCode": "CD",
            "type": "internal",
            "accountId": "226",
            "createdAt": "2022-03-25 14:44:43",
            "country": {
                "geoNameId": "203312",
                "code": "CD",
                "name": "Democratic Republic of the Congo",
                "currencyName": "Franc",
                "iso3": "COD",
                "currencyCode": "CDF",
                "currencySymbol": null,
                "dialCode": "243",
                "isoNumeric": "180",
                "capital": "Kinshasa",
                "continent": "AF",
                "tld": ".cd",
                "languages": "fr-CD,ln,ktu,kg,sw,lua",
                "createdAt": "2020-12-01 12:15:01"
            }
        },
        {
            "id": "1",
            "countryCode": "CM",
            "type": "internal",
            "accountId": "1",
            "createdAt": "2022-03-25 12:20:51",
            "country": {
                "geoNameId": "2233387",
                "code": "CM",
                "name": "Cameroon",
                "currencyName": "Franc",
                "iso3": "CMR",
                "currencyCode": "XAF",
                "currencySymbol": null,
                "dialCode": "237",
                "isoNumeric": "120",
                "capital": "Yaounde",
                "continent": "AF",
                "tld": ".cm",
                "languages": "en-CM,fr-CM",
                "createdAt": "2020-12-01 12:15:01"
            }
        },
        {
            "id": "21",
            "countryCode": "ng",
            "type": "internal",
            "accountId": "236",
            "createdAt": "2022-03-25 14:44:49",
            "country": null
        }
    ],
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T14:45:20+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Add CSA Type for a country

IN case a new CSA type is added in the future, this interface can be used to add the new CSA to the list of CSAs for a country .

Request Endpoint

POST /backoffice/csa/add-csa-type-for-country

Request Params

{
    "csaType" : "gift_card_pack",
    "countryCode" : "CD"
}

Response

CSA payload | See ViEW CSA details

View CSA Details

View details for CSA

Request Endpoint

POST /backoffice/csa/view?id=CSA_ID

Request Params

Parameter Type required Description
id String(100) true CSA ID

Response

{
    "data": {
        "account": {
            "id": 1,
            "_id": "ACI66XBMZALRNZ7PETWA",
            "userId": 1,
            "currencyCode": "XAF",
            "type": 2,
            "balanceAmount": 0,
            "withheldBalanceAmount": 0,
            "name": "",
            "description": "",
            "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
            "label": "TYPE_CSA",
            "isCsaOverdraftAccount": 1,
            "isActive": 1,
            "createdAt": "2022-03-25 13:20:51",
            "lastUpdatedAt": null,
            "typeText": "CSA account"
        },
        "accountId": 1,
        "country": {
            "geoNameId": 2233387,
            "code": "CM",
            "name": "Cameroon",
            "currencyName": "Franc",
            "iso3": "CMR",
            "currencyCode": "XAF",
            "currencySymbol": null,
            "dialCode": "237",
            "isoNumeric": 120,
            "capital": "Yaounde",
            "continent": "AF",
            "tld": ".cm",
            "languages": "en-CM,fr-CM",
            "createdAt": "2020-12-01 12:15:01"
        },
        "countryCode": "CM",
        "createdAt": "2022-03-25 12:20:51",
        "id": 1,
        "type": "internal",
        "typeText": "internal"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T15:12:58+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.045s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

CSA Types

List of CSA types

Request Endpoint

GET /backoffice/csa/list-csa-types

Request Params

N/A

Response

{
    "data": {
        "account_payable": "account_payable",
        "bonus_credit": "bonus_credit",
        "cross_border": "cross_border",
        "external": "external",
        "gateway_payment": "gateway_payment",
        "gift_card_pack": "gift_card_pack",
        "guest_payment": "guest_payment",
        "internal": "internal",
        "luckymoney": "luckymoney",
        "profit_loss": "profit_loss",
        "treasury": "treasury"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T15:14:09+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.042s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Financials

Financial summary

List Treasury Cash flows

Displays chronological in-out cash flows

Request Endpoint

GET /backoffice/financials/treasury-cash-flow-history

Request Params

            [['countryCode', 'id', 'treasuryServiceId', 'paymentId'], 'safe'],
            [['amount', 'currencyCode', 'note', 'createdAt'], 'safe'],

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "amount": "-980",
                "currencyCode": "XAF",
                "treasuryServiceId": "1",
                "paymentId": "32",
                "note": "Outbound txn|paymentId=31",
                "createdAt": "2022-03-25 15:48:28",
                "treasuryService": {
                    "id": "1",
                    "countryCode": "CM",
                    "serviceName": null,
                    "treasuryId": "1",
                    "type": "4",
                    "accountId": "12",
                    "isPaymentMethod": "1",
                    "isEnabled": "1",
                    "externalBalance": "0",
                    "avatarUrl": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-25 12:20:51",
                    "lastUpdatedAt": null
                },
                "treasury": {
                    "id": "1",
                    "userId": "3",
                    "countryCode": "CM",
                    "type": "2",
                    "shortName": "MTN Momo",
                    "name": "MTN Momo",
                    "description": "CM | MTN Momo",
                    "isOffline": "0",
                    "status": "1",
                    "isPaymentMethod": "1",
                    "bankCode": null,
                    "isOutboundPaymentProvider": "1",
                    "outboundRatePercentage": "2.9000",
                    "avatarUrl": "/static/img/partners/mtn.png",
                    "cardAvatarUrl": "/static/img/partners/cards/",
                    "isSelectableByUsers": "1",
                    "isVerificationSource": "0",
                    "isExpressPaymentSupported": "1",
                    "paymentWebRedirectUrl": null,
                    "inboundMinAmount": "1",
                    "inboundMaxAmount": "1000000",
                    "inboundPercentageCharge": "2",
                    "inboundFixedCharge": "10",
                    "outboundMinAmount": "1",
                    "outboundMaxAmount": "100000",
                    "outboundFixedCharge": "10",
                    "outboundPercentageCharge": "2",
                    "outboundProcessingTimeInHours": null,
                    "outboundMaxJobPerBatch": null,
                    "ussdMobileMoneyDialCode": "*126#",
                    "enableVisaPrepaidSettlement": "0",
                    "enableMastercardPrepaidSettlement": "0",
                    "isSettlementEntity": "1",
                    "settlementPriority": "10",
                    "maxPrepaidCardJobsPerBatch": null,
                    "maxIntraBankJobsPerBatch": null,
                    "maxInterBankJobsPerBatch": null,
                    "settlementAccountId": "11",
                    "swiftCode": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-25 12:20:51",
                    "updatedAt": null
                }
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T15:48:37+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Revenue Stats

Display revenue data

Request Endpoint

GET /backoffice/financials/stats?countryCode=CM

Request Params

Parameter Type required Description
countryCode String(100) false countryCode - if no country is set, all supported country data will be listed

Response

{
    "data": {
        "currencyCode": "XAF",
        "inbound": {
            "1Hour": {
                "completed": {
                    "amount": 0,
                    "number": "0"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": 0,
                    "number": "0"
                }
            },
            "today": {
                "completed": {
                    "amount": 0,
                    "number": "0"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": 0,
                    "number": "0"
                }
            },
            "24Hours": {
                "completed": {
                    "amount": 0,
                    "number": "0"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": 0,
                    "number": "0"
                }
            },
            "3Days": {
                "completed": {
                    "amount": 0,
                    "number": "0"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "1000",
                    "number": "1"
                }
            },
            "7Days": {
                "completed": {
                    "amount": 0,
                    "number": "0"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "1000",
                    "number": "1"
                }
            },
            "30Days": {
                "completed": {
                    "amount": 0,
                    "number": "0"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "1000",
                    "number": "1"
                }
            }
        },
        "outbound": {
            "1Hour": {
                "completed": {
                    "amount": "2940",
                    "number": "3"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "2940",
                    "number": "3"
                }
            },
            "today": {
                "completed": {
                    "amount": "2940",
                    "number": "3"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "2940",
                    "number": "3"
                }
            },
            "24Hours": {
                "completed": {
                    "amount": "2940",
                    "number": "3"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "2940",
                    "number": "3"
                }
            },
            "3Days": {
                "completed": {
                    "amount": "3920",
                    "number": "4"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "3920",
                    "number": "4"
                }
            },
            "7Days": {
                "completed": {
                    "amount": "3920",
                    "number": "4"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "3920",
                    "number": "4"
                }
            },
            "30Days": {
                "completed": {
                    "amount": "3920",
                    "number": "4"
                },
                "failed": {
                    "amount": 0,
                    "number": "0"
                },
                "pending": {
                    "amount": 0,
                    "number": "0"
                },
                "total": {
                    "amount": "3920",
                    "number": "4"
                }
            }
        },
        "revenue": {
            "accountId": 5,
            "1Hour": "630",
            "24Hour": "630",
            "3Day": "843",
            "7Day": "843",
            "30Day": "843"
        }
    },
    "success": true
}

Revenue History

Tracks the P&L account ID for a particular country

Endpoint

GET /backoffice/financials/revenue-history?countryCode=XX

Request Params

Parameter Type required Description
countryCode String(100) false countryCode - if no country is set, all supported country data will be listed

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "89",
                "paymentId": "41",
                "isCredit": "1",
                "accountId": "5",
                "amount": 10,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-28 09:19:22",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "86",
                "paymentId": "40",
                "isCredit": "1",
                "accountId": "5",
                "amount": 200,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-28 09:19:22",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "81",
                "paymentId": "38",
                "isCredit": "1",
                "accountId": "5",
                "amount": 10,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-28 09:19:21",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "78",
                "paymentId": "37",
                "isCredit": "1",
                "accountId": "5",
                "amount": 200,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-28 09:19:20",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "73",
                "paymentId": "35",
                "isCredit": "1",
                "accountId": "5",
                "amount": 10,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-28 09:19:18",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "70",
                "paymentId": "34",
                "isCredit": "1",
                "accountId": "5",
                "amount": 200,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-28 09:19:18",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "63",
                "paymentId": "31",
                "isCredit": "1",
                "accountId": "5",
                "amount": 10,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-25 16:48:24",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "60",
                "paymentId": "30",
                "isCredit": "1",
                "accountId": "5",
                "amount": 200,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-25 16:48:23",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "29",
                "paymentId": "15",
                "isCredit": "1",
                "accountId": "5",
                "amount": 1,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-25 14:13:29",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "24",
                "paymentId": "13",
                "isCredit": "1",
                "accountId": "5",
                "amount": 1,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-25 14:13:29",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            },
            {
                "id": "17",
                "paymentId": "10",
                "isCredit": "1",
                "accountId": "5",
                "amount": 1,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-25 14:13:29",
                "account": {
                    "id": "5",
                    "_id": "ACKEK3436WXOHF3GTRPX",
                    "userId": "1",
                    "currencyCode": "XAF",
                    "type": "2",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_CSA",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:51",
                    "lastUpdatedAt": null
                },
                "csa": {
                    "id": "5",
                    "countryCode": "CM",
                    "type": "profit_loss",
                    "accountId": "5",
                    "createdAt": "2022-03-25 12:20:51"
                }
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 11
    },
    "success": true
}

Invoice (BO)

Invoice management interface for BO

List Invoices

Endpoint

GET /backoffice/invoice/list

Request Params

            [['id', 'orgUserId', 'createdByUserId', 'receivingAccountId', 'totalTax', 'subtotal', 'totalPaid', 'type', 'billToUserId', 'acceptPartialPayments', 'status', 'hasInternalPayment', 'hasExternalPayment', 'totalExternalPaymentAmount'], 'safe'],
            [['_id', 'userInvoiceRef', 'title', 'currencyCode', 'issueDate', 'dueDate', 'billToName', 'billToAddress', 'billToEmail', 'memo', 'clientNote', 'cancellationNote', 'jsonData', 'appId', 'fileUrl', 'submittedAt', 'createdAt', 'updatedAt'], 'safe'

Response

Paginated list of invoices

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "2",
                "_id": "IV22032555JZXP3EWGZJ",
                "orgUserId": "23",
                "createdByUserId": "23",
                "receivingAccountId": null,
                "userInvoiceRef": "5555",
                "title": "Plumbing services",
                "totalTax": 100,
                "subtotal": 2600,
                "totalPaid": 0,
                "currencyCode": "XAF",
                "type": "1",
                "issueDate": "2022-03-25",
                "dueDate": "2022-03-25",
                "billToName": "Plumbing Ltd",
                "billToAddress": "Rue Druot",
                "billToEmail": "trrr@tranzak.net",
                "billToUserId": null,
                "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
                "clientNote": "Client note is cool",
                "acceptPartialPayments": "1",
                "status": "2",
                "cancellationNote": "",
                "hasInternalPayment": "0",
                "hasExternalPayment": "0",
                "totalExternalPaymentAmount": "0",
                "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                "appId": null,
                "fileUrl": null,
                "submittedAt": null,
                "createdAt": "2022-03-25 16:45:11",
                "updatedAt": null,
                "statusText": "unpaid",
                "typeText": "uploaded invoice file"
            },
            {
                "id": "1",
                "_id": "IV220325QHYLQ56O6GMF",
                "orgUserId": "23",
                "createdByUserId": "23",
                "receivingAccountId": null,
                "userInvoiceRef": "5555",
                "title": "Plumbing services",
                "totalTax": 100,
                "subtotal": 2600,
                "totalPaid": 0,
                "currencyCode": "XAF",
                "type": "1",
                "issueDate": "2022-03-25",
                "dueDate": "2022-03-25",
                "billToName": "Plumbing Ltd",
                "billToAddress": "Rue Druot",
                "billToEmail": "trrr@tranzak.net",
                "billToUserId": null,
                "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
                "clientNote": "Client note is cool",
                "acceptPartialPayments": "1",
                "status": "2",
                "cancellationNote": "",
                "hasInternalPayment": "0",
                "hasExternalPayment": "0",
                "totalExternalPaymentAmount": "0",
                "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                "appId": null,
                "fileUrl": null,
                "submittedAt": null,
                "createdAt": "2022-03-25 16:45:10",
                "updatedAt": null,
                "statusText": "unpaid",
                "typeText": "uploaded invoice file"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 2
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T16:45:14+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.046s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View Invoice Details

Details of invoice

Endpoint

GET /backoffice/invoice/view?id=INVOICE_ID

Request Filters

Parameter Type required Description
id String(100) true invoice ID
_id String(100) false _id of invoice

Response

{
    "data": {
        "_id": "IV220325QHYLQ56O6GMF",
        "acceptPartialPayments": 1,
        "appId": null,
        "billToAddress": "Rue Druot",
        "billToEmail": "trrr@tranzak.net",
        "billToName": "Plumbing Ltd",
        "billToUserId": null,
        "cancellationNote": "",
        "clientNote": "Client note is cool",
        "createdAt": "2022-03-25 16:45:10",
        "createdByUserId": 23,
        "currencyCode": "XAF",
        "dueDate": "2022-03-25",
        "fileUrl": null,
        "hasExternalPayment": 0,
        "hasInternalPayment": 0,
        "id": 1,
        "issueDate": "2022-03-25",
        "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
        "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
        "orgUserId": 23,
        "receivingAccountId": null,
        "status": 2,
        "statusText": "unpaid",
        "submittedAt": null,
        "subtotal": 2600,
        "title": "Plumbing services",
        "totalExternalPaymentAmount": "0",
        "totalPaid": 0,
        "totalTax": 100,
        "type": 1,
        "typeText": "uploaded invoice file",
        "updatedAt": null,
        "userInvoiceRef": "5555"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T16:46:42+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.039s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Invoice Payments

Paginated list of invoice payments. Use filters to navigate

Endpoint

GET /backoffice/invoice/list-payments

Request Params

[['id', 'createdByUserId', 'invoiceId', 'amount', 'paymentId', 'paymentSourceId' , '_id', 'note', ], 'safe'],

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "IPQVF4YCA7QX05JNHM8K",
                "createdByUserId": "23",
                "amount": 100,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "Payment via cash",
                "createdAt": "2022-03-25 16:49:35",
                "invoice": {
                    "id": "2",
                    "_id": "IV22032555JZXP3EWGZJ",
                    "orgUserId": "23",
                    "createdByUserId": "23",
                    "receivingAccountId": null,
                    "userInvoiceRef": "5555",
                    "title": "Plumbing services",
                    "totalTax": 100,
                    "subtotal": 2600,
                    "totalPaid": 200,
                    "currencyCode": "XAF",
                    "type": "1",
                    "issueDate": "2022-03-25",
                    "dueDate": "2022-03-25",
                    "billToName": "Plumbing Ltd",
                    "billToAddress": "Rue Druot",
                    "billToEmail": "trrr@tranzak.net",
                    "billToUserId": null,
                    "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
                    "clientNote": "Client note is cool",
                    "acceptPartialPayments": "1",
                    "status": "3",
                    "cancellationNote": "",
                    "hasInternalPayment": "0",
                    "hasExternalPayment": "1",
                    "totalExternalPaymentAmount": "200",
                    "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                    "appId": null,
                    "fileUrl": null,
                    "submittedAt": null,
                    "createdAt": "2022-03-25 16:45:11",
                    "updatedAt": "2022-03-25 17:49:35",
                    "statusText": "partially paid",
                    "typeText": null
                },
                "paymentSourceText": "paid via cash"
            },
            {
                "_id": "IPMT6RSKX6PI8XWBTCTA",
                "createdByUserId": "23",
                "amount": 100,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "Payment via cash",
                "createdAt": "2022-03-25 16:49:34",
                "invoice": {
                    "id": "2",
                    "_id": "IV22032555JZXP3EWGZJ",
                    "orgUserId": "23",
                    "createdByUserId": "23",
                    "receivingAccountId": null,
                    "userInvoiceRef": "5555",
                    "title": "Plumbing services",
                    "totalTax": 100,
                    "subtotal": 2600,
                    "totalPaid": 200,
                    "currencyCode": "XAF",
                    "type": "1",
                    "issueDate": "2022-03-25",
                    "dueDate": "2022-03-25",
                    "billToName": "Plumbing Ltd",
                    "billToAddress": "Rue Druot",
                    "billToEmail": "trrr@tranzak.net",
                    "billToUserId": null,
                    "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
                    "clientNote": "Client note is cool",
                    "acceptPartialPayments": "1",
                    "status": "3",
                    "cancellationNote": "",
                    "hasInternalPayment": "0",
                    "hasExternalPayment": "1",
                    "totalExternalPaymentAmount": "200",
                    "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                    "appId": null,
                    "fileUrl": null,
                    "submittedAt": null,
                    "createdAt": "2022-03-25 16:45:11",
                    "updatedAt": "2022-03-25 17:49:35",
                    "statusText": "partially paid",
                    "typeText": null
                },
                "paymentSourceText": "paid via cash"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 2
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T16:49:38+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Merchant (BO)

Merchant management interface. Use standard key->value display method for data presentation

List Merchant Accounts

Paginated list of merchants. Many filters available.

Endpoint

GET /backoffice/merchant/list

Request Params

Filters

            [['id', 'userId', 'commissionCap', 'minSettlementAmount', 'settlementWindowId', 'settlementAccountId', 'enableManualSettlement', 'maxActiveCoupons', 'maxCouponsPerPromotion', 'maxLuckyMoneyQuantity', 'maxLuckyMoneyAmount', 'enableGuestPayments', 'enableInPersonPayment', 'maxSubAccounts', 'enableGiftCard', 'enablePreFinancedGiftCard', 'enableVirtualAccounts', 'maxVirtualAccounts', 'enableMembershipService', 'enableCrossBorderCollection', 'enableCustomCouponCodes', 'freezeSettlement'], 'safe'],
            [['commission', 'internalSettlementCommission' , 'gracePeriodEndsAt', 'payoutAllowedIpAddressList',], 'safe'],
  

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "id": "21",
                "userId": "43",
                "commission": null,
                "internalSettlementCommission": null,
                "commissionCap": null,
                "minSettlementAmount": null,
                "settlementWindowId": null,
                "settlementAccountId": null,
                "enableManualSettlement": "0",
                "maxActiveCoupons": null,
                "maxCouponsPerPromotion": null,
                "maxLuckyMoneyQuantity": null,
                "maxLuckyMoneyAmount": null,
                "enableGuestPayments": "0",
                "enableInPersonPayment": "0",
                "maxSubAccounts": null,
                "enableGiftCard": "0",
                "enablePreFinancedGiftCard": null,
                "enableVirtualAccounts": "0",
                "maxVirtualAccounts": null,
                "gracePeriodEndsAt": "2022-04-24 12:20:53",
                "enableMembershipService": "0",
                "enableCrossBorderCollection": "0",
                "enableCustomCouponCodes": "0",
                "payoutAllowedIpAddressList": null,
                "freezeSettlement": null,
                "giftCardFundingAccountId": "222",
                "membershipDebitAccountId": "223",
                "createdAt": "2022-03-25 12:20:53",
                "lastUpdatedAt": null,
                "lastUpdatedByStaffId": null
            },
           
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 21
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T14:03:11+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.092s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View Merchant Details

Displays merchant details

Request Endpoint

GET /backoffice/merchant/view?id=userId

Request Filter Params

{
    "data": {
        "commission": null,
        "commissionCap": null,
        "createdAt": "2022-03-25 12:20:52",
        "enableCrossBorderCollection": 0,
        "enableCustomCouponCodes": 0,
        "enableGiftCard": 0,
        "enableGuestPayments": 0,
        "enableInPersonPayment": 0,
        "enableManualSettlement": 0,
        "enableMembershipService": 0,
        "enablePreFinancedGiftCard": null,
        "enableVirtualAccounts": 0,
        "freezeSettlement": null,
        "giftCardFundingAccount": {
            "id": 42,
            "_id": "ACNLEQTH9YS9MUO6T9VX",
            "userId": 23,
            "currencyCode": "XAF",
            "type": 8,
            "balanceAmount": 0,
            "withheldBalanceAmount": 0,
            "name": "",
            "description": "",
            "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
            "label": "TYPE_MERCHANT_GIFT_CARD_FUNDING",
            "isCsaOverdraftAccount": 0,
            "isActive": 1,
            "createdAt": "2022-03-25 13:20:52",
            "lastUpdatedAt": null,
            "typeText": "Gift card funding account"
        },
        "giftCardFundingAccountId": 42,
        "gracePeriodEndsAt": "2022-04-24 12:20:52",
        "id": 1,
        "internalSettlementCommission": null,
        "lastUpdatedAt": null,
        "lastUpdatedByStaffId": null,
        "maxActiveCoupons": null,
        "maxCouponsPerPromotion": null,
        "maxLuckyMoneyAmount": null,
        "maxLuckyMoneyQuantity": null,
        "maxSubAccounts": null,
        "maxVirtualAccounts": null,
        "membershipDebitAccount": {
            "id": 43,
            "_id": "ACICJQP6IG9RVIP5OPJA",
            "userId": 23,
            "currencyCode": "XAF",
            "type": 17,
            "balanceAmount": 0,
            "withheldBalanceAmount": 0,
            "name": "",
            "description": "",
            "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
            "label": "MCH_MEMBERSHIP_DEBIT",
            "isCsaOverdraftAccount": 0,
            "isActive": 1,
            "createdAt": "2022-03-25 13:20:52",
            "lastUpdatedAt": null,
            "typeText": "Merchant membership debit account"
        },
        "membershipDebitAccountId": 43,
        "minSettlementAmount": null,
        "payoutAllowedIpAddressList": null,
        "settlementAccountId": null,
        "settlementWindowId": null,
        "user": {
            "id": 23,
            "_id": "tz23",
            "ufId": null,
            "orgUserId": null,
            "scopeId": null,
            "roleId": 1000,
            "primaryCurrencyCode": "XAF",
            "residenceCountryCode": "CM",
            "type": 3,
            "firstName": null,
            "lastName": null,
            "displayName": "tz23",
            "verifiedName": null,
            "paymentPin": "$2y$05$UnwJHcr3sL9n34rWX/i2oO4OeLhJ4GeSUdZJNP6H72ouUAO4ZkpzO",
            "phoneNumber": null,
            "language": "en_GB",
            "timeZone": "Africa/Douala",
            "isRNVerified": 0,
            "loginEnabled": 1,
            "avatarUrl": null,
            "defaultSendingAccountId": null,
            "canReceivePayment": 1,
            "canSendPayment": 1,
            "createdAt": "2022-03-25 12:20:51",
            "lastUpdatedAt": "2022-03-25 13:20:52"
        },
        "userId": 23
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T14:23:03+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.055s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Update Merchant Settings

Updates updatable params

Request Endpoint

POST /backoffice/merchant/update

Request Params

{
    "userId": 1,
    "commission": null,
    "commissionCap": null,
    "enableCrossBorderCollection": 0,
    "enableCustomCouponCodes": 0,
    "enableGiftCard": 1,
    "enableGuestPayments": 0,
    "enableInPersonPayment": 0,
    "enableManualSettlement": 0,
    "enableMembershipService": 0,
    "enablePreFinancedGiftCard": 1,
    "enableVirtualAccounts": 0,
    "freezeSettlement": null,
    "gracePeriodEndsAt": "2022-04-21 12:04:56",
    "internalSettlementCommission": null,
    "lastUpdatedAt": null,
    "maxActiveCoupons": null,
    "maxCouponsPerPromotion": null,
    "maxLuckyMoneyAmount": null,
    "maxLuckyMoneyQuantity": null,
    "maxSubAccounts": null,
    "maxVirtualAccounts": null,
    "minSettlementAmount": null
}

Response

See VIEW Section

List Merchant Sub-Accounts

Displays paginated list of sub-accounts

Request Endpoint

GET /backoffice/merchant/sub-accounts

Request Params

 [['merchantId' , 'accountId', 'createdByUserId', 'enableManualSettlement', 'settlementAccountId', 'settlementBatchId', 'crossBorderSettlementBatchId'], 'safe'],

Response

{
   "data": {
       "currentPage": 1,
       "hasMore": true,
       "list": [
           {
               "accountId": "221",
               "createdByUserId": "43",
               "enableManualSettlement": null,
               "settlementAccountId": null,
               "settlementBatchId": null,
               "crossBorderSettlementBatchId": null,
               "createdAt": "2022-03-25 12:20:53",
               "lastUpdatedAt": null,
               "account": {
                   "id": "221",
                   "_id": "MSA9WQC3ZZ17XNCJ11KQ",
                   "userId": "43",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": "0",
                   "withheldBalanceAmount": "0",
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:53",
                   "lastUpdatedAt": null
               },
               "merchant": {
                   "id": "21",
                   "userId": "43",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:53",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "222",
                   "membershipDebitAccountId": "223",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "user": {
                   "id": "43",
                   "_id": "tz43",
                   "ufId": null,
                   "orgUserId": null,
                   "scopeId": null,
                   "roleId": "1000",
                   "primaryCurrencyCode": "XAF",
                   "residenceCountryCode": "CM",
                   "type": "3",
                   "firstName": null,
                   "lastName": null,
                   "displayName": "tz43",
                   "verifiedName": null,
                   "paymentPin": "$2y$05$rzEUcrWUyKnqY8ccMBejYOnISzontDQsbNPWpDOPwdW.NyQoe15PC",
                   "phoneNumber": null,
                   "language": "en_GB",
                   "timeZone": "Africa/Douala",
                   "isRNVerified": "0",
                   "loginEnabled": "1",
                   "avatarUrl": null,
                   "defaultSendingAccountId": null,
                   "canReceivePayment": "1",
                   "canSendPayment": "1",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": "2022-03-25 13:20:53"
               },
               "merchantId": "21"
           },
           {
               "accountId": "212",
               "createdByUserId": "42",
               "enableManualSettlement": null,
               "settlementAccountId": null,
               "settlementBatchId": null,
               "crossBorderSettlementBatchId": null,
               "createdAt": "2022-03-25 12:20:53",
               "lastUpdatedAt": null,
               "account": {
                   "id": "212",
                   "_id": "MSAUHZXYRO2US6HHTCNX",
                   "userId": "42",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": "0",
                   "withheldBalanceAmount": "0",
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:53",
                   "lastUpdatedAt": null
               },
               "merchant": {
                   "id": "20",
                   "userId": "42",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:53",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "213",
                   "membershipDebitAccountId": "214",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "user": {
                   "id": "42",
                   "_id": "tz42",
                   "ufId": null,
                   "orgUserId": null,
                   "scopeId": null,
                   "roleId": "1000",
                   "primaryCurrencyCode": "XAF",
                   "residenceCountryCode": "CM",
                   "type": "3",
                   "firstName": null,
                   "lastName": null,
                   "displayName": "tz42",
                   "verifiedName": null,

                   "phoneNumber": null,
                   "language": "en_GB",
                   "timeZone": "Africa/Douala",
                   "isRNVerified": "0",
                   "loginEnabled": "1",
                   "avatarUrl": null,
                   "defaultSendingAccountId": null,
                   "canReceivePayment": "1",
                   "canSendPayment": "1",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": "2022-03-25 13:20:53"
               },
               "merchantId": "20"
           },
           {
               "accountId": "203",
               "createdByUserId": "41",
               "enableManualSettlement": null,
               "settlementAccountId": null,
               "settlementBatchId": null,
               "crossBorderSettlementBatchId": null,
               "createdAt": "2022-03-25 12:20:53",
               "lastUpdatedAt": null,
               "account": {
                   "id": "203",
                   "_id": "MSA3QPYCAARSJ772QMNG",
                   "userId": "41",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": "0",
                   "withheldBalanceAmount": "0",
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:53",
                   "lastUpdatedAt": null
               },
               "merchant": {
                   "id": "19",
                   "userId": "41",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:53",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "204",
                   "membershipDebitAccountId": "205",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "user": {
                   "id": "41",
                   "_id": "tz41",
                   "ufId": null,
                   "orgUserId": null,
                   "scopeId": null,
                   "roleId": "1000",
                   "primaryCurrencyCode": "XAF",
                   "residenceCountryCode": "CM",
                   "type": "3",
                   "firstName": null,
                   "lastName": null,
                   "displayName": "tz41",
                   "verifiedName": null,
                   "paymentPin": "$2y$05$YNpO8ab8tRnmwzyeqig0eeMrQUByR7J2ir0jgkuJASP82w1yTgJDi",
                   "phoneNumber": null,
                   "language": "en_GB",
                   "timeZone": "Africa/Douala",
                   "isRNVerified": "0",
                   "loginEnabled": "1",
                   "avatarUrl": null,
                   "defaultSendingAccountId": null,
                   "canReceivePayment": "1",
                   "canSendPayment": "1",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": "2022-03-25 13:20:53"
               },
               "merchantId": "19"
           },
           {
               "accountId": "194",
               "createdByUserId": "40",
               "enableManualSettlement": null,
               "settlementAccountId": null,
               "settlementBatchId": null,
               "crossBorderSettlementBatchId": null,
               "createdAt": "2022-03-25 12:20:53",
               "lastUpdatedAt": null,
               "account": {
                   "id": "194",
                   "_id": "MSAKHMWR9BX7JTZNAE48",
                   "userId": "40",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": "0",
                   "withheldBalanceAmount": "0",
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:53",
                   "lastUpdatedAt": null
               },
               "merchant": {
                   "id": "18",
                   "userId": "40",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:53",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "195",
                   "membershipDebitAccountId": "196",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "user": {
                   "id": "40",
                   "_id": "tz40",
                   "ufId": null,
                   "orgUserId": null,
                   "scopeId": null,
                   "roleId": "1000",
                   "primaryCurrencyCode": "XAF",
                   "residenceCountryCode": "CM",
                   "type": "3",
                   "firstName": null,
                   "lastName": null,
                   "displayName": "tz40",
                   "verifiedName": null,
                   "paymentPin": "$2y$05$BIxny0oZLOKpSMVAsqVc0eHRYL1LdAR8qb39iGoyW1i89Q3fw.5O.",
                   "phoneNumber": null,
                   "language": "en_GB",
                   "timeZone": "Africa/Douala",
                   "isRNVerified": "0",
                   "loginEnabled": "1",
                   "avatarUrl": null,
                   "defaultSendingAccountId": null,
                   "canReceivePayment": "1",
                   "canSendPayment": "1",
                   "createdAt": "2022-03-25 12:20:53",
                   "lastUpdatedAt": "2022-03-25 13:20:53"
               },
               "merchantId": "18"
           },
         
       ],
       "pageCount": [
           1,
           50
       ],
       "pageSize": 20,
       "totalItems": 21
   },
   "success": true,
   "debugInfo": null,
   "debug": {
       "lang": "en-US",
       "dateTime": "2022-03-25T14:20:31+00:00",
       "hostname": "cortex01",
       "serverIpAddress": "192.168.137.2",
       "clientIpAddress": "192.168.137.1",
       "duration": "0.055s",
       "userId": "1",
       "staffId": "1",
       "staffFirstName": null
   }
}

Topup Merchant Gift Card Pack Account

Adds arbitrary funds into the merchant gift card pack account. This will be used for pre-financed GCs.

Request Endpoint

GET /merchant/topup-gift-card-account

Request Params

{
    "id": 1,
    "topupAmount": 100000000
}

Response

See VIEW Merchant section

List Merchant Settlement Batches

Display paginated list of merchant batches.

Request Endpoint

/backoffice/merchant/settlement-batches

Request Filters

[['merchantId' , 'id', 'merchantUserId', 'accountId', 'isManualSettlement', 'isCrossBorder', 'destinationAccountId', 'clearingTransactionId', 'amount', 'fee', 'status', '_id', 'dueDate', 'createdAt', 'processingStartTime', 'processingEndTime', 'reportFilePath'], 'safe'],

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "_id": "MSBZI33LQ0FQTAT3",
                "merchantUserId": "23",
                "accountId": "41",
                "isManualSettlement": null,
                "isCrossBorder": "0",
                "destinationAccountId": null,
                "clearingTransactionId": null,
                "amount": null,
                "fee": null,
                "status": "1",
                "dueDate": "2022-03-26 00:00:00",
                "createdAt": "2022-03-25 12:23:42",
                "processingStartTime": null,
                "processingEndTime": null,
                "reportFilePath": null,
                "lastUpdatedAt": null,
                "account": {
                    "id": "41",
                    "_id": "MSA4LDJ0LYRFWCXL29C8",
                    "userId": "23",
                    "currencyCode": "XAF",
                    "type": "5",
                    "balanceAmount": "1000",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                    "label": "TYPE_MERCHANT_DEFAULT",
                    "isCsaOverdraftAccount": "0",
                    "isActive": "1",
                    "createdAt": "2022-03-25 13:20:52",
                    "lastUpdatedAt": "2022-03-25 13:39:24"
                },
                "user": {
                    "id": "23",
                    "_id": "tz23",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "XAF",
                    "residenceCountryCode": "CM",
                    "type": "3",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "tz23",
                    "verifiedName": null,
                    "paymentPin": "$2y$05$UnwJHcr3sL9n34rWX/i2oO4OeLhJ4GeSUdZJNP6H72ouUAO4ZkpzO",
                    "phoneNumber": null,
                    "language": "en_GB",
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "1",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 12:20:51",
                    "lastUpdatedAt": "2022-03-25 13:20:52"
                },
                "merchant": {
                    "id": "1",
                    "userId": "23",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "42",
                    "membershipDebitAccountId": "43",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "subAccount": {
                    "accountId": "41",
                    "createdByUserId": "23",
                    "enableManualSettlement": null,
                    "settlementAccountId": null,
                    "settlementBatchId": "1",
                    "crossBorderSettlementBatchId": null,
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": "2022-03-25 13:23:42"
                },
                "destinationAccount": null,
                "destinationPaymentMethod": null,
                "destinationTreasuryService": null,
                "destinationTreasury": null,
                "merchantId": "1",
                "statusText": "pending"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T14:29:01+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.056s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List Merchant Settlement Jobs

Settlement jobs are transactions that are pending settlement. Displays paginated list

Request Endpoint

GET /backoffice/merchant/settlement-jobs

Request Params

 [['merchantId' ,'id', 'accountId', 'paymentId', 'settlementBatchId', 'amount'], 'safe'],

Response

{
   "data": {
       "currentPage": 1,
       "hasMore": false,
       "list": [
           {
               "id": "3",
               "accountId": "41",
               "paymentId": "6",
               "settlementBatchId": "1",
               "amount": -1000,
               "createdAt": "2022-03-25 12:39:24",
               "lastUpdatedAt": null,
               "batch": {
                   "id": "1",
                   "_id": "MSBZI33LQ0FQTAT3",
                   "merchantUserId": "23",
                   "accountId": "41",
                   "isManualSettlement": null,
                   "isCrossBorder": "0",
                   "destinationAccountId": null,
                   "clearingTransactionId": null,
                   "amount": null,
                   "fee": null,
                   "status": "1",
                   "dueDate": "2022-03-26 00:00:00",
                   "createdAt": "2022-03-25 12:23:42",
                   "processingStartTime": null,
                   "processingEndTime": null,
                   "reportFilePath": null,
                   "lastUpdatedAt": null
               },
               "payment": {
                   "id": "6",
                   "_id": "REF220325ICZW4WYB2SK",
                   "parentId": "5",
                   "status": "30",
                   "type": "5",
                   "serviceType": "10",
                   "serviceId": "1",
                   "amount": "1000",
                   "currencyCode": "XAF",
                   "collectedCouponId": null,
                   "couponAmount": null,
                   "tipAmount": "0",
                   "inboundExternalPaymentId": null,
                   "recurringPaymentFlag": null,
                   "description": "Transfer to tz25",
                   "payerOrgUserId": "23",
                   "payerUserId": "23",
                   "payerName": "tz23",
                   "payerAccountId": "41",
                   "presPayerAmount": "1000",
                   "payerGiftCardAmount": "0",
                   "payerGiftCardAccountId": null,
                   "payerMembershipId": null,
                   "payerMembershipAmount": "0",
                   "payerBonusRewardId": null,
                   "payerBonusRewardAmount": "0",
                   "payerFee": "0",
                   "beneUserId": "25",
                   "beneAccountId": "55",
                   "beneName": "tz25",
                   "presBeneAmount": "1000",
                   "beneFee": "0",
                   "beneGiftCardDebitAmount": "0",
                   "beneMembershipDebitAmount": "0",
                   "isInitiatedByPayer": "1",
                   "createdAt": "2022-03-25 12:39:24.714306",
                   "creationStartTime": "2022-03-25 12:39:24.706462",
                   "executionStartTime": "2022-03-25 12:39:24.716061",
                   "processingAt": null,
                   "completedAt": "2022-03-25 13:39:24.723058"
               },
               "account": {
                   "id": "41",
                   "_id": "MSA4LDJ0LYRFWCXL29C8",
                   "userId": "23",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": 1000,
                   "withheldBalanceAmount": 0,
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:52",
                   "lastUpdatedAt": "2022-03-25 13:39:24",
                   "typeText": "Merchant account (Default)"
               },
               "merchant": {
                   "id": "1",
                   "userId": "23",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:52",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "42",
                   "membershipDebitAccountId": "43",
                   "createdAt": "2022-03-25 12:20:52",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "subAccount": {
                   "accountId": "41",
                   "createdByUserId": "23",
                   "enableManualSettlement": null,
                   "settlementAccountId": null,
                   "settlementBatchId": "1",
                   "crossBorderSettlementBatchId": null,
                   "createdAt": "2022-03-25 12:20:52",
                   "lastUpdatedAt": "2022-03-25 13:23:42"
               },
               "merchantId": "1"
           },
           {
               "id": "2",
               "accountId": "41",
               "paymentId": "5",
               "settlementBatchId": "1",
               "amount": 1000,
               "createdAt": "2022-03-25 12:38:51",
               "lastUpdatedAt": null,
               "batch": {
                   "id": "1",
                   "_id": "MSBZI33LQ0FQTAT3",
                   "merchantUserId": "23",
                   "accountId": "41",
                   "isManualSettlement": null,
                   "isCrossBorder": "0",
                   "destinationAccountId": null,
                   "clearingTransactionId": null,
                   "amount": null,
                   "fee": null,
                   "status": "1",
                   "dueDate": "2022-03-26 00:00:00",
                   "createdAt": "2022-03-25 12:23:42",
                   "processingStartTime": null,
                   "processingEndTime": null,
                   "reportFilePath": null,
                   "lastUpdatedAt": null
               },
               "payment": {
                   "id": "5",
                   "_id": "MP2203253SXXKQ1XDRZW",
                   "parentId": null,
                   "status": "-11",
                   "type": "3",
                   "serviceType": "24",
                   "serviceId": "4",
                   "amount": "1000",
                   "currencyCode": "XAF",
                   "collectedCouponId": null,
                   "couponAmount": null,
                   "tipAmount": "0",
                   "inboundExternalPaymentId": null,
                   "recurringPaymentFlag": null,
                   "description": "A transaction for the world",
                   "payerOrgUserId": "25",
                   "payerUserId": "25",
                   "payerName": "tz25",
                   "payerAccountId": "55",
                   "presPayerAmount": "1000",
                   "payerGiftCardAmount": "0",
                   "payerGiftCardAccountId": null,
                   "payerMembershipId": null,
                   "payerMembershipAmount": "0",
                   "payerBonusRewardId": null,
                   "payerBonusRewardAmount": "0",
                   "payerFee": "0",
                   "beneUserId": "23",
                   "beneAccountId": "41",
                   "beneName": "tz23",
                   "presBeneAmount": "1000",
                   "beneFee": "0",
                   "beneGiftCardDebitAmount": "0",
                   "beneMembershipDebitAmount": "0",
                   "isInitiatedByPayer": "1",
                   "createdAt": "2022-03-25 12:38:51.624635",
                   "creationStartTime": "2022-03-25 12:38:51.621631",
                   "executionStartTime": "2022-03-25 12:38:51.627295",
                   "processingAt": null,
                   "completedAt": "2022-03-25 13:38:51.633991"
               },
               "account": {
                   "id": "41",
                   "_id": "MSA4LDJ0LYRFWCXL29C8",
                   "userId": "23",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": 1000,
                   "withheldBalanceAmount": 0,
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:52",
                   "lastUpdatedAt": "2022-03-25 13:39:24",
                   "typeText": "Merchant account (Default)"
               },
               "merchant": {
                   "id": "1",
                   "userId": "23",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:52",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "42",
                   "membershipDebitAccountId": "43",
                   "createdAt": "2022-03-25 12:20:52",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "subAccount": {
                   "accountId": "41",
                   "createdByUserId": "23",
                   "enableManualSettlement": null,
                   "settlementAccountId": null,
                   "settlementBatchId": "1",
                   "crossBorderSettlementBatchId": null,
                   "createdAt": "2022-03-25 12:20:52",
                   "lastUpdatedAt": "2022-03-25 13:23:42"
               },
               "merchantId": "1"
           },
           {
               "id": "1",
               "accountId": "41",
               "paymentId": "1",
               "settlementBatchId": "1",
               "amount": 1000,
               "createdAt": "2022-03-25 12:23:42",
               "lastUpdatedAt": null,
               "batch": {
                   "id": "1",
                   "_id": "MSBZI33LQ0FQTAT3",
                   "merchantUserId": "23",
                   "accountId": "41",
                   "isManualSettlement": null,
                   "isCrossBorder": "0",
                   "destinationAccountId": null,
                   "clearingTransactionId": null,
                   "amount": null,
                   "fee": null,
                   "status": "1",
                   "dueDate": "2022-03-26 00:00:00",
                   "createdAt": "2022-03-25 12:23:42",
                   "processingStartTime": null,
                   "processingEndTime": null,
                   "reportFilePath": null,
                   "lastUpdatedAt": null
               },
               "payment": {
                   "id": "1",
                   "_id": "MP2203250I8OLG1DACVP",
                   "parentId": null,
                   "status": "30",
                   "type": "3",
                   "serviceType": "24",
                   "serviceId": "1",
                   "amount": "1000",
                   "currencyCode": "XAF",
                   "collectedCouponId": null,
                   "couponAmount": null,
                   "tipAmount": "0",
                   "inboundExternalPaymentId": null,
                   "recurringPaymentFlag": null,
                   "description": "A transaction for the world",
                   "payerOrgUserId": "25",
                   "payerUserId": "25",
                   "payerName": "tz25",
                   "payerAccountId": "55",
                   "presPayerAmount": "1000",
                   "payerGiftCardAmount": "0",
                   "payerGiftCardAccountId": null,
                   "payerMembershipId": null,
                   "payerMembershipAmount": "0",
                   "payerBonusRewardId": null,
                   "payerBonusRewardAmount": "0",
                   "payerFee": "0",
                   "beneUserId": "23",
                   "beneAccountId": "41",
                   "beneName": "tz23",
                   "presBeneAmount": "1000",
                   "beneFee": "0",
                   "beneGiftCardDebitAmount": "0",
                   "beneMembershipDebitAmount": "0",
                   "isInitiatedByPayer": "1",
                   "createdAt": "2022-03-25 12:23:42.611461",
                   "creationStartTime": "2022-03-25 12:23:42.608323",
                   "executionStartTime": "2022-03-25 12:23:42.614772",
                   "processingAt": null,
                   "completedAt": "2022-03-25 13:23:42.622870"
               },
               "account": {
                   "id": "41",
                   "_id": "MSA4LDJ0LYRFWCXL29C8",
                   "userId": "23",
                   "currencyCode": "XAF",
                   "type": "5",
                   "balanceAmount": 1000,
                   "withheldBalanceAmount": 0,
                   "name": "",
                   "description": "",
                   "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "label": "TYPE_MERCHANT_DEFAULT",
                   "isCsaOverdraftAccount": "0",
                   "isActive": "1",
                   "createdAt": "2022-03-25 13:20:52",
                   "lastUpdatedAt": "2022-03-25 13:39:24",
                   "typeText": "Merchant account (Default)"
               },
               "merchant": {
                   "id": "1",
                   "userId": "23",
                   "commission": null,
                   "internalSettlementCommission": null,
                   "commissionCap": null,
                   "minSettlementAmount": null,
                   "settlementWindowId": null,
                   "settlementAccountId": null,
                   "enableManualSettlement": "0",
                   "maxActiveCoupons": null,
                   "maxCouponsPerPromotion": null,
                   "maxLuckyMoneyQuantity": null,
                   "maxLuckyMoneyAmount": null,
                   "enableGuestPayments": "0",
                   "enableInPersonPayment": "0",
                   "maxSubAccounts": null,
                   "enableGiftCard": "0",
                   "enablePreFinancedGiftCard": null,
                   "enableVirtualAccounts": "0",
                   "maxVirtualAccounts": null,
                   "gracePeriodEndsAt": "2022-04-24 12:20:52",
                   "enableMembershipService": "0",
                   "enableCrossBorderCollection": "0",
                   "enableCustomCouponCodes": "0",
                   "payoutAllowedIpAddressList": null,
                   "freezeSettlement": null,
                   "giftCardFundingAccountId": "42",
                   "membershipDebitAccountId": "43",
                   "createdAt": "2022-03-25 12:20:52",
                   "lastUpdatedAt": null,
                   "lastUpdatedByStaffId": null
               },
               "subAccount": {
                   "accountId": "41",
                   "createdByUserId": "23",
                   "enableManualSettlement": null,
                   "settlementAccountId": null,
                   "settlementBatchId": "1",
                   "crossBorderSettlementBatchId": null,
                   "createdAt": "2022-03-25 12:20:52",
                   "lastUpdatedAt": "2022-03-25 13:23:42"
               },
               "merchantId": "1"
           }
       ],
       "pageCount": [
           1,
           50
       ],
       "pageSize": 20,
       "totalItems": 3
   },
   "success": true,
   "debugInfo": null,
   "debug": {
       "lang": "en-US",
       "dateTime": "2022-03-25T14:30:58+00:00",
       "hostname": "cortex01",
       "serverIpAddress": "192.168.137.2",
       "clientIpAddress": "192.168.137.1",
       "duration": "0.05s",
       "userId": "1",
       "staffId": "1",
       "staffFirstName": null
   }
}

Outbound Transactions

Transactions Leaving the system. Such transactions could be real-time (e.g transfer to mobile money) or delayed batch (bank transfer via file upload).

Real-Time Batch Jobs

Displays real-time (MOMO, OM) transactions and their statuses

Endpoint

GET /backoffice/outbound/list-real-time

Filter parameters

['paymentId', 'userId', 'accountId', 'batchId', 'clearingPaymentId', 'status', 'retryAttempts', 'errorCode'  ,'partnerTransactionId', 'partnerTransactionTime', 'note', 'failMessage', 'startDateTime', 'endDateTime']

Response

List of Batch Jobs

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "paymentId": "22",
                "userId": "23",
                "accountId": "16",
                "batchId": "1",
                "clearingPaymentId": "26",
                "status": "5",
                "partnerTransactionId": "PP2203223DUF9CYZU1SP|",
                "partnerTransactionTime": null,
                "retryAttempts": null,
                "note": "Hello salary|UBA",
                "errorCode": null,
                "failMessage": "PP2203223DUF9CYZU1SP|",
                "createdAt": "2022-03-22 12:05:38",
                "lastUpdatedAt": "2022-03-22 13:02:33",
                "account": {
                    "id": "16",
                    "_id": "AC2E0CVVSI9WR47YQICP",
                    "userId": "5",
                    "currencyCode": "XAF",
                    "type": "3",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_TREASURY_SERVICE ",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-22 13:04:56",
                    "lastUpdatedAt": null
                },
                "payment": {
                    "id": "22",
                    "_id": "PP2203223DUF9CYZU1SP",
                    "parentId": "21",
                    "status": "30",
                    "type": "1",
                    "serviceType": "25",
                    "serviceId": "17",
                    "amount": "1000",
                    "currencyCode": "XAF",
                    "collectedCouponId": null,
                    "couponAmount": null,
                    "tipAmount": "0",
                    "inboundExternalPaymentId": null,
                    "recurringPaymentFlag": null,
                    "description": "Payment to UBA Cameroon",
                    "payerOrgUserId": "23",
                    "payerUserId": "23",
                    "payerName": "tz23",
                    "payerAccountId": "40",
                    "presPayerAmount": "1000",
                    "payerGiftCardAmount": "0",
                    "payerGiftCardAccountId": null,
                    "payerMembershipId": null,
                    "payerMembershipAmount": "0",
                    "payerBonusRewardId": null,
                    "payerBonusRewardAmount": "0",
                    "payerFee": "0",
                    "beneUserId": "5",
                    "beneAccountId": "16",
                    "beneName": "UBA Cameroon|10001111111111",
                    "presBeneAmount": "1000",
                    "beneFee": "0",
                    "beneGiftCardDebitAmount": "0",
                    "beneMembershipDebitAmount": "0",
                    "isInitiatedByPayer": "1",
                    "createdAt": "2022-03-22 12:05:37.992857",
                    "creationStartTime": "2022-03-22 12:05:37.983167",
                    "executionStartTime": "2022-03-22 12:05:37.995152",
                    "processingAt": "2022-03-22 13:05:37.999695",
                    "completedAt": "2022-03-22 13:02:33.703299"
                },
                "paymentMetaData": {
                    "paymentId": "22",
                    "disablePayerAccountSelection": null,
                    "mchTransactionRef": null,
                    "itemDetails": "",
                    "inboundAccountNumber": "",
                    "inboundAccountName": "",
                    "inboundAccountEmail": null,
                    "payerNote": "Transfer to user",
                    "beneNote": "",
                    "outboundTreasuryServiceId": "3",
                    "outboundOrgName": "UBA Cameroon",
                    "outboundAccountNumber": "10001111111111",
                    "outboundAccountName": "Paddy Wak Chuk",
                    "outboundBankCode": "10033",
                    "outboundBranchCode": "0005",
                    "outboundRibCode": "56",
                    "outboundPrepaidFirst6Digits": null,
                    "outboundPrepaidLast4Digits": null,
                    "outboundPrepaidCustomerId": null,
                    "payerLocationCoordinates": null,
                    "subscriptionId": null,
                    "subscriptionPlanId": null,
                    "appId": null,
                    "notifyUrl": "",
                    "returnUrl": "",
                    "createdAt": "2022-03-22 12:05:37",
                    "lastUpdatedAt": null
                },
                "treasuryService": {
                    "id": "3",
                    "countryCode": "CM",
                    "serviceName": null,
                    "treasuryId": "3",
                    "type": "2",
                    "accountId": "16",
                    "isPaymentMethod": "1",
                    "isEnabled": "1",
                    "externalBalance": "0",
                    "avatarUrl": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-22 12:04:56",
                    "lastUpdatedAt": null
                },
                "treasury": {
                    "id": "3",
                    "userId": "5",
                    "countryCode": "CM",
                    "type": "1",
                    "shortName": "UBA Cameroon",
                    "name": "UBA Cameroon",
                    "description": "CM | UBA Cameroon",
                    "isOffline": "0",
                    "status": "1",
                    "isPaymentMethod": "1",
                    "bankCode": "10033",
                    "isOutboundPaymentProvider": "1",
                    "outboundRatePercentage": "3.9000",
                    "avatarUrl": "/static/img/partners/uba.png",
                    "cardAvatarUrl": "/static/img/partners/cards/",
                    "isSelectableByUsers": "1",
                    "isVerificationSource": "0",
                    "isExpressPaymentSupported": "1",
                    "paymentWebRedirectUrl": null,
                    "inboundMinAmount": "1",
                    "inboundMaxAmount": "1000000",
                    "inboundPercentageCharge": "2",
                    "inboundFixedCharge": "10",
                    "outboundMinAmount": "1",
                    "outboundMaxAmount": "100000",
                    "outboundFixedCharge": "10",
                    "outboundPercentageCharge": "2",
                    "outboundProcessingTimeInHours": null,
                    "outboundMaxJobPerBatch": null,
                    "ussdMobileMoneyDialCode": null,
                    "enableVisaPrepaidSettlement": "0",
                    "enableMastercardPrepaidSettlement": "0",
                    "isSettlementEntity": "1",
                    "settlementPriority": "100",
                    "maxPrepaidCardJobsPerBatch": "100",
                    "maxIntraBankJobsPerBatch": "100",
                    "maxInterBankJobsPerBatch": "100",
                    "settlementAccountId": "15",
                    "swiftCode": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-22 12:04:56",
                    "updatedAt": null
                },
                "batch": {
                    "id": "1",
                    "_id": "OB4KMWIXKCKTYNO5",
                    "settlementTreasuryId": "3",
                    "type": "2",
                    "amount": "10000",
                    "currencyCode": "XAF",
                    "paymentId": "46",
                    "status": "50",
                    "bankSettlementId": "1",
                    "isPriority": "0",
                    "retryAttempts": null,
                    "requestFile": "@datastore/batch_request/2022-03/20220322_UBA_Cameroon_INTRA_BANK_batch_1_batch.txt",
                    "responseFile": "@datastore/batch_response/2022-03/batch_1.txt",
                    "errorCode": null,
                    "createdAt": "2022-03-22 12:08:54",
                    "lastUpdatedAt": "2022-03-22 13:02:33",
                    "submittedAt": "2022-03-22 12:14:44",
                    "partnerTransactionAmount": null,
                    "partnerFee": null,
                    "partnerTransactionId": null,
                    "partnerCompletedAt": null,
                    "partnerRequestReferenceId": "554ab97b-ca58-4b3c-b699-8687b289a871",
                    "partnerFileSequenceNumber": null,
                    "partnerNostroAccountNumber": null,
                    "partnerResponseData": null,
                    "completedAt": "2022-03-22 13:02:33"
                },
                "amount": 1000,
                "statusTest": "completed",
                "_paymentId": "PP2203223DUF9CYZU1SP"
            },
            {
                "paymentId": "23",
                "userId": "23",
                "accountId": "16",
                "batchId": "1",
                "clearingPaymentId": "27",
                "status": "5",
                "partnerTransactionId": "PP22032200D8HN34PAJ9|",
                "partnerTransactionTime": null,
                "retryAttempts": null,
                "note": "Hello salary|UBA",
                "errorCode": null,
                "failMessage": "PP22032200D8HN34PAJ9|",
                "createdAt": "2022-03-22 12:05:38",
                "lastUpdatedAt": "2022-03-22 13:02:33",
                "account": {
                    "id": "16",
                    "_id": "AC2E0CVVSI9WR47YQICP",
                    "userId": "5",
                    "currencyCode": "XAF",
                    "type": "3",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_TREASURY_SERVICE ",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-22 13:04:56",
                    "lastUpdatedAt": null
                },
                "payment": {
                    "id": "23",
                    "_id": "PP22032200D8HN34PAJ9",
                    "parentId": "21",
                    "status": "30",
                    "type": "1",
                    "serviceType": "25",
                    "serviceId": "18",
                    "amount": "1000",
                    "currencyCode": "XAF",
                    "collectedCouponId": null,
                    "couponAmount": null,
                    "tipAmount": "0",
                    "inboundExternalPaymentId": null,
                    "recurringPaymentFlag": null,
                    "description": "Payment to UBA Cameroon",
                    "payerOrgUserId": "23",
                    "payerUserId": "23",
                    "payerName": "tz23",
                    "payerAccountId": "40",
                    "presPayerAmount": "1000",
                    "payerGiftCardAmount": "0",
                    "payerGiftCardAccountId": null,
                    "payerMembershipId": null,
                    "payerMembershipAmount": "0",
                    "payerBonusRewardId": null,
                    "payerBonusRewardAmount": "0",
                    "payerFee": "0",
                    "beneUserId": "5",
                    "beneAccountId": "16",
                    "beneName": "UBA Cameroon|100022222222",
                    "presBeneAmount": "1000",
                    "beneFee": "0",
                    "beneGiftCardDebitAmount": "0",
                    "beneMembershipDebitAmount": "0",
                    "isInitiatedByPayer": "1",
                    "createdAt": "2022-03-22 12:05:38.027645",
                    "creationStartTime": "2022-03-22 12:05:38.022388",
                    "executionStartTime": "2022-03-22 12:05:38.029336",
                    "processingAt": "2022-03-22 13:05:38.031106",
                    "completedAt": "2022-03-22 13:02:33.707912"
                },
                "paymentMetaData": {
                    "paymentId": "23",
                    "disablePayerAccountSelection": null,
                    "mchTransactionRef": null,
                    "itemDetails": "",
                    "inboundAccountNumber": "",
                    "inboundAccountName": "",
                    "inboundAccountEmail": null,
                    "payerNote": "Transfer to user",
                    "beneNote": "",
                    "outboundTreasuryServiceId": "3",
                    "outboundOrgName": "UBA Cameroon",
                    "outboundAccountNumber": "100022222222",
                    "outboundAccountName": "Jezz Tabac",
                    "outboundBankCode": "10033",
                    "outboundBranchCode": "0007",
                    "outboundRibCode": "56",
                    "outboundPrepaidFirst6Digits": null,
                    "outboundPrepaidLast4Digits": null,
                    "outboundPrepaidCustomerId": null,
                    "payerLocationCoordinates": null,
                    "subscriptionId": null,
                    "subscriptionPlanId": null,
                    "appId": null,
                    "notifyUrl": "",
                    "returnUrl": "",
                    "createdAt": "2022-03-22 12:05:38",
                    "lastUpdatedAt": null
                },
                "treasuryService": {
                    "id": "3",
                    "countryCode": "CM",
                    "serviceName": null,
                    "treasuryId": "3",
                    "type": "2",
                    "accountId": "16",
                    "isPaymentMethod": "1",
                    "isEnabled": "1",
                    "externalBalance": "0",
                    "avatarUrl": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-22 12:04:56",
                    "lastUpdatedAt": null
                },
                "treasury": {
                    "id": "3",
                    "userId": "5",
                    "countryCode": "CM",
                    "type": "1",
                    "shortName": "UBA Cameroon",
                    "name": "UBA Cameroon",
                    "description": "CM | UBA Cameroon",
                    "isOffline": "0",
                    "status": "1",
                    "isPaymentMethod": "1",
                    "bankCode": "10033",
                    "isOutboundPaymentProvider": "1",
                    "outboundRatePercentage": "3.9000",
                    "avatarUrl": "/static/img/partners/uba.png",
                    "cardAvatarUrl": "/static/img/partners/cards/",
                    "isSelectableByUsers": "1",
                    "isVerificationSource": "0",
                    "isExpressPaymentSupported": "1",
                    "paymentWebRedirectUrl": null,
                    "inboundMinAmount": "1",
                    "inboundMaxAmount": "1000000",
                    "inboundPercentageCharge": "2",
                    "inboundFixedCharge": "10",
                    "outboundMinAmount": "1",
                    "outboundMaxAmount": "100000",
                    "outboundFixedCharge": "10",
                    "outboundPercentageCharge": "2",
                    "outboundProcessingTimeInHours": null,
                    "outboundMaxJobPerBatch": null,
                    "ussdMobileMoneyDialCode": null,
                    "enableVisaPrepaidSettlement": "0",
                    "enableMastercardPrepaidSettlement": "0",
                    "isSettlementEntity": "1",
                    "settlementPriority": "100",
                    "maxPrepaidCardJobsPerBatch": "100",
                    "maxIntraBankJobsPerBatch": "100",
                    "maxInterBankJobsPerBatch": "100",
                    "settlementAccountId": "15",
                    "swiftCode": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-22 12:04:56",
                    "updatedAt": null
                },
                "batch": {
                    "id": "1",
                    "_id": "OB4KMWIXKCKTYNO5",
                    "settlementTreasuryId": "3",
                    "type": "2",
                    "amount": "10000",
                    "currencyCode": "XAF",
                    "paymentId": "46",
                    "status": "50",
                    "bankSettlementId": "1",
                    "isPriority": "0",
                    "retryAttempts": null,
                    "requestFile": "@datastore/batch_request/2022-03/20220322_UBA_Cameroon_INTRA_BANK_batch_1_batch.txt",
                    "responseFile": "@datastore/batch_response/2022-03/batch_1.txt",
                    "errorCode": null,
                    "createdAt": "2022-03-22 12:08:54",
                    "lastUpdatedAt": "2022-03-22 13:02:33",
                    "submittedAt": "2022-03-22 12:14:44",
                    "partnerTransactionAmount": null,
                    "partnerFee": null,
                    "partnerTransactionId": null,
                    "partnerCompletedAt": null,
                    "partnerRequestReferenceId": "554ab97b-ca58-4b3c-b699-8687b289a871",
                    "partnerFileSequenceNumber": null,
                    "partnerNostroAccountNumber": null,
                    "partnerResponseData": null,
                    "completedAt": "2022-03-22 13:02:33"
                },
                "amount": 1000,
                "statusTest": "completed",
                "_paymentId": "PP22032200D8HN34PAJ9"
            },
            {
                "paymentId": "24",
                "userId": "23",
                "accountId": "18",
                "batchId": "2",
                "clearingPaymentId": "36",
                "status": "5",
                "partnerTransactionId": "PP2203220YWE3R64AYF2",
                "partnerTransactionTime": null,
                "retryAttempts": null,
                "note": "Hello XiaLai|AFB",
                "errorCode": null,
                "failMessage": "PP2203220YWE3R64AYF2",
                "createdAt": "2022-03-22 12:05:38",
                "lastUpdatedAt": "2022-03-22 13:02:34",
                "account": {
                    "id": "18",
                    "_id": "ACAC6KDP1GQZDJN57E2L",
                    "userId": "6",
                    "currencyCode": "XAF",
                    "type": "3",
                    "balanceAmount": "0",
                    "withheldBalanceAmount": "0",
                    "name": "",
                    "description": "",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "label": "TYPE_TREASURY_SERVICE ",
                    "isCsaOverdraftAccount": "1",
                    "isActive": "1",
                    "createdAt": "2022-03-22 13:04:56",
                    "lastUpdatedAt": null
                },
                "payment": {
                    "id": "24",
                    "_id": "PP2203220YWE3R64AYF2",
                    "parentId": "21",
                    "status": "30",
                    "type": "1",
                    "serviceType": "25",
                    "serviceId": "19",
                    "amount": "1000",
                    "currencyCode": "XAF",
                    "collectedCouponId": null,
                    "couponAmount": null,
                    "tipAmount": "0",
                    "inboundExternalPaymentId": null,
                    "recurringPaymentFlag": null,
                    "description": "Payment to Afriland First Bank (Cameroon)",
                    "payerOrgUserId": "23",
                    "payerUserId": "23",
                    "payerName": "tz23",
                    "payerAccountId": "40",
                    "presPayerAmount": "1000",
                    "payerGiftCardAmount": "0",
                    "payerGiftCardAccountId": null,
                    "payerMembershipId": null,
                    "payerMembershipAmount": "0",
                    "payerBonusRewardId": null,
                    "payerBonusRewardAmount": "0",
                    "payerFee": "0",
                    "beneUserId": "6",
                    "beneAccountId": "18",
                    "beneName": "Afriland First Bank (Cameroon)|2000222222222",
                    "presBeneAmount": "1000",
                    "beneFee": "0",
                    "beneGiftCardDebitAmount": "0",
                    "beneMembershipDebitAmount": "0",
                    "isInitiatedByPayer": "1",
                    "createdAt": "2022-03-22 12:05:38.043857",
                    "creationStartTime": "2022-03-22 12:05:38.038361",
                    "executionStartTime": "2022-03-22 12:05:38.046204",
                    "processingAt": "2022-03-22 13:05:38.047945",
                    "completedAt": "2022-03-22 13:02:34.115284"
                },
                "paymentMetaData": {
                    "paymentId": "24",
                    "disablePayerAccountSelection": null,
                    "mchTransactionRef": null,
                    "itemDetails": "",
                    "inboundAccountNumber": "",
                    "inboundAccountName": "",
                    "inboundAccountEmail": null,
                    "payerNote": "Transfer to XiaLai",
                    "beneNote": "",
                    "outboundTreasuryServiceId": "5",
                    "outboundOrgName": "Afriland First Bank (Cameroon)",
                    "outboundAccountNumber": "2000222222222",
                    "outboundAccountName": "XiaLai Tui",
                    "outboundBankCode": "10005",
                    "outboundBranchCode": "0005",
                    "outboundRibCode": "56",
                    "outboundPrepaidFirst6Digits": null,
                    "outboundPrepaidLast4Digits": null,
                    "outboundPrepaidCustomerId": null,
                    "payerLocationCoordinates": null,
                    "subscriptionId": null,
                    "subscriptionPlanId": null,
                    "appId": null,
                    "notifyUrl": "",
                    "returnUrl": "",
                    "createdAt": "2022-03-22 12:05:38",
                    "lastUpdatedAt": null
                },
                "treasuryService": {
                    "id": "5",
                    "countryCode": "CM",
                    "serviceName": null,
                    "treasuryId": "4",
                    "type": "2",
                    "accountId": "18",
                    "isPaymentMethod": "1",
                    "isEnabled": "1",
                    "externalBalance": "0",
                    "avatarUrl": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-22 12:04:56",
                    "lastUpdatedAt": null
                },
                "treasury": {
                    "id": "4",
                    "userId": "6",
                    "countryCode": "CM",
                    "type": "1",
                    "shortName": "Afriland First Bank (Cameroon)",
                    "name": "Afriland First Bank (Cameroon)",
                    "description": "CM | Afriland First Bank (Cameroon)",
                    "isOffline": "0",
                    "status": "1",
                    "isPaymentMethod": "1",
                    "bankCode": "10005",
                    "isOutboundPaymentProvider": "1",
                    "outboundRatePercentage": "2.4000",
                    "avatarUrl": "/static/img/partners/afriland.png",
                    "cardAvatarUrl": "/static/img/partners/cards/",
                    "isSelectableByUsers": "1",
                    "isVerificationSource": "0",
                    "isExpressPaymentSupported": "1",
                    "paymentWebRedirectUrl": null,
                    "inboundMinAmount": "1",
                    "inboundMaxAmount": "1000000",
                    "inboundPercentageCharge": "2",
                    "inboundFixedCharge": "10",
                    "outboundMinAmount": "1",
                    "outboundMaxAmount": "100000",
                    "outboundFixedCharge": "10",
                    "outboundPercentageCharge": "2",
                    "outboundProcessingTimeInHours": null,
                    "outboundMaxJobPerBatch": null,
                    "ussdMobileMoneyDialCode": null,
                    "enableVisaPrepaidSettlement": "0",
                    "enableMastercardPrepaidSettlement": "0",
                    "isSettlementEntity": "0",
                    "settlementPriority": "10",
                    "maxPrepaidCardJobsPerBatch": "100",
                    "maxIntraBankJobsPerBatch": "100",
                    "maxInterBankJobsPerBatch": "100",
                    "settlementAccountId": null,
                    "swiftCode": null,
                    "createdByStaffId": null,
                    "createdAt": "2022-03-22 12:04:56",
                    "updatedAt": null
                },
                "batch": {
                    "id": "2",
                    "_id": "OBYHRQY2N4K329R4",
                    "settlementTreasuryId": "3",
                    "type": "3",
                    "amount": "10000",
                    "currencyCode": "XAF",
                    "paymentId": "47",
                    "status": "50",
                    "bankSettlementId": "1",
                    "isPriority": "0",
                    "retryAttempts": null,
                    "requestFile": "@datastore/batch_request/2022-03/20220322_UBA_Cameroon_ACH_batch_2_batch.txt",
                    "responseFile": "@datastore/batch_response/2022-03/batch_2.txt",
                    "errorCode": null,
                    "createdAt": "2022-03-22 12:08:54",
                    "lastUpdatedAt": "2022-03-22 13:02:34",
                    "submittedAt": "2022-03-22 12:14:44",
                    "partnerTransactionAmount": null,
                    "partnerFee": null,
                    "partnerTransactionId": null,
                    "partnerCompletedAt": null,
                    "partnerRequestReferenceId": "4553de26-48b4-42bf-b4bc-d880e7770aef",
                    "partnerFileSequenceNumber": null,
                    "partnerNostroAccountNumber": null,
                    "partnerResponseData": null,
                    "completedAt": "2022-03-22 13:02:34"
                },
                "amount": 1000,
                "statusTest": "completed",
                "_paymentId": "PP2203220YWE3R64AYF2"
            },
             
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 20
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-22T17:39:16+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.051s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View O Job

Displays details of a job

Request Endpoint

GET /backoffice/outbound/view?id=TXN_ID

Request Param

Request Filter params

Parameter Type required Description
id String true Transaction ID

Response

{
    "data": {
        "accountId": 18,
        "batchId": 2,
        "clearingPaymentId": "37",
        "createdAt": "2022-03-22 12:05:38",
        "errorCode": null,
        "failMessage": "PP2203227G9YWYPPXX3W",
        "lastUpdatedAt": "2022-03-22 13:02:34",
        "note": "Hello wizz|AFB",
        "partnerTransactionId": "PP2203227G9YWYPPXX3W",
        "partnerTransactionTime": null,
        "payment": {
            "id": "25",
            "_id": "PP2203227G9YWYPPXX3W",
            "parentId": "21",
            "status": 30,
            "type": 1,
            "serviceType": "payment",
            "serviceId": 20,
            "amount": 1000,
            "currencyCode": "XAF",
            "collectedCouponId": null,
            "couponAmount": 0,
            "tipAmount": 0,
            "inboundExternalPaymentId": null,
            "recurringPaymentFlag": null,
            "description": "Payment to Afriland First Bank (Cameroon)",
            "payerOrgUserId": 23,
            "payerUserId": 23,
            "payerName": "tz23",
            "payerAccountId": 40,
            "presPayerAmount": 1000,
            "payerGiftCardAmount": 0,
            "payerGiftCardAccountId": null,
            "payerMembershipId": null,
            "payerMembershipAmount": 0,
            "payerBonusRewardId": null,
            "payerBonusRewardAmount": 0,
            "payerFee": 0,
            "beneUserId": 6,
            "beneAccountId": 18,
            "beneName": "Afriland First Bank (Cameroon)|3330000000000333",
            "presBeneAmount": 1000,
            "beneFee": 0,
            "beneGiftCardDebitAmount": 0,
            "beneMembershipDebitAmount": 0,
            "isInitiatedByPayer": 1,
            "createdAt": "2022-03-22 12:05:38.063811",
            "creationStartTime": "2022-03-22 12:05:38.058287",
            "executionStartTime": "2022-03-22 12:05:38.066853",
            "processingAt": "2022-03-22 13:05:38.069270",
            "completedAt": "2022-03-22 13:02:34.122648",
            "payerNetAmount": 1000,
            "beneNetAmount": 1000,
            "statusText": "successful",
            "typeText": "transfer",
            "journals": [
                {
                    "id": "55",
                    "paymentId": "25",
                    "isCredit": 1,
                    "accountId": 18,
                    "amount": 1000,
                    "currencyCode": "XAF",
                    "openingBalance": 0,
                    "closingBalance": 0,
                    "createdAt": "2022-03-22 13:05:38"
                },
                {
                    "id": "54",
                    "paymentId": "25",
                    "isCredit": 0,
                    "accountId": 40,
                    "amount": -1000,
                    "currencyCode": "XAF",
                    "openingBalance": 1000,
                    "closingBalance": 0,
                    "createdAt": "2022-03-22 13:05:38"
                }
            ],
            "outboundJob": {
                "paymentId": "25",
                "userId": 23,
                "accountId": 18,
                "batchId": 2,
                "clearingPaymentId": "37",
                "status": 5,
                "partnerTransactionId": "PP2203227G9YWYPPXX3W",
                "partnerTransactionTime": null,
                "retryAttempts": null,
                "note": "Hello wizz|AFB",
                "errorCode": null,
                "failMessage": "PP2203227G9YWYPPXX3W",
                "createdAt": "2022-03-22 12:05:38",
                "lastUpdatedAt": "2022-03-22 13:02:34"
            },
            "metaData": {
                "paymentId": "25",
                "disablePayerAccountSelection": null,
                "mchTransactionRef": null,
                "itemDetails": "",
                "inboundAccountNumber": "",
                "inboundAccountName": "",
                "inboundAccountEmail": null,
                "payerNote": "",
                "beneNote": "",
                "outboundTreasuryServiceId": 5,
                "outboundOrgName": "Afriland First Bank (Cameroon)",
                "outboundAccountNumber": "3330000000000333",
                "outboundAccountName": "Wizzy Brown",
                "outboundBankCode": "10005",
                "outboundBranchCode": "0005",
                "outboundRibCode": "56",
                "outboundPrepaidFirst6Digits": null,
                "outboundPrepaidLast4Digits": null,
                "outboundPrepaidCustomerId": null,
                "payerLocationCoordinates": null,
                "subscriptionId": null,
                "subscriptionPlanId": null,
                "appId": null,
                "notifyUrl": "",
                "returnUrl": "",
                "createdAt": "2022-03-22 12:05:38",
                "lastUpdatedAt": null
            }
        },
        "paymentId": "25",
        "retryAttempts": null,
        "status": 5,
        "statusText": "completed",
        "userId": 23
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-22T17:44:52+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.053s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Payout (Mass Payments ) - BO

Re-Launch Payouts

Re-Launch a stalled payout

Endpoint

POST /backoffice/payout/relaunch

Request Params

{
    "id": 1 
}

Response

See VIEW section

Re-launch ALL Stalled Payout jobs

Relaunches all stalled payout jobs. It's safe feature and only stalled payouts will be run. This should be run in case of failure that causes payout failure

Endpoint

POST /backoffice/payout/relaunch-stalled-requests

Request Params

{
    "id": 1 
}

List Payouts

Lists payouts

Endpoint

GET /backoffice/payout/list

Request Params

Filters

        return [
            [['id', 'orgUserId', 'createdByUserId', 'totalAmount', 'type', 'paymentId', 'refundId', 'feeIsPaidByReceiver', 'totalFee', 'priorityFee', 'isPriority', 'status', 'totalNumberOfReceivers', 'isCreatedViaFileUpload'], 'integer'],
            [['_id', 'title', 'currencyCode', 'mchTransactionRef', 'description', 'spreadSheetReportFilePath', 'createdAt', 'executionStartTime', 'completedAt'], 'safe'],
        ];

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "_id": "PO1YYWB0SLKM64DNJ20O",
                "title": "Payout cool title",
                "orgUserId": "23",
                "createdByUserId": "23",
                "totalAmount": 1000,
                "type": "2",
                "currencyCode": "XAF",
                "paymentId": "30",
                "refundId": null,
                "mchTransactionRef": "ref12345566666",
                "description": null,
                "feeIsPaidByReceiver": "1",
                "totalFee": 0,
                "priorityFee": "200",
                "isPriority": "1",
                "status": "4",
                "totalNumberOfReceivers": "1",
                "isCreatedViaFileUpload": "0",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-03-25 15:48:23",
                "executionStartTime": "2022-03-25 15:48:23",
                "completedAt": "2022-03-25 15:48:28",
                "statusText": "completed",
                "typeText": "mobile money transfer"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T17:05:25+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View Payout

Displays payout details

Endpoint

GET /backoffice/payout/view?id=PAYOUT_ID

Request params

Parameter Type required Description
id String(100) true payout ID

Response

{
    "data": {
        "_id": "PO1YYWB0SLKM64DNJ20O",
        "completedAt": "2022-03-25 15:48:28",
        "createdAt": "2022-03-25 15:48:23",
        "createdByUserId": 23,
        "currencyCode": "XAF",
        "description": null,
        "executionStartTime": "2022-03-25 15:48:23",
        "feeIsPaidByReceiver": 1,
        "id": 1,
        "isCreatedViaFileUpload": 0,
        "isPriority": 1,
        "mchTransactionRef": "ref12345566666",
        "orgUserId": 23,
        "paymentId": "30",
        "payoutMetaData": {
            "payoutId": 1,
            "rawReceiverData": "[{\"mobileNumber\":\"+237674728670\",\"accountName\":\"Dan Momo\",\"amount\":\"1000\",\"beneficiaryNote\":\"Hello salary\",\"payerNote\":\"Transfer to user\",\"payerReferenceId\":\"111111\"}]",
            "parsedReceiverData": "[{\"id\":null,\"payoutId\":null,\"beneAccountId\":null,\"treasuryServiceId\":1,\"paymentId\":null,\"amount\":\"1000\",\"beneAmount\":990,\"feeAmount\":\"10\",\"currencyCode\":\"XAF\",\"beneficiaryAccountNumber\":\"+237674728670\",\"beneficiaryAccountName\":\"Dan Momo\",\"beneficiaryBankCode\":null,\"beneficiaryBankName\":\"\",\"beneficiaryNote\":\"Hello salary\",\"beneficiaryBranchCode\":null,\"beneficiaryRibCode\":null,\"beneficiaryPrepaidFirst6Digits\":null,\"beneficiaryPrepaidLast4Digits\":null,\"beneficiaryPrepaidCustomerId\":null,\"partnerTransactionRefId\":null,\"payerNote\":\"Transfer to user\",\"payerReferenceId\":\"111111\",\"status\":null,\"errorCode\":null,\"message\":null,\"debugMessage\":null,\"createdAt\":null,\"lastUpdatedAt\":null}]"
        },
        "priorityFee": 200,
        "receivers": [
            {
                "mobileNumber": "+237674728670",
                "accountName": "Dan Momo",
                "amount": "1000",
                "beneficiaryNote": "Hello salary",
                "payerNote": "Transfer to user",
                "payerReferenceId": "111111"
            }
        ],
        "refund": null,
        "refundId": null,
        "spreadSheetReportFilePath": null,
        "status": 4,
        "statusText": "completed",
        "title": "Payout cool title",
        "totalAmount": 1000,
        "totalFailedTransactionAmount": 0,
        "totalFee": 0,
        "totalNumberFailedTransactions": 0,
        "totalNumberOfReceivers": 1,
        "type": 2,
        "typeText": "mobile money transfer"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T17:07:52+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.059s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View Payout Job

Payout job is a transfer that belongs to a payout

Endpoint

GET /backoffice/payout/view?id=JOB_ID

Request params

Parameter Type required Description
id String(100) true ID

Response

{
    "data": {
        "amount": 1000,
        "beneAccountId": 12,
        "beneAmount": 990,
        "beneficiaryAccountName": "Dan Momo",
        "beneficiaryAccountNumber": "+237674728670",
        "beneficiaryBankCode": null,
        "beneficiaryBankName": "",
        "beneficiaryBranchCode": null,
        "beneficiaryNote": "Hello salary",
        "beneficiaryPrepaidCustomerId": null,
        "beneficiaryPrepaidFirst6Digits": null,
        "beneficiaryPrepaidLast4Digits": null,
        "beneficiaryRibCode": null,
        "createdAt": "2022-03-25 15:48:23",
        "currencyCode": "XAF",
        "debugMessage": null,
        "errorCode": null,
        "feeAmount": 10,
        "id": "1",
        "lastUpdatedAt": "2022-03-25 15:48:28",
        "message": null,
        "partnerTransactionRefId": null,
        "payerNote": "Transfer to user",
        "payerReferenceId": "111111",
        "paymentId": "31",
        "payout": {
            "id": 1,
            "_id": "PO1YYWB0SLKM64DNJ20O",
            "title": "Payout cool title",
            "orgUserId": 23,
            "createdByUserId": 23,
            "totalAmount": 1000,
            "type": 2,
            "currencyCode": "XAF",
            "paymentId": "30",
            "refundId": null,
            "mchTransactionRef": "ref12345566666",
            "description": null,
            "feeIsPaidByReceiver": 1,
            "totalFee": 0,
            "priorityFee": 200,
            "isPriority": 1,
            "status": 4,
            "totalNumberOfReceivers": 1,
            "isCreatedViaFileUpload": 0,
            "spreadSheetReportFilePath": null,
            "createdAt": "2022-03-25 15:48:23",
            "executionStartTime": "2022-03-25 15:48:23",
            "completedAt": "2022-03-25 15:48:28",
            "statusText": "completed",
            "typeText": "mobile money transfer"
        },
        "payoutId": 1,
        "status": 4,
        "statusText": "completed",
        "treasuryServiceId": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T17:09:33+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.046s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View Payout Job ID

Displays details of a payout job

Endpoint

GET /backoffice/payout/view-job?id=PAYOUT_ID

Request Params

Parameter Type required Description
ID int true ID of job

Response

{
    "data": {
        "amount": 1000,
        "beneAccountId": 12,
        "beneAmount": 990,
        "beneficiaryAccountName": "Dan Momo",
        "beneficiaryAccountNumber": "+237674728670",
        "beneficiaryBankCode": null,
        "beneficiaryBankName": "",
        "beneficiaryBranchCode": null,
        "beneficiaryNote": "Hello salary",
        "beneficiaryPrepaidCustomerId": null,
        "beneficiaryPrepaidFirst6Digits": null,
        "beneficiaryPrepaidLast4Digits": null,
        "beneficiaryRibCode": null,
        "createdAt": "2022-03-25 15:48:23",
        "currencyCode": "XAF",
        "debugMessage": null,
        "errorCode": null,
        "feeAmount": 10,
        "id": "1",
        "lastUpdatedAt": "2022-03-25 15:48:28",
        "message": null,
        "partnerTransactionRefId": null,
        "payerNote": "Transfer to user",
        "payerReferenceId": "111111",
        "paymentId": "31",
        "payout": {
            "id": 1,
            "_id": "PO1YYWB0SLKM64DNJ20O",
            "title": "Payout cool title",
            "orgUserId": 23,
            "createdByUserId": 23,
            "totalAmount": 1000,
            "type": 2,
            "currencyCode": "XAF",
            "paymentId": "30",
            "refundId": null,
            "mchTransactionRef": "ref12345566666",
            "description": null,
            "feeIsPaidByReceiver": 1,
            "totalFee": 0,
            "priorityFee": 200,
            "isPriority": 1,
            "status": 4,
            "totalNumberOfReceivers": 1,
            "isCreatedViaFileUpload": 0,
            "spreadSheetReportFilePath": null,
            "createdAt": "2022-03-25 15:48:23",
            "executionStartTime": "2022-03-25 15:48:23",
            "completedAt": "2022-03-25 15:48:28",
            "statusText": "completed",
            "typeText": "mobile money transfer"
        },
        "payoutId": 1,
        "status": 4,
        "statusText": "completed",
        "treasuryServiceId": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T17:09:33+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.046s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List Payout Jobs

List jobs

Endpoint

GET /backoffice/payout/list-payout-jobs

Request

        return [
            [['id', 'payoutId', 'beneAccountId', 'treasuryServiceId', 'paymentId', 'amount', 'beneAmount', 'feeAmount', 'status', 'errorCode'], 'safe'],
            [['currencyCode', 'beneficiaryAccountNumber', 'beneficiaryAccountName', 'beneficiaryBankCode', 'beneficiaryBankName', 'beneficiaryNote', 'beneficiaryBranchCode', 'beneficiaryRibCode', 'beneficiaryPrepaidFirst6Digits', 'beneficiaryPrepaidLast4Digits', 'beneficiaryPrepaidCustomerId', 'partnerTransactionRefId', 'payerNote', 'payerReferenceId', 'message', 'debugMessage', 'createdAt', 'lastUpdatedAt'], 'safe'],
        ];

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "payoutId": "1",
                "beneAccountId": "12",
                "treasuryServiceId": "1",
                "paymentId": "31",
                "amount": 1000,
                "beneAmount": 990,
                "feeAmount": 10,
                "currencyCode": "XAF",
                "beneficiaryAccountNumber": "+237674728670",
                "beneficiaryAccountName": "Dan Momo",
                "beneficiaryBankCode": null,
                "beneficiaryBankName": "",
                "beneficiaryNote": "Hello salary",
                "beneficiaryBranchCode": null,
                "beneficiaryRibCode": null,
                "beneficiaryPrepaidFirst6Digits": null,
                "beneficiaryPrepaidLast4Digits": null,
                "beneficiaryPrepaidCustomerId": null,
                "partnerTransactionRefId": null,
                "payerNote": "Transfer to user",
                "payerReferenceId": "111111",
                "status": "4",
                "errorCode": null,
                "message": null,
                "debugMessage": null,
                "createdAt": "2022-03-25 15:48:23",
                "lastUpdatedAt": "2022-03-25 15:48:28",
                "payout": {
                    "id": "1",
                    "_id": "PO1YYWB0SLKM64DNJ20O",
                    "title": "Payout cool title",
                    "orgUserId": "23",
                    "createdByUserId": "23",
                    "totalAmount": 1000,
                    "type": "2",
                    "currencyCode": "XAF",
                    "paymentId": "30",
                    "refundId": null,
                    "mchTransactionRef": "ref12345566666",
                    "description": null,
                    "feeIsPaidByReceiver": "1",
                    "totalFee": 0,
                    "priorityFee": "200",
                    "isPriority": "1",
                    "status": "4",
                    "totalNumberOfReceivers": "1",
                    "isCreatedViaFileUpload": "0",
                    "spreadSheetReportFilePath": null,
                    "createdAt": "2022-03-25 15:48:23",
                    "executionStartTime": "2022-03-25 15:48:23",
                    "completedAt": "2022-03-25 15:48:28",
                    "statusText": "completed",
                    "typeText": "mobile money transfer"
                },
                "statusText": "completed"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T17:15:22+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Refund (BO)

Approve a Refund Request

Approve a refund request

Endpoint

GET /backoffice/refund/approve-refund

Request Params

Parameter Type required Description
id String(100) true id / _id of refund request
{
    "id": 1 
}

Response

See VIEW section

Cancel A Refund

Cancels/rejects a refund request.

Endpoint

GET /backoffice/refund/reject-refund

Request Params

Parameter Type required Description
id String(100) true id / _id of refund request
{
    "id": 1 
}

Response

See VIEW section

List Refunds

Endpoint

GET /backoffice/refund/list

Request Params

  [['merchantId',  'id', 'refundedPaymentId', 'type', 'amount', 'status', 'payerUserId', 'payerOrgUserId', 'merchantUserId', 'lastUpdatedByUserId', 'paymentId', 'refundedActivityPoints', 'reasonCode', 'isFinalRefund', 'disputeId', 'isInitiatedBy', 'isCancelledBy', 'isApprovedBy'], 'integer'],
    [['_id', 'currencyCode', 'dueDate', 'merchantRefundNumber', 'note', 'createdAt', 'cancelledAt', 'approvedAt', 'lastUpdatedAt'], 'safe'],

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "_id": "REFSBD5OV3RLLAXGW89Q",
                "refundedPaymentId": "5",
                "type": "2",
                "currencyCode": "XAF",
                "amount": 1000,
                "dueDate": "2022-03-28 12:39:24",
                "status": "3",
                "payerUserId": "25",
                "payerOrgUserId": "25",
                "merchantUserId": "23",
                "lastUpdatedByUserId": null,
                "paymentId": null,
                "refundedActivityPoints": "0",
                "merchantRefundNumber": null,
                "note": null,
                "reasonCode": "5",
                "isFinalRefund": "1",
                "disputeId": null,
                "isInitiatedBy": "2",
                "isCancelledBy": "0",
                "isApprovedBy": "1",
                "createdAt": "2022-03-25 12:39:24",
                "cancelledAt": null,
                "approvedAt": "2022-03-25 12:39:24",
                "lastUpdatedAt": "2022-03-25 13:39:24",
                "lastUpdatedByStaffId": null,
                "merchantUser": {
                    "id": "23",
                    "_id": "tz23",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "XAF",
                    "residenceCountryCode": "CM",
                    "type": "3",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "tz23",
                    "verifiedName": null,
                    "paymentPin": "$2y$05$UnwJHcr3sL9n34rWX/i2oO4OeLhJ4GeSUdZJNP6H72ouUAO4ZkpzO",
                    "phoneNumber": null,
                    "language": "en_GB",
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "1",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 12:20:51",
                    "lastUpdatedAt": "2022-03-25 13:20:52"
                },
                "merchant": {
                    "id": "1",
                    "userId": "23",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "42",
                    "membershipDebitAccountId": "43",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "payerUser": {
                    "id": "25",
                    "_id": "tz25",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "XAF",
                    "residenceCountryCode": "CM",
                    "type": "3",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "tz25",
                    "verifiedName": null,
                    "paymentPin": "$2y$05$znvVrEeDqhVlVdSPBidNrO3Hrc827GSRNY0.x0JWV9MBfnJO2/PUC",
                    "phoneNumber": null,
                    "language": "en_GB",
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "1",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": "2022-03-25 13:20:52"
                },
                "refundedPayment": {
                    "id": "5",
                    "_id": "MP2203253SXXKQ1XDRZW",
                    "parentId": null,
                    "status": "-11",
                    "type": "3",
                    "serviceType": "24",
                    "serviceId": "4",
                    "amount": "1000",
                    "currencyCode": "XAF",
                    "collectedCouponId": null,
                    "couponAmount": null,
                    "tipAmount": "0",
                    "inboundExternalPaymentId": null,
                    "recurringPaymentFlag": null,
                    "description": "A transaction for the world",
                    "payerOrgUserId": "25",
                    "payerUserId": "25",
                    "payerName": "tz25",
                    "payerAccountId": "55",
                    "presPayerAmount": "1000",
                    "payerGiftCardAmount": "0",
                    "payerGiftCardAccountId": null,
                    "payerMembershipId": null,
                    "payerMembershipAmount": "0",
                    "payerBonusRewardId": null,
                    "payerBonusRewardAmount": "0",
                    "payerFee": "0",
                    "beneUserId": "23",
                    "beneAccountId": "41",
                    "beneName": "tz23",
                    "presBeneAmount": "1000",
                    "beneFee": "0",
                    "beneGiftCardDebitAmount": "0",
                    "beneMembershipDebitAmount": "0",
                    "isInitiatedByPayer": "1",
                    "createdAt": "2022-03-25 12:38:51.624635",
                    "creationStartTime": "2022-03-25 12:38:51.621631",
                    "executionStartTime": "2022-03-25 12:38:51.627295",
                    "processingAt": null,
                    "completedAt": "2022-03-25 13:38:51.633991"
                },
                "statusText": "completed",
                "typeText": "reversal",
                "reasonText": "other reasons",
                "initiator": "merchant",
                "approver": "merchant",
                "cancelledBy": "",
                "merchantId": "1"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T18:00:47+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.054s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Reason codes

Displays lists of reason codes for refunds. Useful when requesting, approving and rejecting/cancelling requests for refunds

Endpoint

GET /backoffice/refund/reason-codes

Request params

Response

{
    "data": {
        "approval": {
            "1": "Merchant response SLA breached",
            "2": "mutual agreement between buyer and merchant"
        },
        "reject": {
            "1": "insufficient evidence",
            "2": "mutual agreement"
        },
        "request": {
            "1": "mutual agreement between buyer and seller",
            "2": "the order did not match the transaction agreement",
            "3": "suspicious transaction",
            "4": "disputed transaction",
            "5": "other reasons",
            "6": "Deficient product/service",
            "7": "Duplicate transaction"
        }
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T18:02:24+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.04s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

View Refund

Displays refunds details

Endpoint

GET /backoffice/refund/view?id=REFUND_ID

Parameter Type required Description
id String(100) true id or _id accepted (system is intelligent enough to know which is which ;)

Response

{
    "data": {
        "_id": "REFSBD5OV3RLLAXGW89Q",
        "amount": 1000,
        "approvedAt": "2022-03-25 12:39:24",
        "approver": "merchant",
        "cancelledAt": null,
        "cancelledBy": "",
        "createdAt": "2022-03-25 12:39:24",
        "currencyCode": "XAF",
        "disputeId": null,
        "dueDate": "2022-03-28 12:39:24",
        "id": 1,
        "initiator": "merchant",
        "isApprovedBy": 1,
        "isCancelledBy": 0,
        "isFinalRefund": 1,
        "isInitiatedBy": 2,
        "lastUpdatedAt": "2022-03-25 13:39:24",
        "lastUpdatedByStaffId": null,
        "lastUpdatedByUserId": null,
        "merchantId": 1,
        "merchantRefundNumber": null,
        "merchantUser": {
            "id": 1,
            "userId": 23,
            "commission": null,
            "internalSettlementCommission": null,
            "commissionCap": null,
            "minSettlementAmount": null,
            "settlementWindowId": null,
            "settlementAccountId": null,
            "enableManualSettlement": 0,
            "maxActiveCoupons": null,
            "maxCouponsPerPromotion": null,
            "maxLuckyMoneyQuantity": null,
            "maxLuckyMoneyAmount": null,
            "enableGuestPayments": 0,
            "enableInPersonPayment": 0,
            "maxSubAccounts": null,
            "enableGiftCard": 0,
            "enablePreFinancedGiftCard": null,
            "enableVirtualAccounts": 0,
            "maxVirtualAccounts": null,
            "gracePeriodEndsAt": "2022-04-24 12:20:52",
            "enableMembershipService": 0,
            "enableCrossBorderCollection": 0,
            "enableCustomCouponCodes": 0,
            "payoutAllowedIpAddressList": null,
            "freezeSettlement": null,
            "giftCardFundingAccountId": 42,
            "membershipDebitAccountId": 43,
            "createdAt": "2022-03-25 12:20:52",
            "lastUpdatedAt": null,
            "lastUpdatedByStaffId": null
        },
        "merchantUserId": 23,
        "note": null,
        "payerOrgUserId": 25,
        "payerUser": {
            "id": 25,
            "_id": "tz25",
            "ufId": null,
            "orgUserId": null,
            "scopeId": null,
            "roleId": 1000,
            "primaryCurrencyCode": "XAF",
            "residenceCountryCode": "CM",
            "type": 3,
            "firstName": null,
            "lastName": null,
            "displayName": "tz25",
            "verifiedName": null,
            "paymentPin": "$2y$05$znvVrEeDqhVlVdSPBidNrO3Hrc827GSRNY0.x0JWV9MBfnJO2/PUC",
            "phoneNumber": null,
            "language": "en_GB",
            "timeZone": "Africa/Douala",
            "isRNVerified": 0,
            "loginEnabled": 1,
            "avatarUrl": null,
            "defaultSendingAccountId": null,
            "canReceivePayment": 1,
            "canSendPayment": 1,
            "createdAt": "2022-03-25 12:20:52",
            "lastUpdatedAt": "2022-03-25 13:20:52"
        },
        "payerUserId": 25,
        "paymentId": null,
        "reasonCode": 5,
        "reasonText": "other reasons",
        "refundedActivityPoints": 0,
        "refundedPayment": {
            "id": "5",
            "_id": "MP2203253SXXKQ1XDRZW",
            "parentId": null,
            "status": -11,
            "type": 3,
            "serviceType": 24,
            "serviceId": 4,
            "amount": "1000",
            "currencyCode": "XAF",
            "collectedCouponId": null,
            "couponAmount": null,
            "tipAmount": 0,
            "inboundExternalPaymentId": null,
            "recurringPaymentFlag": null,
            "description": "A transaction for the world",
            "payerOrgUserId": 25,
            "payerUserId": 25,
            "payerName": "tz25",
            "payerAccountId": 55,
            "presPayerAmount": "1000",
            "payerGiftCardAmount": 0,
            "payerGiftCardAccountId": null,
            "payerMembershipId": null,
            "payerMembershipAmount": 0,
            "payerBonusRewardId": null,
            "payerBonusRewardAmount": 0,
            "payerFee": 0,
            "beneUserId": 23,
            "beneAccountId": 41,
            "beneName": "tz23",
            "presBeneAmount": "1000",
            "beneFee": 0,
            "beneGiftCardDebitAmount": 0,
            "beneMembershipDebitAmount": 0,
            "isInitiatedByPayer": 1,
            "createdAt": "2022-03-25 12:38:51.624635",
            "creationStartTime": "2022-03-25 12:38:51.621631",
            "executionStartTime": "2022-03-25 12:38:51.627295",
            "processingAt": null,
            "completedAt": "2022-03-25 13:38:51.633991"
        },
        "refundedPaymentId": "5",
        "status": 3,
        "statusText": "completed",
        "type": 2,
        "typeText": "reversal"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T18:07:04+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.188s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List Refunds

Endpoints

GET /backoffice/refund/list

Request Params

 return [
            [['merchantId',  'id', 'refundedPaymentId', 'type', 'amount', 'status', 'payerUserId', 'payerOrgUserId', 'merchantUserId', 'lastUpdatedByUserId', 'paymentId', 'refundedActivityPoints', 'reasonCode', 'isFinalRefund', 'disputeId', 'isInitiatedBy', 'isCancelledBy', 'isApprovedBy'], 'integer'],
            [['_id', 'currencyCode', 'dueDate', 'merchantRefundNumber', 'note', 'createdAt', 'cancelledAt', 'approvedAt', 'lastUpdatedAt'], 'safe'],
        ];

List Refund Activity Logs

Displays refund activities

Request Endpoint

GET /backoffice/refund/activity-logs?id=REFUND_ID

Request Params

Response

{
    "data": [
        {
            "id": "1",
            "refundId": "1",
            "actionId": null,
            "userId": null,
            "comment": "",
            "status": "1",
            "staffId": null,
            "oldStatus": "1",
            "createdAt": "2022-03-25 12:39:24",
            "statusText": "pending approval",
            "oldStatusText": "pending approval"
        },
        {
            "id": "2",
            "refundId": "1",
            "actionId": null,
            "userId": null,
            "comment": "",
            "status": "3",
            "staffId": null,
            "oldStatus": "1",
            "createdAt": "2022-03-25 12:39:24",
            "statusText": "completed",
            "oldStatusText": "pending approval"
        }
    ],
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T18:09:03+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.045s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List Refund Transactions

Displays transactions run as part of refund process

Endpoint

GET /backoffice/refund/transactions?id=REFUND_ID

Params

Parameter Type required Description
id String(100) true id or _id of refund

Response

{
    "data": [
        {
            "id": "1",
            "amount": 1000,
            "accountId": "55",
            "refundId": "1",
            "paymentId": "6",
            "createdAt": "2022-03-25 12:39:24",
            "lastUpdatedAt": "2022-03-25 12:39:24",
            "payment": {
                "id": "6",
                "_id": "REF220325ICZW4WYB2SK",
                "parentId": "5",
                "status": "30",
                "type": "5",
                "serviceType": "10",
                "serviceId": "1",
                "amount": "1000",
                "currencyCode": "XAF",
                "collectedCouponId": null,
                "couponAmount": null,
                "tipAmount": "0",
                "inboundExternalPaymentId": null,
                "recurringPaymentFlag": null,
                "description": "Transfer to tz25",
                "payerOrgUserId": "23",
                "payerUserId": "23",
                "payerName": "tz23",
                "payerAccountId": "41",
                "presPayerAmount": "1000",
                "payerGiftCardAmount": "0",
                "payerGiftCardAccountId": null,
                "payerMembershipId": null,
                "payerMembershipAmount": "0",
                "payerBonusRewardId": null,
                "payerBonusRewardAmount": "0",
                "payerFee": "0",
                "beneUserId": "25",
                "beneAccountId": "55",
                "beneName": "tz25",
                "presBeneAmount": "1000",
                "beneFee": "0",
                "beneGiftCardDebitAmount": "0",
                "beneMembershipDebitAmount": "0",
                "isInitiatedByPayer": "1",
                "createdAt": "2022-03-25 12:39:24.714306",
                "creationStartTime": "2022-03-25 12:39:24.706462",
                "executionStartTime": "2022-03-25 12:39:24.716061",
                "processingAt": null,
                "completedAt": "2022-03-25 13:39:24.723058",
                "statusText": "successful"
            },
            "refund": {
                "id": "1",
                "_id": "REFSBD5OV3RLLAXGW89Q",
                "refundedPaymentId": "5",
                "type": "2",
                "currencyCode": "XAF",
                "amount": "1000",
                "dueDate": "2022-03-28 12:39:24",
                "status": "3",
                "payerUserId": "25",
                "payerOrgUserId": "25",
                "merchantUserId": "23",
                "lastUpdatedByUserId": null,
                "paymentId": null,
                "refundedActivityPoints": "0",
                "merchantRefundNumber": null,
                "note": null,
                "reasonCode": "5",
                "isFinalRefund": "1",
                "disputeId": null,
                "isInitiatedBy": "2",
                "isCancelledBy": "0",
                "isApprovedBy": "1",
                "createdAt": "2022-03-25 12:39:24",
                "cancelledAt": null,
                "approvedAt": "2022-03-25 12:39:24",
                "lastUpdatedAt": "2022-03-25 13:39:24",
                "lastUpdatedByStaffId": null
            },
            "currencyCode": "XAF"
        }
    ],
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T18:10:53+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.047s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

Bank Settlements

Settlement is the process of debiting our internal accounts and crediting the external accounts for funds destined to external treasuries (mobile money providers, banks, etc). Mobile wallets support automatic settlements, for in-flow and out-flows . For bank accounts (ATM) settlement will be carried out manually via file upload.

Status Codes

    const STATUS_PENDING = 1;
    const STATUS_FILE_GEN_IN_PROGRESS = 2;
    const STATUS_FILE_GEN_COMPLETED = 3;
    const STATUS_THIRD_PARTY_PROCESSING = 4;
    const STATUS_RECON_FILE_GEN_IN_PROGRESS = 5;
    const STATUS_RECON_REVIEW_PENDING = 6;
    const STATUS_SETTLEMENT_EXECUTION_IN_PROGRESS = 7;
    const STATUS_BATCH_FAILURE = -2; //At least one or more batches failed. Requires relaunch
    const STATUS_COMPLETED = 8;
    const STATUS_CANCELLED = -1 ;

List Settlement Types

Displays list of bank settlement types

Request URL

GET /backoffice/settlement/list-types

Response

{
    "data": {
        "2": "Intra-bank transfer",
        "3": "inter-bank/ACH transfer",
        "4": "pre-paid card transfer"
    },
    "success": true,
 
}

List of Settlement Banks

Displays available settlement treasuries (non-paginated). Sorted by Priority from high to low

Request Endpoint

GET /backoffice/settlement/list-settlement-banks

Response

{
    "data": [
        {
            "id": "3",
            "userId": "4",
            "countryCode": "CM",
            "type": "1",
            "shortName": "UBA Cameroon",
            "name": "UBA Cameroon",
            "description": "CM | UBA Cameroon",
            "isOffline": "0",
            "status": "1",
            "isPaymentMethod": "1",
            "bankCode": "10033",
            "isOutboundPaymentProvider": "1",
            "outboundRatePercentage": "2.6000",
            "avatarUrl": "/static/img/partners/uba.png",
            "cardAvatarUrl": "/static/img/partners/cards/",
            "isSelectableByUsers": "1",
            "isVerificationSource": "0",
            "isExpressPaymentSupported": "1",
            "paymentWebRedirectUrl": null,
            "inboundMinAmount": "1",
            "inboundMaxAmount": "1000000",
            "inboundPercentageCharge": "2",
            "inboundFixedCharge": "10",
            "outboundMinAmount": "1",
            "outboundMaxAmount": "100000",
            "outboundFixedCharge": "10",
            "outboundPercentageCharge": "2",
            "outboundProcessingTimeInHours": null,
            "outboundMaxJobPerBatch": null,
            "ussdMobileMoneyDialCode": null,
            "enableVisaPrepaidSettlement": "0",
            "enableMastercardPrepaidSettlement": "0",
            "isSettlementEntity": "1",
            "settlementPriority": "100",
            "maxPrepaidCardJobsPerBatch": "100",
            "maxIntraBankJobsPerBatch": "100",
            "maxInterBankJobsPerBatch": "100",
            "settlementAccountId": "13",
            "swiftCode": null,
            "createdByStaffId": null,
            "createdAt": "2022-04-11 18:50:33",
            "updatedAt": null
        }
    ],
    "success": true,
 
}

Create a Bank Settlement

Creates a settlement record using a bank as settlement entity.

Endpoint

POST /backoffice/settlement/create-bank-settlement

Request Body Parameters

Parameter Type required Description
name String true An arbitrary name for this settlement
type int true The type of settlement. CALL the GET /backoffice/settlement/list-types for list of types
settlementTreasuryId int true Treasury ID. CALL the GET /backoffice/settlement/list-settlement-banks for list of sett banks.
{
    "name" : "today sett" ,
    "settlementTreasuryId" : 3 ,
    "type" : 2 
}

Response

See VIEW settlement section

View a Bank Settlement

Displays record

Endpoint

GET /backoffice/settlement/view-settlement?id=SETT_ID

Request Body Parameters

Parameter Type required Description
id String true ID of settlement object

Response

See VIEW settlement section

{
    "data": {
        "approvedByStaffId": null,
        "createdAt": "2022-03-22 09:03:22",
        "createdByStaffId": "1",
        "id": 1,
        "name": "today sett",
        "status": "1",
        "statusText": "pending",
        "tag": "220322_0903_Settlement"
    },
    "success": true
}

List Bank Settlements

Displays list of settlement records

Endpoint

GET /backoffice/settlement/list-settlements

Request Body Parameters

Parameter Type required Description
id String true ID of settlement object
name String true name filter
status String true Filter by status id

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "tag": "220322_0903_Settlement",
                "name": "today sett",
                "status": "1",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 09:03:22",
                "statusText": "pending",
                "numberOfBatches": "0"
            },
            {
                "id": "2",
                "tag": "220322_0903_Settlement",
                "name": "today sett",
                "status": "1",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 09:06:20",
                "statusText": "pending",
                "numberOfBatches": "0"
            },
            {
                "id": "3",
                "tag": "220322_0903_Settlement",
                "name": "today sett",
                "status": "1",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 09:06:27",
                "statusText": "pending",
                "numberOfBatches": "0"
            },
            {
                "id": "4",
                "tag": "220322_0903_Settlement",
                "name": "today sett",
                "status": "1",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 09:06:45",
                "statusText": "pending",
                "numberOfBatches": "0"
            },
            {
                "id": "5",
                "tag": "220322_0903_Settlement",
                "name": "today sett",
                "status": "1",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 09:07:33",
                "statusText": "pending",
                "numberOfBatches": "0"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 5
    },
    "success": true
}

Generates a Batch files

Generate batch files that will be submitted to settlement bank. Pay attention to the status code.

Endpoint

POST /backoffice/settlement/gen-batch-files

Request Body Parameters

Parameter Type required Description
id String true ID of settlement object

Response

See VIEW settlement section

View a single batch in a settlement

Generate batch files that will be submitted to settlement bank. Pay attention to the status code.

Endpoint

POST /backoffice/settlement/view-batch?id=BATCH_ID

Request Body Parameters

Parameter Type required Description
id String true ID of settlement object

Response

{
    "data": {
        "_id": "OB2203177NAM1KCU",
        "amount": 100,
        "bankSettlementId": null,
        "completedAt": null,
        "createdAt": "2022-03-17 08:47:39",
        "currencyCode": "XAF",
        "errorCode": 23,
        "id": 1,
        "isPriority": 0,
        "lastUpdatedAt": "2022-03-17 09:48:14",
        "partnerCompletedAt": null,
        "partnerFee": null,
        "partnerFileSequenceNumber": null,
        "partnerNostroAccountNumber": null,
        "partnerRequestReferenceId": "088e1a43-251c-48e0-923e-979af82699d0",
        "partnerResponseData": null,
        "partnerTransactionAmount": null,
        "partnerTransactionId": null,
        "paymentId": null,
        "requestFile": null,
        "responseFile": null,
        "retryAttempts": 1,
        "settlementTreasuryId": 1,
        "status": -1,
        "statusText": "partner communication error",
        "submittedAt": null,
        "treasury": {
            "shortName": "MTN Momo",
            "name": "MTN Momo",
            "bankCode": null,
            "type": 2,
            "typeText": "Telecom operator",
            "avatarUrl": "/static/img/partners/mtn.png"
        },
        "type": 1,
        "typeText": "automated/real-time API transfer"
    },
    "success": true
}

List Batches (for single settlement or all)

Lists batches matching a settlement ID or all batches

Endpoint

POST /backoffice/settlement/list-batches

Request Body Parameters

Parameter Type required Description
id String true ID of settlement object
_id String true ID of settlement object
settlementTreasuryId String true settlement Treasury ID
bankSettlementId String true ID of settlement object
type String true type
status String true status

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            
            {
                "id": "6",
                "batchId": "1",
                "paymentId": "13",
                "errorMessage": null,
                "errorCode": "5",
                "isFailed": "0",
                "partnerRecordNumber": "PP220322FKOODF6A5BZT|",
                "partnerRecordType": "PP220322FKOODF6A5BZT|",
                "partnerBeneficiaryBankName": "PP220322FKOODF6A5BZT|",
                "partnerBeneficiaryAccountNumber": "PP220322FKOODF6A5BZT|",
                "partnerBeneficiaryName": "PP220322FKOODF6A5BZT|",
                "partnerCurrencyCode": "XAF",
                "partnerTransactionAmount": 1000,
                "partnerTransactionTime": null,
                "partnerNarration": "PP220322FKOODF6A5BZT|",
                "partnerReferenceId": "PP220322FKOODF6A5BZT|",
                "partnerTransactionStatus": "PP220322FKOODF6A5BZT|",
                "partnerStatusMessage": "PP220322FKOODF6A5BZT|",
                "partnerDebitAccountNumber": "PP220322FKOODF6A5BZT|",
                "partnerBeneficiaryNickname": "PP220322FKOODF6A5BZT|",
                "partnerValidationStatus": null,
                "partnerPrepaidFirst6Digits": null,
                "partnerPrepaidLast4Digits": null,
                "partnerPrepaidCustomerId": null,
                "createdAt": "2022-03-22 10:49:47",
                "lastUpdatedAt": null,
                "isSuccess": "0",
                "batch": {
                    "id": "1",
                    "_id": "OBGUU3IMQTE6BT9T",
                    "settlementTreasuryId": "3",
                    "type": "2",
                    "amount": 10000,
                    "currencyCode": "XAF",
                    "paymentId": null,
                    "status": "31",
                    "bankSettlementId": "1",
                    "isPriority": "0",
                    "retryAttempts": null,
                    "requestFile": "@datastore/batch_request/2022-03/20220322_UBA_Cameroon_INTRA_BANK_batch_1_batch.txt",
                    "responseFile": "@datastore/batch_response/2022-03/batch_1.txt",
                    "errorCode": null,
                    "createdAt": "2022-03-22 10:40:20",
                    "lastUpdatedAt": "2022-03-22 11:54:30",
                    "submittedAt": "2022-03-22 10:41:43",
                    "partnerTransactionAmount": null,
                    "partnerFee": null,
                    "partnerTransactionId": null,
                    "partnerCompletedAt": null,
                    "partnerRequestReferenceId": "9042fe7f-400e-4a40-945c-fcb2ce0b7b2e",
                    "partnerFileSequenceNumber": null,
                    "partnerNostroAccountNumber": null,
                    "partnerResponseData": null,
                    "completedAt": null
                }
            },
            {
                "id": "10",
                "batchId": "1",
                "paymentId": "23",
                "errorMessage": null,
                "errorCode": "5",
                "isFailed": "0",
                "partnerRecordNumber": "PP220322L8YRWNKM1O8Z|",
                "partnerRecordType": "PP220322L8YRWNKM1O8Z|",
                "partnerBeneficiaryBankName": "PP220322L8YRWNKM1O8Z|",
                "partnerBeneficiaryAccountNumber": "PP220322L8YRWNKM1O8Z|",
                "partnerBeneficiaryName": "PP220322L8YRWNKM1O8Z|",
                "partnerCurrencyCode": "XAF",
                "partnerTransactionAmount": 1000,
                "partnerTransactionTime": null,
                "partnerNarration": "PP220322L8YRWNKM1O8Z|",
                "partnerReferenceId": "PP220322L8YRWNKM1O8Z|",
                "partnerTransactionStatus": "PP220322L8YRWNKM1O8Z|",
                "partnerStatusMessage": "PP220322L8YRWNKM1O8Z|",
                "partnerDebitAccountNumber": "PP220322L8YRWNKM1O8Z|",
                "partnerBeneficiaryNickname": "PP220322L8YRWNKM1O8Z|",
                "partnerValidationStatus": null,
                "partnerPrepaidFirst6Digits": null,
                "partnerPrepaidLast4Digits": null,
                "partnerPrepaidCustomerId": null,
                "createdAt": "2022-03-22 10:49:47",
                "lastUpdatedAt": null,
                "isSuccess": "0",
                "batch": {
                    "id": "1",
                    "_id": "OBGUU3IMQTE6BT9T",
                    "settlementTreasuryId": "3",
                    "type": "2",
                    "amount": 10000,
                    "currencyCode": "XAF",
                    "paymentId": null,
                    "status": "31",
                    "bankSettlementId": "1",
                    "isPriority": "0",
                    "retryAttempts": null,
                    "requestFile": "@datastore/batch_request/2022-03/20220322_UBA_Cameroon_INTRA_BANK_batch_1_batch.txt",
                    "responseFile": "@datastore/batch_response/2022-03/batch_1.txt",
                    "errorCode": null,
                    "createdAt": "2022-03-22 10:40:20",
                    "lastUpdatedAt": "2022-03-22 11:54:30",
                    "submittedAt": "2022-03-22 10:41:43",
                    "partnerTransactionAmount": null,
                    "partnerFee": null,
                    "partnerTransactionId": null,
                    "partnerCompletedAt": null,
                    "partnerRequestReferenceId": "9042fe7f-400e-4a40-945c-fcb2ce0b7b2e",
                    "partnerFileSequenceNumber": null,
                    "partnerNostroAccountNumber": null,
                    "partnerResponseData": null,
                    "completedAt": null
                }
            },
            {
                "id": "1",
                "batchId": "1",
                "paymentId": "2",
                "errorMessage": null,
                "errorCode": "5",
                "isFailed": "0",
                "partnerRecordNumber": "PP2203226388QAGV8TS7|",
                "partnerRecordType": "PP2203226388QAGV8TS7|",
                "partnerBeneficiaryBankName": "PP2203226388QAGV8TS7|",
                "partnerBeneficiaryAccountNumber": "PP2203226388QAGV8TS7|",
                "partnerBeneficiaryName": "PP2203226388QAGV8TS7|",
                "partnerCurrencyCode": "XAF",
                "partnerTransactionAmount": 1000,
                "partnerTransactionTime": null,
                "partnerNarration": "PP2203226388QAGV8TS7|",
                "partnerReferenceId": "PP2203226388QAGV8TS7|",
                "partnerTransactionStatus": "PP2203226388QAGV8TS7|",
                "partnerStatusMessage": "PP2203226388QAGV8TS7|",
                "partnerDebitAccountNumber": "PP2203226388QAGV8TS7|",
                "partnerBeneficiaryNickname": "PP2203226388QAGV8TS7|",
                "partnerValidationStatus": null,
                "partnerPrepaidFirst6Digits": null,
                "partnerPrepaidLast4Digits": null,
                "partnerPrepaidCustomerId": null,
                "createdAt": "2022-03-22 10:49:47",
                "lastUpdatedAt": null,
                "isSuccess": "0",
                "batch": {
                    "id": "1",
                    "_id": "OBGUU3IMQTE6BT9T",
                    "settlementTreasuryId": "3",
                    "type": "2",
                    "amount": 10000,
                    "currencyCode": "XAF",
                    "paymentId": null,
                    "status": "31",
                    "bankSettlementId": "1",
                    "isPriority": "0",
                    "retryAttempts": null,
                    "requestFile": "@datastore/batch_request/2022-03/20220322_UBA_Cameroon_INTRA_BANK_batch_1_batch.txt",
                    "responseFile": "@datastore/batch_response/2022-03/batch_1.txt",
                    "errorCode": null,
                    "createdAt": "2022-03-22 10:40:20",
                    "lastUpdatedAt": "2022-03-22 11:54:30",
                    "submittedAt": "2022-03-22 10:41:43",
                    "partnerTransactionAmount": null,
                    "partnerFee": null,
                    "partnerTransactionId": null,
                    "partnerCompletedAt": null,
                    "partnerRequestReferenceId": "9042fe7f-400e-4a40-945c-fcb2ce0b7b2e",
                    "partnerFileSequenceNumber": null,
                    "partnerNostroAccountNumber": null,
                    "partnerResponseData": null,
                    "completedAt": null
                }
            },
           
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 10
    },
    "success": true
}

Confirm Reconciliation and Execute Settlement

After confirming the reconciliation data, the settlement is executed. Before execution, the actor should ensure that ALL transaction files from the settlement bank(s) have been uploaded to their respective batches - otherwise, execution will fail (with an informative error) . During execution : 1. the status of the original transactions , batch , batchJobs are marked as completed (or FAILED in case of failure); 2. Payouts and payout job statuses are also updated; 3. Refund is performed (for failed transactions) ;

Endpoint

POST /backoffice/settlement/execute-settlement

Request Body Parameters

Parameter Type required Description
id String true ID of settlement object
{
    "id" : 1
}

Response

See VIEW section of Bank settlement

List Bank Settlements

Displays list of settlements

Endpoint

POST /backoffice/settlement/list-settlements

Request Filter params

Parameter Type required Description
id String true ID of settlement object
name String false name
tag String false tag
status String false status
name String false name
name String false name
    const STATUS_PENDING = 1;
    const STATUS_FILE_GEN_IN_PROGRESS = 2;
    const STATUS_FILE_GEN_COMPLETED = 3;
    const STATUS_THIRD_PARTY_PROCESSING = 4;
    const STATUS_RECON_FILE_GEN_IN_PROGRESS = 5;
    const STATUS_RECON_REVIEW_PENDING = 6;
    const STATUS_SETTLEMENT_EXECUTION_IN_PROGRESS = 7;
    const STATUS_BATCH_FAILURE = -2;  
    const STATUS_COMPLETED = 8;
    const STATUS_CANCELLED = -1 ;

Response

Display paginated list

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "1",
                "tag": "220322_1203_Settlement",
                "name": "today sett",
                "status": "8",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 12:05:44",
                "statusText": "successful",
                "numberOfBatches": "2"
            },
            {
                "id": "2",
                "tag": "220322_0103_Settlement",
                "name": "today sett",
                "status": "1",
                "createdByStaffId": "1",
                "approvedByStaffId": null,
                "createdAt": "2022-03-22 13:03:32",
                "statusText": "pending",
                "numberOfBatches": "0"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 2
    },
    "success": true
}

List Transactions

Displays paginated list of transactions

Endpoint

POST /backoffice/settlement/list-transactions

Request Filter params

Parameter Type required Description
id String false ID of settlement object
_id String false name
status String false status
type String false type
isInitiatedByPayer String false isInitiatedByPayer
currencyCode String false currencyCode
type String false type
serviceType String false serviceType

Status code

    const STATUS_PENDING = 10;
    const STATUS_PAYMENT_IN_PROGRESS = 11 ; //useful for merchant qr payment
    const STATUS_EXTPAY_PENDING = 12 ; // Awaiting confi
    const STATUS_RE_AUTHO_REQUIRED = 13;    // Re-authorization required
    const STATUS_THIRD_PARTY_PROCESSING = 21 ;
    const STATUS_COMPLETED = 30;    
    const STATUS_REVERSED = -10;
    const STATUS_REFUNDED = -11 ;
    const STATUS_CANCELLED = -20;
    const STATUS_EXPIRED = -21;  // used for expired pending transactions
    const STATUS_FAILED = -30 ;

Types code

    const TYPE_TRANSFER =  1; //Default service type TRANSFER for non-merchant p2p
    const TYPE_PAYMENT = self::TYPE_TRANSFER ;
    const TYPE_MERCHANT_PAYMENT = 3;
    const TYPE_REFUND = 4;
    const TYPE_REVERSAL = 5;
    const TYPE_FEE = 6;    
    const TYPE_TOPUP = 7; 
    const TYPE_CASHOUT = 8; 

Types code

    const TYPE_TRANSFER =  1; //Default service type TRANSFER for non-merchant p2p
    const TYPE_PAYMENT = self::TYPE_TRANSFER ;
    const TYPE_MERCHANT_PAYMENT = 3;
    const TYPE_REFUND = 4;
    const TYPE_REVERSAL = 5;
    const TYPE_FEE = 6;    
    const TYPE_TOPUP = 7; 
    const TYPE_CASHOUT = 8; 

Service Type codes

// Generic payment
    const SERVICE_TYPE_PAYMENT  = 1;
    const SERVICE_TYPE_INVOICE = 3;
    const SERVICE_TYPE_LUCKYMONEY =  5; //For SENDING OUT LM
    const SERVICE_TYPE_LUCKY_DRAW = 6;
    const SERVICE_TYPE_CSA_TOPUP = 7 ;
    const SERVICE_TYPE_OUTBOUND_BATCH_CLEARING = 8 ;
    const SERVICE_TYPE_DISCOUNT_PROMO = 9 ;
    const SERVICE_TYPE_REFUND = 10;
    const SERVICE_TYPE_REVERSAL = 11;
    const SERVICE_TYPE_INSTORE = 12 ;
    const SERVICE_TYPE_TREASURY_TOPUP = 15 ;
    const SERVICE_TYPE_PAYMENTLINK = 17;
    const SERVICE_TYPE_QR_CODE_PAYMENT = 18;
    const SERVICE_TYPE_GIFT_CARD_PACK  = 19;
    const SERVICE_TYPE_SETTLEMENT  = 21;
    const SERVICE_TYPE_TREASURY_INBOUND_PAYMENT = 22;
    const SERVICE_TYPE_PAYOUT = 23;
    const SERVICE_TYPE_PAYMENT_REQUEST = 24;
    const SERVICE_TYPE_PAYOUT_JOB  = 25;
    const SERVICE_TYPE_FEE_CHARGE  = 26;  // For fee deduction
    const SERVICE_TYPE_SPLITPAYMENT = 27 ;
    const SERVICE_TYPE_BONUS_REWARD = 28 ;
    const SERVICE_TYPE_GIFTCARD_ACTIVATION  = 30;
    const SERVICE_TYPE_INTRA_ACCOUNT_SETTLEMENT  = 31;
    const SERVICE_TYPE_MERCHANT_SETTLEMENT = 32;
    const SERVICE_TYPE_OUTBOUND_BATCH_PAYMENT = 33;
    const SERVICE_TYPE_PREAUTH_CAPTURE = 34;
    const SERVICE_TYPE_SHADOW_REVERSAL = 35;
    const SERVICE_TYPE_BALANCE_UPDATE = 36; //"refund" transaction that is run to update the balance of the payer in case the inbound ext pay fails (e.g due to duplicate payment or (parent) transaction timing out)
    const SERVICE_TYPE_GIFT_CARD_PURCHASE = 37;
    const SERVICE_TYPE_MANUAL_SETTLEMENT = 38; //merchant manual settlement
    const SERVICE_TYPE_MANUAL_SETTLEMENT_CROSS_BORDER = 39; //merchant manual settlement
    const SERVICE_TYPE_MEMBERSHIP_PAYMENT = 40; // payment for membership

Response

Display paginated list

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "25",
                "_id": "PP2203227G9YWYPPXX3W",
                "currencyCode": "XAF",
                "amount": 1000,
                "status": "30",
                "statusText": "successful",
                "type": "1",
                "typeText": "transfer",
                "serviceType": "25",
                "serviceTypeText": "payment",
                "description": "",
                "completedAt": "2022-03-22 13:02:34.122648",
                "isInitiatedByPayer": "1",
                "couponAmount": 0,
                "tipAmount": 0,
                "payerOrgUser": {
                    "merchantDiscountAmount": 0,
                    "currencyCode": "XAF",
                    "amount": 1000,
                    "fee": 0,
                    "bonusAmount": 0,
                    "giftCardAmount": 0,
                    "netAmount": 1000,
                    "_id": "tz23",
                    "displayName": "tz23",
                    "isVerified": "0",
                    "avatarUrl": null
                },
                "payerAccount": {
                    "_id": "ACB4YEAS0QX17MJZ5ETK",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "Transient account",
                    "description": "",
                    "type": "14",
                    "typeText": "Transient account"
                },
                "beneUser": {
                    "currencyCode": "XAF",
                    "amount": 1000,
                    "fee": 0,
                    "netAmount": 1000,
                    "_id": "sys4nm3u3mipfrkh",
                    "beneName": "Afriland First Bank (Cameroon)|3330000000000333",
                    "isVerified": "0",
                    "avatarUrl": "/static/img/partners/afriland.png",
                    "displayName": "Wizzy Brown"
                },
                "beneAccount": {
                    "_id": "ACAC6KDP1GQZDJN57E2L",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "Afriland First Bank (Cameroon) | 3330000000000333",
                    "description": "",
                    "type": "3",
                    "typeText": "Payment service provider account"
                },
                "service": {
                    "type": "25",
                    "typeText": "payment"
                }
            },
            {
                "id": "24",
                "_id": "PP2203220YWE3R64AYF2",
                "currencyCode": "XAF",
                "amount": 1000,
                "status": "30",
                "statusText": "successful",
                "type": "1",
                "typeText": "transfer",
                "serviceType": "25",
                "serviceTypeText": "payment",
                "description": "",
                "completedAt": "2022-03-22 13:02:34.115284",
                "isInitiatedByPayer": "1",
                "couponAmount": 0,
                "tipAmount": 0,
                "payerOrgUser": {
                    "merchantDiscountAmount": 0,
                    "currencyCode": "XAF",
                    "amount": 1000,
                    "fee": 0,
                    "bonusAmount": 0,
                    "giftCardAmount": 0,
                    "netAmount": 1000,
                    "_id": "tz23",
                    "displayName": "tz23",
                    "isVerified": "0",
                    "avatarUrl": null
                },
                "payerAccount": {
                    "_id": "ACB4YEAS0QX17MJZ5ETK",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "Transient account",
                    "description": "",
                    "type": "14",
                    "typeText": "Transient account"
                },
                "beneUser": {
                    "currencyCode": "XAF",
                    "amount": 1000,
                    "fee": 0,
                    "netAmount": 1000,
                    "_id": "sys4nm3u3mipfrkh",
                    "beneName": "Afriland First Bank (Cameroon)|2000222222222",
                    "isVerified": "0",
                    "avatarUrl": "/static/img/partners/afriland.png",
                    "displayName": "XiaLai Tui"
                },
                "beneAccount": {
                    "_id": "ACAC6KDP1GQZDJN57E2L",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "Afriland First Bank (Cameroon) | 2000222222222",
                    "description": "",
                    "type": "3",
                    "typeText": "Payment service provider account"
                },
                "service": {
                    "type": "25",
                    "typeText": "payment"
                }
            },
             
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 20
    },
    "success": true
}

Cash Deposit/Topup

Adds funds into the ecosystem .

Create Cash deposit request

Launch a request for CD

Request Endpoint

GET /backoffice/topup/list-csa

Request Params

Parameter Type required Description
countryCode String(100) false countryCode

Response

{
    "data": [
        {
            "id": "10",
            "countryCode": "CM",
            "type": "gift_card_pack",
            "accountId": "10",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACH6XWJEJLDHSJ9DU7G3",
            "typeText": "gift_card_pack",
            "balanceAmount": 0
        },
        {
            "id": "9",
            "countryCode": "CM",
            "type": "guest_payment",
            "accountId": "9",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACQJOELHLKHKV2LJP707",
            "typeText": "guest_payment",
            "balanceAmount": 0
        },
        {
            "id": "8",
            "countryCode": "CM",
            "type": "cross_border",
            "accountId": "8",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "AC8LSATEM4JABPYOL346",
            "typeText": "cross_border",
            "balanceAmount": 0
        },
        {
            "id": "7",
            "countryCode": "CM",
            "type": "treasury",
            "accountId": "7",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACCA7QKPH2VRMFMOIZ3P",
            "typeText": "treasury",
            "balanceAmount": 0
        },
        {
            "id": "6",
            "countryCode": "CM",
            "type": "account_payable",
            "accountId": "6",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACYDS97RU9GT1Q20BKYX",
            "typeText": "account_payable",
            "balanceAmount": 0
        },
        {
            "id": "5",
            "countryCode": "CM",
            "type": "profit_loss",
            "accountId": "5",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACKEK3436WXOHF3GTRPX",
            "typeText": "profit_loss",
            "balanceAmount": 0
        },
        {
            "id": "4",
            "countryCode": "CM",
            "type": "luckymoney",
            "accountId": "4",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACCMOMHS5G4PLN3FBMQJ",
            "typeText": "luckymoney",
            "balanceAmount": 0
        },
        {
            "id": "3",
            "countryCode": "CM",
            "type": "bonus_credit",
            "accountId": "3",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "AC23X8236X45PE7ZTSYC",
            "typeText": "bonus_credit",
            "balanceAmount": 0
        },
        {
            "id": "2",
            "countryCode": "CM",
            "type": "external",
            "accountId": "2",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACRGFOF1Q8ENGVH3OTHG",
            "typeText": "external",
            "balanceAmount": 0
        },
        {
            "id": "1",
            "countryCode": "CM",
            "type": "internal",
            "accountId": "1",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACI66XBMZALRNZ7PETWA",
            "typeText": "internal",
            "balanceAmount": 0
        }
    ],
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T15:53:19+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.043s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List Top-ups

Request Endpoint

GET /backoffice/topup/list-topups

Request Params

[['id', 'amount', 'beneAccountId', 'sourceTreasuryServiceId', 'type', 'staffId', 
   'approvedByStaffId', 'status', 'paymentId' ,'currencyCode', 'approvedAt', 'createdAt', 'lastUpdatedAt'], 'safe'],
 

Response

Create Cash deposit

Creates a deposit request

Endpoint URL

GET /backoffice/topup/create-treasury-topup-request

Request params

{
    "beneAccountId": 10,
    "amount": 111111 ,
    "note" : "transfer for blah blah"
}

Response

See VIEW section

Update Cash deposit

Updates a deposit request

Endpoint URL

GET /backoffice/topup/update

Request params

{
    "id" : 1,
    "beneAccountId": 10,
    "amount": 111111 ,
    "note" : "transfer for blah blah"
}

Approve Cash deposit

Approves a deposit request

Endpoint URL

GET /backoffice/topup/update

Request params

{
    "id": 1  
}

Response

See VIEW section

View Cash Deposit

Displays cash deposit

Request URL

GET /backoffice/topup/view?id=TOPUP_ID

Response

{
    "data": {
        "amount": "111111",
        "approvedAt": null,
        "approvedByStaffId": null,
        "beneAccountId": 10,
        "createdAt": "2022-03-25 15:57:50",
        "currencyCode": "XAF",
        "id": 1,
        "lastUpdatedAt": null,
        "note": "transfer for blah blah",
        "paymentId": null,
        "sourceTreasuryServiceId": null,
        "staffId": 1,
        "status": 1,
        "type": 2
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T16:01:46+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.047s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List CSA Types

Displays lists of CSA types that may be topped up

Endpoint

GET /backoffice/topup/list-topup-csa

Request params

Response

{
    "data": [
        {
            "id": "30",
            "countryCode": "NG",
            "type": "gift_card_pack",
            "accountId": "245",
            "createdAt": "2022-03-25 14:44:49",
            "_accountId": "ACD2WZI9U8S1KVPGCP0P",
            "typeText": "gift_card_pack",
            "balanceAmount": 0
        },
        {
            "id": "27",
            "countryCode": "NG",
            "type": "treasury",
            "accountId": "242",
            "createdAt": "2022-03-25 14:44:49",
            "_accountId": "ACBOSFFR7YXXWH4DHFMT",
            "typeText": "treasury",
            "balanceAmount": 0
        },
        {
            "id": "24",
            "countryCode": "NG",
            "type": "luckymoney",
            "accountId": "239",
            "createdAt": "2022-03-25 14:44:49",
            "_accountId": "ACIE0EQB5AWXBA321I4O",
            "typeText": "luckymoney",
            "balanceAmount": 0
        },
        {
            "id": "23",
            "countryCode": "NG",
            "type": "bonus_credit",
            "accountId": "238",
            "createdAt": "2022-03-25 14:44:49",
            "_accountId": "ACPF871S7AHZZBSXRP5R",
            "typeText": "bonus_credit",
            "balanceAmount": 0
        },
        {
            "id": "20",
            "countryCode": "CD",
            "type": "gift_card_pack",
            "accountId": "235",
            "createdAt": "2022-03-25 14:44:43",
            "_accountId": "ACVF80H2YASW1F4FVWCA",
            "typeText": "gift_card_pack",
            "balanceAmount": 0
        },
        {
            "id": "17",
            "countryCode": "CD",
            "type": "treasury",
            "accountId": "232",
            "createdAt": "2022-03-25 14:44:43",
            "_accountId": "AC81GD2ESEZ1K21FP294",
            "typeText": "treasury",
            "balanceAmount": 0
        },
        {
            "id": "14",
            "countryCode": "CD",
            "type": "luckymoney",
            "accountId": "229",
            "createdAt": "2022-03-25 14:44:43",
            "_accountId": "ACZOXIZO57DFHUM23R5Z",
            "typeText": "luckymoney",
            "balanceAmount": 0
        },
        {
            "id": "13",
            "countryCode": "CD",
            "type": "bonus_credit",
            "accountId": "228",
            "createdAt": "2022-03-25 14:44:43",
            "_accountId": "ACBAFO376VM3PIV9MRZF",
            "typeText": "bonus_credit",
            "balanceAmount": 0
        },
        {
            "id": "10",
            "countryCode": "CM",
            "type": "gift_card_pack",
            "accountId": "10",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACH6XWJEJLDHSJ9DU7G3",
            "typeText": "gift_card_pack",
            "balanceAmount": 0
        },
        {
            "id": "7",
            "countryCode": "CM",
            "type": "treasury",
            "accountId": "7",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACCA7QKPH2VRMFMOIZ3P",
            "typeText": "treasury",
            "balanceAmount": 0
        },
        {
            "id": "4",
            "countryCode": "CM",
            "type": "luckymoney",
            "accountId": "4",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "ACCMOMHS5G4PLN3FBMQJ",
            "typeText": "luckymoney",
            "balanceAmount": 0
        },
        {
            "id": "3",
            "countryCode": "CM",
            "type": "bonus_credit",
            "accountId": "3",
            "createdAt": "2022-03-25 12:20:51",
            "_accountId": "AC23X8236X45PE7ZTSYC",
            "typeText": "bonus_credit",
            "balanceAmount": 0
        }
    ],
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T16:40:05+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.046s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

BO Transactions

Manage transactions

View transactions

Displays list of transactions

Endpoint

GET /backoffice/transaction/list

Filter parameters

Request Filter params

Parameter Type required Description
id String true id
_id String false _id
type String false type
currencyCode String false isPaymentMethod
type String false type
status String false status
serviceType String false serviceType
description String false description
isInitiatedByPayer String false isInitiatedByPayer

... See list below Filter params

 ['payerUserId' ,'beneUserId' , 'beneIdToken' , 'description', 'currencyCode', 'startDateTime' , 'endDateTime' ,  '_id',  'accountId' , 'payerAccountId' ,'beneAccountId' , 'customerId', 'status' ,'startDateTime', 'endDateTime' ] ;

Transaction Statuses

    const STATUS_PENDING = 10;
    const STATUS_PAYMENT_IN_PROGRESS = 11 ; //useful for merchant qr payment
    const STATUS_EXTPAY_PENDING = 12 ; // Awaiting confi
    const STATUS_RE_AUTHO_REQUIRED = 13;    // Re-authorization required
    const STATUS_THIRD_PARTY_PROCESSING = 21 ;
    const STATUS_COMPLETED = 30;    
    const STATUS_REVERSED = -10;
    const STATUS_REFUNDED = -11 ;
    const STATUS_CANCELLED = -20;
    const STATUS_EXPIRED = -21;  // used for expired pending transactions
    const STATUS_FAILED = -30 ;

Type

    const TYPE_TRANSFER =  1; //Default service type TRANSFER for non-merchant p2p
    const TYPE_PAYMENT = self::TYPE_TRANSFER ;
    const TYPE_MERCHANT_PAYMENT = 3;
    const TYPE_REFUND = 4;
    const TYPE_REVERSAL = 5;
    const TYPE_FEE = 6;    
    const TYPE_TOPUP = 7; 
    const TYPE_CASHOUT = 8; 

Service Type ID

// Generic payment
    const SERVICE_TYPE_PAYMENT  = 1;
    const SERVICE_TYPE_INVOICE = 3;
    const SERVICE_TYPE_LUCKYMONEY =  5; //For SENDING OUT LM
    const SERVICE_TYPE_LUCKY_DRAW = 6;
    const SERVICE_TYPE_CSA_TOPUP = 7 ;
    const SERVICE_TYPE_OUTBOUND_BATCH_CLEARING = 8 ;
    const SERVICE_TYPE_DISCOUNT_PROMO = 9 ;
    const SERVICE_TYPE_REFUND = 10;
    const SERVICE_TYPE_REVERSAL = 11;
    const SERVICE_TYPE_INSTORE = 12 ;
    const SERVICE_TYPE_TREASURY_TOPUP = 15 ;
    const SERVICE_TYPE_PAYMENTLINK = 17;
    const SERVICE_TYPE_QR_CODE_PAYMENT = 18;
    const SERVICE_TYPE_GIFT_CARD_PACK  = 19;
    const SERVICE_TYPE_SETTLEMENT  = 21;
    const SERVICE_TYPE_TREASURY_INBOUND_PAYMENT = 22;
    const SERVICE_TYPE_PAYOUT = 23;
    const SERVICE_TYPE_PAYMENT_REQUEST = 24;
    const SERVICE_TYPE_PAYOUT_JOB  = 25;
    const SERVICE_TYPE_FEE_CHARGE  = 26;  // For fee deduction
    const SERVICE_TYPE_SPLITPAYMENT = 27 ;
    const SERVICE_TYPE_BONUS_REWARD = 28 ;
    const SERVICE_TYPE_GIFTCARD_ACTIVATION  = 30;
    const SERVICE_TYPE_INTRA_ACCOUNT_SETTLEMENT  = 31;
    const SERVICE_TYPE_MERCHANT_SETTLEMENT = 32;
    const SERVICE_TYPE_OUTBOUND_BATCH_PAYMENT = 33;
    const SERVICE_TYPE_PREAUTH_CAPTURE = 34;
    const SERVICE_TYPE_SHADOW_REVERSAL = 35;
    const SERVICE_TYPE_BALANCE_UPDATE = 36; //"refund" transaction that is run to update the balance of the payer in case the inbound ext pay fails (e.g due to duplicate payment or (parent) transaction timing out)
    const SERVICE_TYPE_GIFT_CARD_PURCHASE = 37;
    const SERVICE_TYPE_MANUAL_SETTLEMENT = 38; //merchant manual settlement
    const SERVICE_TYPE_MANUAL_SETTLEMENT_CROSS_BORDER = 39; //merchant manual settlement
    const SERVICE_TYPE_MEMBERSHIP_PAYMENT = 40; // payment for membership

Response

Transaction list

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "id": "47",
                "_id": "PP220322XWKKQECYJHGP",
                "currencyCode": "XAF",
                "amount": 10000,
                "status": "30",
                "statusText": "successful",
                "type": "1",
                "typeText": "transfer",
                "serviceType": "33",
                "serviceTypeText": "payment",
                "description": "Batch payment | ID=2",
                "completedAt": "2022-03-22 14:02:33.741109",
                "isInitiatedByPayer": "1",
                "couponAmount": 0,
                "tipAmount": 0,
                "payerOrgUser": {
                    "merchantDiscountAmount": 0,
                    "currencyCode": "XAF",
                    "amount": 10000,
                    "fee": 0,
                    "bonusAmount": 0,
                    "giftCardAmount": 0,
                    "netAmount": 10000,
                    "_id": "sysyhpjef1v5w0rd",
                    "displayName": "UBA Cameroon",
                    "isVerified": "0",
                    "avatarUrl": "/static/img/partners/uba.png"
                },
                "payerAccount": {
                    "_id": "ACOIC8XM0R4XK60N2JNM",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "10",
                    "description": "",
                    "type": "10",
                    "typeText": "10"
                },
                "beneUser": {
                    "currencyCode": "XAF",
                    "amount": 10000,
                    "fee": 0,
                    "netAmount": 10000,
                    "_id": "sys7a6t4ta3flb39",
                    "beneName": "Tranzak System Account | Cameroon",
                    "isVerified": "0",
                    "avatarUrl": null
                },
                "beneAccount": {
                    "_id": "ACCZS872EISPY6XWCT3L",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "CSA account",
                    "description": "",
                    "type": "2",
                    "typeText": "CSA account"
                },
                "service": {
                    "type": "33",
                    "typeText": "payment"
                }
            },
            {
                "id": "46",
                "_id": "PP220322NT19Q3LCQ1W3",
                "currencyCode": "XAF",
                "amount": 10000,
                "status": "30",
                "statusText": "successful",
                "type": "1",
                "typeText": "transfer",
                "serviceType": "33",
                "serviceTypeText": "payment",
                "description": "Batch payment | ID=1",
                "completedAt": "2022-03-22 14:02:33.576162",
                "isInitiatedByPayer": "1",
                "couponAmount": 0,
                "tipAmount": 0,
                "payerOrgUser": {
                    "merchantDiscountAmount": 0,
                    "currencyCode": "XAF",
                    "amount": 10000,
                    "fee": 0,
                    "bonusAmount": 0,
                    "giftCardAmount": 0,
                    "netAmount": 10000,
                    "_id": "sysyhpjef1v5w0rd",
                    "displayName": "UBA Cameroon",
                    "isVerified": "0",
                    "avatarUrl": "/static/img/partners/uba.png"
                },
                "payerAccount": {
                    "_id": "ACOIC8XM0R4XK60N2JNM",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "10",
                    "description": "",
                    "type": "10",
                    "typeText": "10"
                },
                "beneUser": {
                    "currencyCode": "XAF",
                    "amount": 10000,
                    "fee": 0,
                    "netAmount": 10000,
                    "_id": "sys7a6t4ta3flb39",
                    "beneName": "Tranzak System Account | Cameroon",
                    "isVerified": "0",
                    "avatarUrl": null
                },
                "beneAccount": {
                    "_id": "ACCZS872EISPY6XWCT3L",
                    "currencyCode": "XAF",
                    "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                    "name": "CSA account",
                    "description": "",
                    "type": "2",
                    "typeText": "CSA account"
                },
                "service": {
                    "type": "33",
                    "typeText": "payment"
                }
            },
            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 47
    },
    "success": true,
 
}

List Sales

Request Endpoint

GET /backoffice/transaction/sales

Request Filter params

 ['payerUserId' ,'beneUserId' , 'beneIdToken' , 'description', 'currencyCode', 'startDateTime' , 'endDateTime' ,  '_id',  'accountId' , 'payerAccountId' ,'beneAccountId' , 'customerId', 'status' , 'mchTransactionRef' , 'giftCardPackId' , 'couponId' , 'withTip' , 'membershipPlanId'] ;

Response

Same as in transaction list

View Transaction Details

Displays details of transaction

Request Endpoint

GET /backoffice/transaction/view?transactionId=TXN_ID

Request Filter params

Parameter Type required Description
id String true txn ID
_id String true _id

Response

{
    "data": {
        "_id": "PP2203227G9YWYPPXX3W",
        "amount": 1000,
        "beneAccountId": 18,
        "beneFee": 0,
        "beneGiftCardDebitAmount": 0,
        "beneMembershipDebitAmount": 0,
        "beneName": "Afriland First Bank (Cameroon)|3330000000000333",
        "beneNetAmount": 1000,
        "beneUserId": 6,
        "collectedCouponId": null,
        "completedAt": "2022-03-22 13:02:34.122648",
        "couponAmount": 0,
        "createdAt": "2022-03-22 12:05:38.063811",
        "creationStartTime": "2022-03-22 12:05:38.058287",
        "currencyCode": "XAF",
        "description": "Payment to Afriland First Bank (Cameroon)",
        "executionStartTime": "2022-03-22 12:05:38.066853",
        "id": "25",
        "inboundExternalPaymentId": null,
        "isInitiatedByPayer": 1,
        "journals": [
            {
                "id": "55",
                "paymentId": "25",
                "isCredit": 1,
                "accountId": 18,
                "amount": 1000,
                "currencyCode": "XAF",
                "openingBalance": 0,
                "closingBalance": 0,
                "createdAt": "2022-03-22 13:05:38"
            },
            {
                "id": "54",
                "paymentId": "25",
                "isCredit": 0,
                "accountId": 40,
                "amount": -1000,
                "currencyCode": "XAF",
                "openingBalance": 1000,
                "closingBalance": 0,
                "createdAt": "2022-03-22 13:05:38"
            }
        ],
        "metaData": {
            "paymentId": "25",
            "disablePayerAccountSelection": null,
            "mchTransactionRef": null,
            "itemDetails": "",
            "inboundAccountNumber": "",
            "inboundAccountName": "",
            "inboundAccountEmail": null,
            "payerNote": "",
            "beneNote": "",
            "outboundTreasuryServiceId": 5,
            "outboundOrgName": "Afriland First Bank (Cameroon)",
            "outboundAccountNumber": "3330000000000333",
            "outboundAccountName": "Wizzy Brown",
            "outboundBankCode": "10005",
            "outboundBranchCode": "0005",
            "outboundRibCode": "56",
            "outboundPrepaidFirst6Digits": null,
            "outboundPrepaidLast4Digits": null,
            "outboundPrepaidCustomerId": null,
            "payerLocationCoordinates": null,
            "subscriptionId": null,
            "subscriptionPlanId": null,
            "appId": null,
            "notifyUrl": "",
            "returnUrl": "",
            "createdAt": "2022-03-22 12:05:38",
            "lastUpdatedAt": null
        },
        "outboundJob": {
            "paymentId": "25",
            "userId": 23,
            "accountId": 18,
            "batchId": 2,
            "clearingPaymentId": "37",
            "status": 5,
            "partnerTransactionId": "PP2203227G9YWYPPXX3W",
            "partnerTransactionTime": null,
            "retryAttempts": null,
            "note": "Hello wizz|AFB",
            "errorCode": null,
            "failMessage": "PP2203227G9YWYPPXX3W",
            "createdAt": "2022-03-22 12:05:38",
            "lastUpdatedAt": "2022-03-22 13:02:34"
        },
        "parentId": "21",
        "payerAccountId": 40,
        "payerBonusRewardAmount": 0,
        "payerBonusRewardId": null,
        "payerFee": 0,
        "payerGiftCardAccountId": null,
        "payerGiftCardAmount": 0,
        "payerMembershipAmount": 0,
        "payerMembershipId": null,
        "payerName": "tz23",
        "payerNetAmount": 1000,
        "payerOrgUserId": 23,
        "payerUserId": 23,
        "presBeneAmount": 1000,
        "presPayerAmount": 1000,
        "processingAt": "2022-03-22 13:05:38.069270",
        "recurringPaymentFlag": null,
        "serviceId": 20,
        "serviceType": "payment",
        "status": 30,
        "statusText": "successful",
        "tipAmount": 0,
        "type": 1,
        "typeText": "transfer"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-22T17:27:00+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.048s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

BO Treasury Management

A treasury is where funds (money) are stored. They include banks, wallets, credit issuing entities (Visa, Mastercard)

Add a Treasury

Adds a treasury into the system

Endpoint

POST /backoffice/treasury/add

Request Filter params

Parameter Type required Description
countryCode String true ID of settlement object
name String false name
shortName String false shortName
description String false description
type String false type
avatarUrl String false avatarUrl
isSelectableByUsers String false isSelectableByUsers
isSettlementEntity String false isSettlementEntity
isPaymentMethod String false isPaymentMethod
{
    "countryCode" : "CM" ,
    "name" : "Tranzak 1Bank Corporation" ,
    "shortName" : "Tranzak 1Bank" ,
    "description" : "Tranzak OneBank" ,
    "type" : 1,
    "avatarUrl" : "https://tranzak.me/assets/img/hero-img.png" ,
    "isSelectableByUsers" : 1 ,
    "isSettlementEntity" : 1 ,
    "isPaymentMethod" :  1 
}

Response

See the VIEW section

Updates a Treasury

Updates treasury properties

Endpoint

POST /backoffice/treasury/update

Request Filter params

Parameter Type required Description
id String true ID of treasury
name String false name
shortName String false shortName
description String false description
type String false type
avatarUrl String false avatarUrl
isSelectableByUsers String false isSelectableByUsers
isSettlementEntity String false isSettlementEntity
isPaymentMethod String false isPaymentMethod
{
    "id": 1,    
 
    "name" : "Tranzak 1Bank Corporation" ,
    "shortName" : "Tranzak 1Bank" ,
    "description" : "Tranzak OneBank" ,
    "type" : 1,
    "avatarUrl" : "https://tranzak.me/assets/img/hero-img.png" ,
    "isSelectableByUsers" : 1 ,
    "isSettlementEntity" : 1 ,
    "isPaymentMethod" :  1 
}

Response

See the VIEW section

View Treasury

Displays treasury details

Endpoint

POST /backoffice/treasury/view?id=TREASURY_ID

Request Filter params

Parameter Type required Description
id String true ID of settlement object

Response

{
    "data": {
        "avatarUrl": "/static/img/partners/mtn.png",
        "bankCode": null,
        "cardAvatarUrl": "/static/img/partners/cards/",
        "countryCode": "CM",
        "createdAt": "2022-03-22 12:04:56",
        "createdByStaffId": null,
        "description": "CM | MTN Momo",
        "enableMastercardPrepaidSettlement": 0,
        "enableVisaPrepaidSettlement": 0,
        "id": 1,
        "inboundFixedCharge": 10,
        "inboundMaxAmount": "1000000",
        "inboundMinAmount": "1",
        "inboundPercentageCharge": "2",
        "isExpressPaymentSupported": 1,
        "isOffline": 0,
        "isOutboundPaymentProvider": 1,
        "isPaymentMethod": 1,
        "isSelectableByUsers": 1,
        "isSettlementEntity": 1,
        "isVerificationSource": 0,
        "maxInterBankJobsPerBatch": null,
        "maxIntraBankJobsPerBatch": null,
        "maxPrepaidCardJobsPerBatch": null,
        "name": "MTN Momo",
        "outboundFixedCharge": 10,
        "outboundMaxAmount": "100000",
        "outboundMaxJobPerBatch": null,
        "outboundMinAmount": "1",
        "outboundPercentageCharge": "2",
        "outboundProcessingTimeInHours": null,
        "outboundRatePercentage": "2.2000",
        "paymentWebRedirectUrl": null,
        "settlementAccountId": 11,
        "settlementPriority": 10,
        "shortName": "MTN Momo",
        "status": 1,
        "swiftCode": null,
        "type": 2,
        "updatedAt": null,
        "userId": 3,
        "ussdMobileMoneyDialCode": "*126#"
    },
    "success": true
}

List treasuries

Displays paginated list of treasuries

Endpoint

POST /backoffice/treasury/list?id=TREASURY_ID

Request Filter params

Parameter Type required Description
id String true ID of settlement object
countryCode String true countryCode
type String true type
shortName String true shortName
name String true name
description String true description
bankCode String true bankCode
status String true status

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "id": 1,
                "userId": 3,
                "countryCode": "CM",
                "type": 2,
                "shortName": "MTN Momo",
                "name": "MTN Momo",
                "description": "CM | MTN Momo",
                "isOffline": 0,
                "status": 1,
                "isPaymentMethod": 1,
                "bankCode": null,
                "isOutboundPaymentProvider": 1,
                "outboundRatePercentage": "2.2000",
                "avatarUrl": "/static/img/partners/mtn.png",
                "cardAvatarUrl": "/static/img/partners/cards/",
                "isSelectableByUsers": 1,
                "isVerificationSource": 0,
                "isExpressPaymentSupported": 1,
                "paymentWebRedirectUrl": null,
                "inboundMinAmount": "1",
                "inboundMaxAmount": "1000000",
                "inboundPercentageCharge": "2",
                "inboundFixedCharge": 10,
                "outboundMinAmount": "1",
                "outboundMaxAmount": "100000",
                "outboundFixedCharge": 10,
                "outboundPercentageCharge": "2",
                "outboundProcessingTimeInHours": null,
                "outboundMaxJobPerBatch": null,
                "ussdMobileMoneyDialCode": "*126#",
                "enableVisaPrepaidSettlement": 0,
                "enableMastercardPrepaidSettlement": 0,
                "isSettlementEntity": 1,
                "settlementPriority": 10,
                "maxPrepaidCardJobsPerBatch": null,
                "maxIntraBankJobsPerBatch": null,
                "maxInterBankJobsPerBatch": null,
                "settlementAccountId": 11,
                "swiftCode": null,
                "createdByStaffId": null,
                "createdAt": "2022-03-22 12:04:56",
                "updatedAt": null
            },
            {
                "id": 2,
                "userId": 4,
                "countryCode": "CM",
                "type": 2,
                "shortName": "Orange Money",
                "name": "Orange Money",
                "description": "CM | Orange Money",
                "isOffline": 0,
                "status": 1,
                "isPaymentMethod": 1,
                "bankCode": null,
                "isOutboundPaymentProvider": 1,
                "outboundRatePercentage": "1.8000",
                "avatarUrl": "/static/img/partners/orange.png",
                "cardAvatarUrl": "/static/img/partners/cards/",
                "isSelectableByUsers": 1,
                "isVerificationSource": 0,
                "isExpressPaymentSupported": 1,
                "paymentWebRedirectUrl": null,
                "inboundMinAmount": "1",
                "inboundMaxAmount": "1000000",
                "inboundPercentageCharge": "2",
                "inboundFixedCharge": 10,
                "outboundMinAmount": "1",
                "outboundMaxAmount": "100000",
                "outboundFixedCharge": 10,
                "outboundPercentageCharge": "2",
                "outboundProcessingTimeInHours": null,
                "outboundMaxJobPerBatch": null,
                "ussdMobileMoneyDialCode": "#150#",
                "enableVisaPrepaidSettlement": 0,
                "enableMastercardPrepaidSettlement": 0,
                "isSettlementEntity": 1,
                "settlementPriority": 10,
                "maxPrepaidCardJobsPerBatch": null,
                "maxIntraBankJobsPerBatch": null,
                "maxInterBankJobsPerBatch": null,
                "settlementAccountId": 13,
                "swiftCode": null,
                "createdByStaffId": null,
                "createdAt": "2022-03-22 12:04:56",
                "updatedAt": null
            },
           
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 21
    },
    "success": true
}

List Settlement Treasuries

Endpoint

GET /backoffice/treasury/list-settlement-banks

Response

See the treasury list under the LIST section

Add a Treasury Service

A treasury may offer one or more services. e.g a Visa issues Credit cards and pre-paid cards

Endpoint

POST /backoffice/treasury/add-service-account

Request Filter params

Parameter Type required Description
countryCode String true countryCode
serviceName String false serviceName
type String false type
isPaymentMethod String false isPaymentMethod
type String false type
treasuryId String true treasuryId
avatarUrl String false avatarUrl
{
    "countryCode": "CM",
    "serviceName": "Tz 1Bank Wallet",
    "type": 1,
    "isPaymentMethod": "Tranzak OneBank",
    "treasuryId": 10,
    "avatarUrl": "https://tranzak.me/assets/img/hero-img.png"
}

Response

See the VIEW Treasury Service section

Update a Treasury Service

Updates a TS

Endpoint

POST /backoffice/treasury/update-service-account

Request Filter params

Parameter Type required Description
id String true countryCode
serviceName String false serviceName
type String false type
isPaymentMethod String false isPaymentMethod
type String false type
avatarUrl String false avatarUrl
isEnabled String false isEnabled
isOffline String false isOffline
{
    "countryCode": "CM",
    "serviceName": "Tz 1Bank Wallet",
    "type": 1,
    "isPaymentMethod": "Tranzak OneBank",
    "treasuryId": 10,
    "avatarUrl": "https://tranzak.me/assets/img/hero-img.png"
}

Response

See the VIEW Treasury Service section

View a Treasury Service

View treasury service details

Endpoint

GET /backoffice/treasury/view-service-account?id=SERVICE_ID

Request Filter params

Parameter Type required Description
id String true countryCode

Response

See the VIEW Treasury Service section

{
     "data": {
        "_accountId": "ACP03M6UJ95UTSYNBOAJ",
        "accountId": 12,
        "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/partners/mtn.png",
        "countryCode": "CM",
        "countryName": "Cameroon",
        "createdAt": "2022-03-22 12:04:56",
        "createdByStaffId": null,
        "externalBalance": 0,
        "id": 1,
        "isEnabled": 1,
        "isOffline": 0,
        "isPaymentMethod": 1,
        "lastUpdatedAt": null,
        "serviceName": "",
        "serviceTypeText": "telecom wallet",
        "treasuryId": 1,
        "treasuryName": "MTN Momo",
        "treasuryShortName": "MTN Momo",
        "treasuryType": 2,
        "treasuryTypeText": "Telecom operator",
        "type": 4
    },
    "success": true,
 
}

User (BO)

User management

List Users

Lists users with filter options

Request Endpoint

GET /backoffice/user/list

Request Params

 [['residenceCountryCode' , 'merchantId' , 'id', 'orgUserId', 'roleId', 'type', 'isRNVerified', 'loginEnabled', 'defaultSendingAccountId', 'canReceivePayment', 'canSendPayment'], 'safe'],
[['_id', 'ufId', 'scopeId', 'primaryCurrencyCode', 'residenceCountryCode', 'firstName', 'lastName', 'displayName', 'verifiedName', 'paymentPin', 'phoneNumber', 'language', 'timeZone', 'avatarUrl', 'createdAt', 'lastUpdatedAt'], 'safe'],

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "id": "43",
                "_id": "tz43",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz43",
                "verifiedName": null,
                "paymentPin": "$2y$05$rzEUcrWUyKnqY8ccMBejYOnISzontDQsbNPWpDOPwdW.NyQoe15PC",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:53",
                "lastUpdatedAt": "2022-03-25 13:20:53",
                "merchant": {
                    "id": "21",
                    "userId": "43",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:53",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "222",
                    "membershipDebitAccountId": "223",
                    "createdAt": "2022-03-25 12:20:53",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "21"
            },
            {
                "id": "42",
                "_id": "tz42",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz42",
                "verifiedName": null,
                "paymentPin": "$2y$05$HbxqR13prOrFDcBiDTOPOeN4BBKP8pN3SrdtVysbjJLfGA4BAGvYy",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:53",
                "lastUpdatedAt": "2022-03-25 13:20:53",
                "merchant": {
                    "id": "20",
                    "userId": "42",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:53",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "213",
                    "membershipDebitAccountId": "214",
                    "createdAt": "2022-03-25 12:20:53",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "20"
            },
            {
                "id": "41",
                "_id": "tz41",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz41",
                "verifiedName": null,
                "paymentPin": "$2y$05$YNpO8ab8tRnmwzyeqig0eeMrQUByR7J2ir0jgkuJASP82w1yTgJDi",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:53",
                "lastUpdatedAt": "2022-03-25 13:20:53",
                "merchant": {
                    "id": "19",
                    "userId": "41",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:53",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "204",
                    "membershipDebitAccountId": "205",
                    "createdAt": "2022-03-25 12:20:53",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "19"
            },
            {
                "id": "40",
                "_id": "tz40",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz40",
                "verifiedName": null,
                "paymentPin": "$2y$05$BIxny0oZLOKpSMVAsqVc0eHRYL1LdAR8qb39iGoyW1i89Q3fw.5O.",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:53",
                "lastUpdatedAt": "2022-03-25 13:20:53",
                "merchant": {
                    "id": "18",
                    "userId": "40",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:53",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "195",
                    "membershipDebitAccountId": "196",
                    "createdAt": "2022-03-25 12:20:53",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "18"
            },
            {
                "id": "39",
                "_id": "tz39",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz39",
                "verifiedName": null,
                "paymentPin": "$2y$05$DhdvLuEkHLzMFHFQIh1Qn.gpt.4OspKrkRtilT0vfOLe646VUCykq",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:53",
                "lastUpdatedAt": "2022-03-25 13:20:53",
                "merchant": {
                    "id": "17",
                    "userId": "39",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:53",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "186",
                    "membershipDebitAccountId": "187",
                    "createdAt": "2022-03-25 12:20:53",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "17"
            },
            {
                "id": "38",
                "_id": "tz38",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz38",
                "verifiedName": null,
                "paymentPin": "$2y$05$8piP03dwHIQh9Fz7.DteM.2PqIV8BemwsIRETz6GpJmRR3rDwJsKC",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "16",
                    "userId": "38",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "177",
                    "membershipDebitAccountId": "178",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "16"
            },
            {
                "id": "37",
                "_id": "tz37",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz37",
                "verifiedName": null,
                "paymentPin": "$2y$05$NGDjJXhAH6tF6ufj1CaEdORVyYXSf8s6Bd9//6/lIhWksU.REdN9i",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "15",
                    "userId": "37",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "168",
                    "membershipDebitAccountId": "169",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "15"
            },
            {
                "id": "36",
                "_id": "tz36",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz36",
                "verifiedName": null,
                "paymentPin": "$2y$05$.pbN5KwKnGtiuqKtRTlmWuxKad2hNAIZDc0hjlP75B2ljWP11LLim",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "14",
                    "userId": "36",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "159",
                    "membershipDebitAccountId": "160",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "14"
            },
            {
                "id": "35",
                "_id": "tz35",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz35",
                "verifiedName": null,
                "paymentPin": "$2y$05$Cyw7Meo5om96wyDi7s5CcefZ2q5r/YDVtxW/BdIfg.MURgiKjfwgG",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "13",
                    "userId": "35",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "150",
                    "membershipDebitAccountId": "151",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "13"
            },
            {
                "id": "34",
                "_id": "tz34",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz34",
                "verifiedName": null,
                "paymentPin": "$2y$05$SPEjLsVzUMsSHmnr7JNgPe441TwJ5JGYzPhFfjUWbu54WAzp3O5n.",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "12",
                    "userId": "34",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "141",
                    "membershipDebitAccountId": "142",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "12"
            },
            {
                "id": "33",
                "_id": "tz33",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz33",
                "verifiedName": null,
                "paymentPin": "$2y$05$pAnMeu/ZU2/dnR0e9t73W.Khm4T8rvkfj.CETKOLdnwune6QHyvHW",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "11",
                    "userId": "33",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "132",
                    "membershipDebitAccountId": "133",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "11"
            },
            {
                "id": "32",
                "_id": "tz32",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz32",
                "verifiedName": null,
                "paymentPin": "$2y$05$Bb29b2odhEt5GPQMMwJOUuMB/9naxZ8q3hs3ga.ZCSMeYZpmoladO",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "10",
                    "userId": "32",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "123",
                    "membershipDebitAccountId": "124",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "10"
            },
            {
                "id": "31",
                "_id": "tz31",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz31",
                "verifiedName": null,
                "paymentPin": "$2y$05$IfZaEWekyqiP6l6iISLXkuN8Z9vktmp9/UZrxvge5GjYH48IU9Kj6",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "9",
                    "userId": "31",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "114",
                    "membershipDebitAccountId": "115",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "9"
            },
            {
                "id": "30",
                "_id": "tz30",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz30",
                "verifiedName": null,
                "paymentPin": "$2y$05$8kk6FNC2wBUDZRAu2yQ7yuv6xAVDV7IJBMHNY9LQuPiXUJBu01hRW",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "8",
                    "userId": "30",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "105",
                    "membershipDebitAccountId": "106",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "8"
            },
            {
                "id": "29",
                "_id": "tz29",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz29",
                "verifiedName": null,
                "paymentPin": "$2y$05$GGx9slw3CAB7db17Vi9pNehe9alwb6Tvi9ybL2Z9Cz4R6MCcZdgg.",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "7",
                    "userId": "29",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "96",
                    "membershipDebitAccountId": "97",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "7"
            },
            {
                "id": "28",
                "_id": "tz28",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz28",
                "verifiedName": null,
                "paymentPin": "$2y$05$9bSkDyobt3388DnPVUOFW.sO.ZqsEde0BBD3GH1J6D9lmDMCVMBgS",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "6",
                    "userId": "28",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "87",
                    "membershipDebitAccountId": "88",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "6"
            },
            {
                "id": "27",
                "_id": "tz27",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz27",
                "verifiedName": null,
                "paymentPin": "$2y$05$ySTE/mh7q1xL6imVxHIine6Iy9gwXLuPd8Amg/0eytOvFH1nsfJF2",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "5",
                    "userId": "27",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "78",
                    "membershipDebitAccountId": "79",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "5"
            },
            {
                "id": "26",
                "_id": "tz26",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz26",
                "verifiedName": null,
                "paymentPin": "$2y$05$1HtrOwLNU7xdfu1dbUs1GeXzhQXZ6UraCYjRJlaUnbrzmnX/UtSVa",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "4",
                    "userId": "26",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "69",
                    "membershipDebitAccountId": "70",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "4"
            },
            {
                "id": "25",
                "_id": "tz25",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz25",
                "verifiedName": null,
                "paymentPin": "$2y$05$znvVrEeDqhVlVdSPBidNrO3Hrc827GSRNY0.x0JWV9MBfnJO2/PUC",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "3",
                    "userId": "25",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "60",
                    "membershipDebitAccountId": "61",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "3"
            },
            {
                "id": "24",
                "_id": "tz24",
                "ufId": null,
                "orgUserId": null,
                "scopeId": null,
                "roleId": "1000",
                "primaryCurrencyCode": "XAF",
                "residenceCountryCode": "CM",
                "type": "3",
                "firstName": null,
                "lastName": null,
                "displayName": "tz24",
                "verifiedName": null,
                "paymentPin": "$2y$05$WzaOVlZnrb2MoMqDjDC1vO8pm0/rEsGvCcS7ygl7WIZ/F40tC4jva",
                "phoneNumber": null,
                "language": "en_GB",
                "timeZone": "Africa/Douala",
                "isRNVerified": "0",
                "loginEnabled": "1",
                "avatarUrl": null,
                "defaultSendingAccountId": null,
                "canReceivePayment": "1",
                "canSendPayment": "1",
                "createdAt": "2022-03-25 12:20:52",
                "lastUpdatedAt": "2022-03-25 13:20:52",
                "merchant": {
                    "id": "2",
                    "userId": "24",
                    "commission": null,
                    "internalSettlementCommission": null,
                    "commissionCap": null,
                    "minSettlementAmount": null,
                    "settlementWindowId": null,
                    "settlementAccountId": null,
                    "enableManualSettlement": "0",
                    "maxActiveCoupons": null,
                    "maxCouponsPerPromotion": null,
                    "maxLuckyMoneyQuantity": null,
                    "maxLuckyMoneyAmount": null,
                    "enableGuestPayments": "0",
                    "enableInPersonPayment": "0",
                    "maxSubAccounts": null,
                    "enableGiftCard": "0",
                    "enablePreFinancedGiftCard": null,
                    "enableVirtualAccounts": "0",
                    "maxVirtualAccounts": null,
                    "gracePeriodEndsAt": "2022-04-24 12:20:52",
                    "enableMembershipService": "0",
                    "enableCrossBorderCollection": "0",
                    "enableCustomCouponCodes": "0",
                    "payoutAllowedIpAddressList": null,
                    "freezeSettlement": null,
                    "giftCardFundingAccountId": "51",
                    "membershipDebitAccountId": "52",
                    "createdAt": "2022-03-25 12:20:52",
                    "lastUpdatedAt": null,
                    "lastUpdatedByStaffId": null
                },
                "typeText": "business account",
                "roleText": "owner",
                "merchantId": "2"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 43
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T15:39:08+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

List Accounts

Displays paginated list of the accounts

Endpoint

GET /backoffice/user/list-accounts

Request Params

            [['id', 'userId', 'type', 'balanceAmount', 'withheldBalanceAmount', 'isCsaOverdraftAccount', 'isActive'], 'safe'],
            [['_id', 'currencyCode', 'name', 'description', 'avatarUrl', 'label', 'createdAt', 'lastUpdatedAt'], 'safe'],

Response

Paginated list of the accounts

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "id": "245",
                "_id": "ACD2WZI9U8S1KVPGCP0P",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "244",
                "_id": "AC0OXI6A7D7GFVO7MZFY",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "243",
                "_id": "ACEO821OCHA1WDKN2VKT",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "242",
                "_id": "ACBOSFFR7YXXWH4DHFMT",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "241",
                "_id": "ACAEUWL0Y4E3IAPAAULB",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "240",
                "_id": "ACXQ92KW6CEJFJJQJI8K",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "239",
                "_id": "ACIE0EQB5AWXBA321I4O",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "0",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "238",
                "_id": "ACPF871S7AHZZBSXRP5R",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "0",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "237",
                "_id": "ACAP25LFKULUM9XWY3B9",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "236",
                "_id": "ACBVLJ9Z11GIYV276DKT",
                "userId": "46",
                "currencyCode": "NGN",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:49",
                "lastUpdatedAt": null,
                "user": {
                    "id": "46",
                    "_id": "syska4f7adg8ro5e",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "NGN",
                    "residenceCountryCode": "NG",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Nigeria",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:49",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "235",
                "_id": "ACVF80H2YASW1F4FVWCA",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "234",
                "_id": "ACFAH4F28EDZF22ZDG5J",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "233",
                "_id": "ACL8TXZJ1FCPQV1H0SYT",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "232",
                "_id": "AC81GD2ESEZ1K21FP294",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "231",
                "_id": "ACPJ9CMFLSPUSV4I7H6Y",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "230",
                "_id": "ACAJEPOGWHLX4H8XT0MD",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "229",
                "_id": "ACZOXIZO57DFHUM23R5Z",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "0",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "228",
                "_id": "ACBAFO376VM3PIV9MRZF",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "0",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "227",
                "_id": "ACESRQGEQPKE4C6QPVWO",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            },
            {
                "id": "226",
                "_id": "ACZUPIC5XCKUP8MFE0B2",
                "userId": "44",
                "currencyCode": "CDF",
                "type": "2",
                "balanceAmount": 0,
                "withheldBalanceAmount": 0,
                "name": "",
                "description": "",
                "avatarUrl": "https://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                "label": "TYPE_CSA",
                "isCsaOverdraftAccount": "1",
                "isActive": "1",
                "createdAt": "2022-03-25 15:44:43",
                "lastUpdatedAt": null,
                "user": {
                    "id": "44",
                    "_id": "sysesdbubsjcmi3i",
                    "ufId": null,
                    "orgUserId": null,
                    "scopeId": null,
                    "roleId": "1000",
                    "primaryCurrencyCode": "CDF",
                    "residenceCountryCode": "CD",
                    "type": "30",
                    "firstName": null,
                    "lastName": null,
                    "displayName": "Tranzak System Account | Democratic Republic of the Congo",
                    "verifiedName": null,
                    "paymentPin": null,
                    "phoneNumber": null,
                    "language": null,
                    "timeZone": "Africa/Douala",
                    "isRNVerified": "0",
                    "loginEnabled": "0",
                    "avatarUrl": null,
                    "defaultSendingAccountId": null,
                    "canReceivePayment": "1",
                    "canSendPayment": "1",
                    "createdAt": "2022-03-25 14:44:43",
                    "lastUpdatedAt": null
                },
                "typeText": "CSA account"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 245
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-03-25T15:40:47+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.046s",
        "userId": "1",
        "staffId": "1",
        "staffFirstName": null
    }
}

mapi

Account (mapi)

Info

Displays basic account info

Endpoint

GET /mapi/v1/account/info

Filter parameters

None

Response

Account list

{
    "data": {
        "merchant": {
            "balance": 0,
            "totalBalance": 0,
            "currencyCode": "XAF",
            "name": "merchant (default) account",
            "description": "merchant default account"
        },
        "primary": {
            "balance": 996000,
            "currencyCode": "XAF",
            "name": "primary account",
            "description": "primary account"
        }
    },
    "success": true,
    "dateTime": "2022-02-16T12:01:03+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.066s",
        "userId": "ff1ruzi3vz5o"
    }
}

Merchant Sub-accounts

Displays list of sub-accounts (with pagination)

Endpoint

GET /mapi/v1/account/list-subaccounts

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "MSATSOWXLL7CP5T5OW1Q",
                "enableManualSettlement": null,
                "apiKeyId": null,
                "withheldBalanceAmount": "0",
                "lastUpdatedAt": null,
                "createdAt": "2022-02-16 11:31:23",
                "name": "Default merchant account",
                "description": "",
                "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                "balanceAmount": 0,
                "currencyCode": "XAF",
                "type": "5",
                "typeText": "Merchant account (Default)",
                "isActive": "1"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 1
    },
    "success": true,
    "dateTime": "2022-02-16T12:08:38+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.052s",
        "userId": "ff1ruzi3vz5o"
    }
}

Merchant Sub-accounts

Displays details of a merchant account

Endpoint

GET /mapi/v1/account/view-subaccount?accountId=<ID>

{
    "data": {
        "accountId": "MSATSOWXLL7CP5T5OW1Q",
        "apiKeyId": null,
        "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
        "balanceAmount": 0,
        "createdAt": "2022-02-16 11:31:23",
        "createdByUserId": 42,
        "description": "",
        "enableManualSettlement": null,
        "isActive": 1,
        "lastUpdatedAt": null,
        "name": "",
        "withheldBalanceAmount": 0
    },
    "success": true,
    "dateTime": "2022-02-16T12:10:11+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.05s",
        "userId": "ff1ruzi3vz5o"
    }
}

Introduction to MAPI

MAPI = Merchant API . This API describes how external agents and systems hosted outside Tranzak ecosystem can consume resources on Tranzak.

Base URL

The Base URL is staging-api.tranzak.me/mapi/v1/

Request Method

For consistency, all requests that will create/update data in the backend shall be accessed via https POST requests. Read access will be carried out via https GET .

Authentication

Authentication will be carried out using the merchant API authentication guidelines using keys. The following attributes will be used for authentication

  1. App ID - used for identifying the app
  2. Collection Key - Used to authorize the app to perform collection functions
  3. Disbursement key - used to authorize the to access DISBURSEMENT functions
  4. Environment - Environment may be sandbox or production : sets the target environment to use

Header param

The following authentication parameters MUST be specified in all requests:

Parameter Type required Description
X-APP-ID String true The App ID
X-APP-KEY String true The key to be used .Two kinds of keys exists : collections (receiving money) and disbursement (outbound payments) keys.
X-APP-ENV String true The target environment . Options : sandbox or production

Receiving Money

Use appId + collection key + environment

Sending money from account

Use appId + disbursement key + environment

Keys are managed in the user center

Authentication

Authentication headers are used. The following headers are required for authentication to succeed

  1. X-APP-ID - AppId
  2. X-APP-KEY - the key (collection/disbursement)
  3. environment : sandbox or prod

Invoice (mapi)

Merchant invoice

Create (from scratch)

Creates an invoice from scratch

Endpoint

POST /mapi/v1/invoice/create

Request Body Parameters

Parameter Type required Description
title String true Invoice title
currencyCode String true the invoice currency code. Defaults to user's currency code
userInvoiceRef String false custom invoice ref
totalTax String false tax if applicable. default : 0
billToName String false Name of invoice
billToAddress String false custom invoice ref
billToEmail String false custom invoice ref
memo String false Memo
activateUponCreation String false Make invoice available for payment
clientNote String false payer's note
items String true JSON representation of the items (see request body)
receivingAccountId String false The MERCHANT account type account ID that the invoice will be paid into. Default : merchant default account
issueDate String false Invoice date of issue
dueDate String false Invoice due date
acceptPartialPayments Boolean false Partial payments accepted?
{
    "invoiceId" : "IVQSNEN39CSIKUAVYKD7",
    "userInvoiceRef" : "5555" ,
    "title" : "invoice tiles" ,
    "totalTax" : 100,
    "billToName" : "Tranzak Descriptinaria" ,
    "billToAddress" : "Rue Drouot" ,
    "billToEmail" : "trrr@tranzak.net" ,
    "memo" : "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s" ,
    "type" : 1,
    "clientNote" : "Client note is cool" ,
    "acceptPartialPayments" : 1,
    "activateUponCreation" : 1,
    "receivingAccountId" : "MSAQM5SZWXUMAJANC78J",
 
    
    
"items" : [
    {
        "itemDescription" : "some item" ,
        "unitPrice" : 1000,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item2" ,
        "unitPrice" : 100,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item2" ,
        "unitPrice" : 100,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item3" ,
        "unitPrice" : 100,
        "quantity" : 2
    }
]
 
 
}

Response

See VIEW section

Upload an invoice

Uploads an invoice file

Request body

Parameter Type required Description
title String true Invoice title
fileUrl String true file URL
amount String true the amount (as shown in the invoice file)
currencyCode String true the invoice currency code. Defaults to user's currency code
userInvoiceRef String false custom invoice ref
totalTax String false tax if applicable. default : 0
billToName String false Name of invoice
billToAddress String false custom invoice ref
billToEmail String false custom invoice ref
memo String false Memo
activateUponCreation String false Make invoice available for payment
clientNote String false payer's note
receivingAccountId Number false The MERCHANT account type account ID that the invoice will be paid into. Default : merchant default account
issueDate String false Invoice date of issue
dueDate String false Invoice due date
acceptPartialPayments Boolean false Partial payments accepted?

Response

The response is described in the VIEW section

Edit/Update Invoice

Updates an invoice model

Endpoint

POST /v1/invoice/update

Request Body Parameters

Parameter Type required Description
_id String true GC code

See [[CREATE]] for other params

Response

See the VIEW section

View

Shows invoice data

Endpoint

GET /v1/invoice/view?_id=INVOICE_ID

Request Body Parameters

Issues a GET request

Response

{
    "data": {
        "_id": "IV220216C7IX5KJNZFXM",
        "acceptPartialPayments": 1,
        "billToAddress": "Rue Drouot",
        "billToEmail": "trrr@tranzak.net",
        "billToName": "Tranzak Descriptinaria",
        "billToUserId": null,
        "cancellationNote": "",
        "clientNote": "Client note is cool",
        "createdAt": "2022-02-16 12:20:13",
        "createdByUserId": 42,
        "currencyCode": "XAF",
        "dueDate": "2022-02-16",
        "fileUrl": null,
        "hasExternalPayment": null,
        "hasInternalPayment": null,
        "issueDate": "2022-02-16",
        "jsonData": [
            {
                "itemDescription": "some item",
                "quantity": 2,
                "unitPrice": 1000
            },
            {
                "itemDescription": "some item2",
                "quantity": 2,
                "unitPrice": 100
            },
            {
                "itemDescription": "some item2",
                "quantity": 2,
                "unitPrice": 100
            },
            {
                "itemDescription": "some item3",
                "quantity": 2,
                "unitPrice": 100
            }
        ],
        "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
        "orgUserId": 42,
        "status": "unpaid",
        "submittedAt": null,
        "subtotal": 2600,
        "title": "invoice tiles",
        "totalExternalPaymentAmount": null,
        "totalPaid": 0,
        "totalTax": 100,
        "type": 1,
        "updatedAt": null,
        "userInvoiceRef": "5555"
    },
    "success": true,
    "dateTime": "2022-02-16T12:20:13+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.051s",
        "userId": "ff1ruzi3vz5o"
    }
}

List

List items

Endpoint

GET /v1/invoice/list

Filter parameters

Parameter Type required Description
status Number true [1 - draft, 2- pending , 3-active , 4-closed , 5-cancelled , 6-suspended]

Response

Listing

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "IV220216HB6561BKF6I1",
                "receivingAccountId": "MSATSOWXLL7CP5T5OW1Q",
                "userInvoiceRef": "5555",
                "title": "invoice tiles",
                "totalTax": 100,
                "subtotal": 2600,
                "totalPaid": 0,
                "currencyCode": "XAF",
                "issueDate": "2022-02-16",
                "dueDate": "2022-02-16",
                "billToName": "Tranzak Descriptinaria",
                "billToAddress": "Rue Drouot",
                "billToEmail": "trrr@tranzak.net",
                "billToUserId": null,
                "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
                "clientNote": "Client note is cool",
                "acceptPartialPayments": "1",
                "status": "unpaid",
                "cancellationNote": "",
                "hasInternalPayment": "0",
                "hasExternalPayment": "0",
                "totalExternalPaymentAmount": "0",
                "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                "fileUrl": null,
                "submittedAt": null,
                "createdAt": "2022-02-16 12:20:52",
                "updatedAt": null,
                "receivingAccount": {
                    "_id": "MSATSOWXLL7CP5T5OW1Q",
                    "name": "",
                    "description": ""
                }
            },
            {
                "_id": "IV220216C7IX5KJNZFXM",
                "receivingAccountId": "MSATSOWXLL7CP5T5OW1Q",
                "userInvoiceRef": "5555",
                "title": "invoice tiles",
                "totalTax": 100,
                "subtotal": 2600,
                "totalPaid": 0,
                "currencyCode": "XAF",
                "issueDate": "2022-02-16",
                "dueDate": "2022-02-16",
                "billToName": "Tranzak Descriptinaria",
                "billToAddress": "Rue Drouot",
                "billToEmail": "trrr@tranzak.net",
                "billToUserId": null,
                "memo": "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s",
                "clientNote": "Client note is cool",
                "acceptPartialPayments": "1",
                "status": "unpaid",
                "cancellationNote": "",
                "hasInternalPayment": "0",
                "hasExternalPayment": "0",
                "totalExternalPaymentAmount": "0",
                "jsonData": "[{\"itemDescription\":\"some item\",\"quantity\":2,\"unitPrice\":1000},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item2\",\"quantity\":2,\"unitPrice\":100},{\"itemDescription\":\"some item3\",\"quantity\":2,\"unitPrice\":100}]",
                "fileUrl": null,
                "submittedAt": null,
                "createdAt": "2022-02-16 12:20:13",
                "updatedAt": null,
                "receivingAccount": {
                    "_id": "MSATSOWXLL7CP5T5OW1Q",
                    "name": "",
                    "description": ""
                }
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 2
    },
    "success": true,
    "dateTime": "2022-02-16T12:22:32+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.056s",
        "userId": "ff1ruzi3vz5o"
    }
}

Add a payment

Adds a non-Tranzak payment using some other source

Endpoint

POST /v1/invoice/add-payment

Filter parameters

Parameter Type required Description
_id Number true invoice ID
amount Number true amount in invoice currency
paymentSourceId Number true payment source ID 2 => PAYMENT_SOURCE_CASH , 3 => PAYMENT_SOURCE_OTHER_MEANS
note Number true a note
{
    "_id" : "IV375WEJ3BEBPRJ4ZBS3",
    "amount" : 1   ,
    "paymentSourceId" : 2,
    "note" : "We added payment  !"
  
}

Response

See VIEW-PAYMENT section

View Payment

Views an invoice payment

Endpoint GET /invoice/view-payment?id=PAYMENT_ID

{
    "data": {
        "_id": "IPPHLF5FABCVF2STE1AJ",
        "amount": 1,
        "createdAt": "2022-02-16 12:34:29",
        "createdByUserId": 42,
        "invoiceId": "IV220216HB6561BKF6I1",
        "note": "We added payment  !",
        "paymentId": null,
        "paymentSource": "paid via cash",
        "paymentSourceId": 2
    },
    "success": true,
    "dateTime": "2022-02-16T12:35:58+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.049s",
        "userId": "ff1ruzi3vz5o"
    }
}

List Payments

List payments made to invoices. Use filters to filter through list

Endpoint GET /invoice/list-payments

Request Body (filters)

Parameter Type required Description
_id String false Payment ID
invoiceId String false _id of invoice
paymentId String false payment Id
paymentSourceId String false source ID

RESPONSE

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "IPPHLF5FABCVF2STE1AJ",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:34:29",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            },
            {
                "_id": "IPELPT7YVSEVOMVUQ85F",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:33:37",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            },
            {
                "_id": "IPL8Y0YZRDXOIMG67RDJ",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:33:29",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            },
            {
                "_id": "IPPVRVIJI59TVLFQ6PKM",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:33:10",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 4
    },
    "success": true,
    "dateTime": "2022-02-16T12:44:07+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "ff1ruzi3vz5o"
    }
}

Other actions

Cancel

Cancels an invoice

Endpoint

POST /v1/invoice/cancel

Request Body

{
    "invoiceId": "IV220216HB6561BKF6I1"
}

Submit

Submits an invoice in draft status and make it available to receive payment

Endpoint

POST /v1/invoice/submit

Request Body

{
    "invoiceId": "IV220216HB6561BKF6I1"
}

Create Transaction

Creates a transaction - to be called by the payer

Endpoint

POST /v1/invoice/create-transaction

Request Body

{
    "invoiceId": "IV220216HB6561BKF6I1"
}

Mark as paid

Marks the invoice as paid

Endpoint

POST /v1/invoice/mark-as-paid

Request body params

Parameter Type required Description
_id String true Payment ID
paymentSourceId String true _id of invoice
note String true payment Id
{
  "_id": "IVRYCSMGIEW2OO6TMUPY",
   "paymentSourceId" : 1,
   "note" : "We closed this invoice !"
}

Move to draft

Moves an UNPAID invoice to draft status so that it can be edited

Endpoint

POST /v1/invoice/move-to-draft

Request Body

{
    "invoiceId": "IV220216HB6561BKF6I1"
}

Payout | Mass Payment (mapi)

Payout or mass payment is a service that enables making payments to one or more users. The beneficiaries can be INTERNAL or EXTERNAL (bank, MWP, Visa Prepaid cards etc) ; There are two ways of creating payouts:

  1. By manually adding recipients via JSON payload;
  2. By uploading a payout file using the relevant Payout template (MWP, internal, Bank transfer, prepaid card transfer)

Four services , using different templates are supported :

  1. Internal transfer - transfer funds to one or more tranzak internal users. Users will be searched ufId
  2. Mobile wallet transfer - send money to one or more mobile wallet users
  3. Bank transfer - send funds to bank accounts
  4. Pre-paid card transfer - top-up pre-paid cards

Each of the 4 types listed above supports either creating a request via JSON or via file upload using separate endpoints.

IMPORTANT NOTES

  1. Note that the user's default currency code will be used for the transaction
  2. The update endpoints are to be used exclusively by the service types created via JSON config.
  3. For requests created via file upload, all changes to the content must be done in the uploaded file by the user and re-uploaded.

Create Internal Transfer (JSON)

Request endpoint

POST /mapi/v1/payout/transfer

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID. If set, it must be UNIQUE
{
    "title": "Payout cool title",
    "currencyCode" : "USD" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    
    "receivers" : [
     {
        "tranzakId" : "tz13",
        "accountName" : "Dan Internal",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },
    {
        "tranzakId" : "tz14",
        "accountName" : "Dan Internal",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary2",
        "payerNote" : "Transfer to user2",
        "payerReferenceId" : "22222"
    },
    {
        "tranzakId" : "tz15",
        "accountName" : "Dan Internal",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary3",
        "payerNote" : "Transfer to user3",
        "payerReferenceId" : "33333"
    }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

UPLOAD Internal Transfer FILE

This endpoint creates an internal transfer via file upload

Endpoint

POST /mapi/v1/payout/upload-transfer-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

Creates a MOBILE MONEY TRANSFER via JSON

This endpoint creates an mobile money transfer via JSON configuration

Request endpoint

POST /mapi/v1/payout/transfer-to-mobile-wallet

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "XAF" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
      {
        "mobileNumber" : "+23767 4728670",
        "accountName" : "Dan Momo",	
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    } 
    ]
 
}

Response

The response is a payout object . See the VIEW section.

UPLOAD Mobile Money Transfer FILE

This endpoint creates an mobile wallet transfer via file upload

Endpoint

POST /mapi/v1/payout/upload-mobile-wallet-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

Creates a BANK DEBIT TRANSFER via JSON

This endpoint creates an bank transfer via JSON configuration

Request endpoint

POST /mapi/v1/payout/transfer-to-bank-account

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "XAF" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
       {
        "accountNumber" : "10001111111111",
        "accountName" : "Paddy Wak Chuk",
        "bankCode" : "10033",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary|UBA",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "111111"
    },

       {
        "accountNumber" : "100022222222",
        "accountName" : "Jezz Tabac",
        "bankCode" : "10033",
        "branchCode" : "0007",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello salary|UBA",
        "payerNote" : "Transfer to user",
        "payerReferenceId" : "22222"
    },    

    {
        "accountNumber" : "2000222222222",
        "accountName" : "XiaLai Tui",
        "bankCode" : "10005",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello XiaLai|AFB",
        "payerNote" : "Transfer to XiaLai",
        "payerReferenceId" : "2222222"
    },
    {
        "accountNumber" : "3330000000000333",
        "accountName" : "Wizzy Brown",
        "bankCode" : "10005",
        "branchCode" : "0005",
        "ribCode" : "56" ,
        "amount" : "1000",
        "beneficiaryNote" : "Hello wizz|AFB",
        "payerMessage" : "Transfer to wizz",
        "payerReferenceId" : "3333333"
    }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

UPLOAD Bank Transfer FILE

This endpoint creates an mobile wallet transfer via file upload

Endpoint

POST /mapi/v1/payout/upload-bank-transfer-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

Creates a PREPAID CARD TOPUP via JSON

This endpoint creates an prepaid card topup via JSON configuration

Request endpoint

POST /mapi/v1/payout/transfer-to-prepaid-card

Request body params

Parameter Type required Description
title String true Title of this PO
feeIsPaidByReceiver int false whether fee is paid by receiver
isPriority int false Whether priority queue should be used. Paid service
receivers array true Array list of recipients (see payload)
mchTransactionRef array false The creator's custom reference ID
{
    "title": "Payout cool title",
    "currencyCode" : "XAF" ,
    "feeIsPaidByReceiver": 1,
    "isPriority": 1,
    "mchTransactionRef" : "ref12345566666", 
    "receivers" : [
     {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        },
        {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        },
        {
            "accountName" : "Prepaid Cookie Monster",
            "prepaidCardFirst6Digits" : "111111",
            "prepaidCardLast4Digits" : "1111",
            "prepaidCardCustomerId" : "111100111",
            "amount" : "1000",
            "beneficiaryNote" : "Hello salary",
            "payerNote" : "Transfer to user",
            "payerReferenceId" : "111111"
        }
    ]
 
}

Response

The response is a payout object . See the VIEW section.

UPLOAD Prepaid Card Topup FILE

This endpoint creates an pre-paid card topup via file upload

Endpoint

POST /mapi/v1/payout/upload-prepaid-card-transfer-file

Request body params

Only the file (created from the relevant template) shall be uploaded. All changes to the details of the payout shall be amended in the file and re-submitted (in case of changes);

Response

See the VIEW section for the response

View

View the details of a PO

Request body params

GET /fapi/payout/view?payoutId=<payoutId>

Params

Either payoutId or mchTransactionRef may be used to obtain the payout object\

Parameter Type required Description
payoutId String false ID of the PO
mchTransactionRef String false custom transaction reference

TYPES

    const TYPE_INTERNAL_TRANSFER = 1;
    const TYPE_MOBILE_WALLET_TRANSFER = 2;
    const TYPE_BANK_DEBIT_TRANSFER = 3; //
    const TYPE_VISA_PREPAID_TRANSFER = 4; //

STATUSES

    const STATUS_PENDING =  1 ;
    const STATUS_PAID = 2 ;  // The payout has been paid to
    const STATUS_PROCESSING = 3; // Batch job launched
    const STATUS_COMPLETED = 4 ; //Completed
    const STATUS_CANCELLED = 5 ; //Cancelled
    const STATUS_FAILED = 6 ; // Failed
    const STATUS_INTERNAL_TRANSFER_COMPLETED = 7 ; // internal transfer completed

Response

The following is response for a sample internal transfer

{
    "data": {
        "_id": "POK0G5FQAQE8H124Y5TH",
        "completedAt": null,
        "createdAt": "2022-02-16 14:10:28",
        "currencyCode": "XAF",
        "description": null,
        "feeIsPaidByReceiver": 1,
        "isCreatedViaFileUpload": 0,
        "isPriority": 1,
        "mchTransactionRef": "ref12345566666",
        "priorityFee": 200,
        "receivers": [
            {
                "mobileNumber": "+23767 4728670",
                "accountName": "Dan Momo",
                "amount": "1000",
                "beneficiaryNote": "Hello salary",
                "payerNote": "Transfer to user",
                "payerReferenceId": "111111"
            }
        ],
        "spreadSheetReportFilePath": null,
        "status": "pending",
        "title": "Payout cool title",
        "totalAmount": 1000,
        "totalFailedTransactionAmount": 0,
        "totalFee": 0,
        "totalNumberFailedTransactions": 0,
        "totalNumberOfReceivers": 1,
        "type": "mobile money transfer"
    },
    "success": true,
    "dateTime": "2022-02-16T14:10:39+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.045s",
        "userId": "ff1ruzi3vz5o"
    }
}

List

Paginated list of PO

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "POK0G5FQAQE8H124Y5TH",
                "title": "Payout cool title",
                "createdByUserId": "42",
                "totalAmount": 1000,
                "type": "2",
                "currencyCode": "XAF",
                "mchTransactionRef": "ref12345566666",
                "description": null,
                "feeIsPaidByReceiver": "1",
                "totalFee": 0,
                "priorityFee": "200",
                "isPriority": "1",
                "status": "1",
                "totalNumberOfReceivers": "1",
                "isCreatedViaFileUpload": "0",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-16 14:10:28",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "mobile money transfer"
            },
            {
                "_id": "POZ8U7CYV2HYD0Y4YTSM",
                "title": "This is a mass payment request",
                "createdByUserId": "42",
                "totalAmount": 10000,
                "type": "3",
                "currencyCode": "XAF",
                "mchTransactionRef": "ABC10001",
                "description": null,
                "feeIsPaidByReceiver": "0",
                "totalFee": 100,
                "priorityFee": "0",
                "isPriority": "0",
                "status": "1",
                "totalNumberOfReceivers": "10",
                "isCreatedViaFileUpload": "1",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-16 14:07:13",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "bank transfer"
            },
            {
                "_id": "PO6BGO1KKB4L3LGGPG0G",
                "title": "This is a mass payment request",
                "createdByUserId": "42",
                "totalAmount": 10000,
                "type": "2",
                "currencyCode": "XAF",
                "mchTransactionRef": "ABC10001",
                "description": null,
                "feeIsPaidByReceiver": "0",
                "totalFee": 100,
                "priorityFee": "0",
                "isPriority": "0",
                "status": "1",
                "totalNumberOfReceivers": "10",
                "isCreatedViaFileUpload": "1",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-16 14:03:34",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "mobile money transfer"
            },
            {
                "_id": "POY4IKERPA66PT59TZ2D",
                "title": "This is a mass payment request",
                "createdByUserId": "42",
                "totalAmount": 10000,
                "type": "1",
                "currencyCode": "XAF",
                "mchTransactionRef": "ABC10001",
                "description": null,
                "feeIsPaidByReceiver": "0",
                "totalFee": 10,
                "priorityFee": "0",
                "isPriority": "0",
                "status": "1",
                "totalNumberOfReceivers": "10",
                "isCreatedViaFileUpload": "1",
                "spreadSheetReportFilePath": null,
                "createdAt": "2022-02-16 14:01:02",
                "completedAt": null,
                "payment": null,
                "statusText": "pending",
                "typeText": "internal transfer"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 4
    },
    "success": true,
    "dateTime": "2022-02-16T14:11:18+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.042s",
        "userId": "ff1ruzi3vz5o"
    }
}

List Transfers (jobs) for a payout

List all the transfers that have been made for a particular Payout request (if payoutId has been set) or for ALL payout requests. Filter by payoutId

request body params

GET /payout/list-jobs?payoutId=POAMB0GRBDWPMYCVMKNN

Filters

Parameter Type required Description
id String false transfer iD
payoutId String false ID of the PO
status int false job status e.g 1-pending, 2-processing, 3-pending-settlement, 4-completed , 5-failed
type int false Filter by type (See above)

The following params may be used for filtering :

currencyCode, beneficiaryBankName, beneficiaryAccountNumber, 
beneficiaryAccountName, partnerTransactionRefId, payerNote, beneficiaryNote,
beneficiaryRibCode, beneficiaryPrepaidFirst6Digits, beneficiaryPrepaidLast4Digits, beneficiaryPrepaidCustomerId
{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "id": "12",
                "payoutId": "PO5TQWPZJ4C4KT80SCJ7",
                "amount": 1000,
                "beneAmount": 999,
                "feeAmount": 1,
                "currencyCode": "XAF",
                "beneficiaryAccountNumber": "tz25",
                "beneficiaryAccountName": "Dan Internal",
                "beneficiaryBankCode": null,
                "beneficiaryBankName": "",
                "beneficiaryNote": "Hello salary3",
                "beneficiaryBranchCode": null,
                "beneficiaryRibCode": null,
                "beneficiaryPrepaidFirst6Digits": null,
                "beneficiaryPrepaidLast4Digits": null,
                "beneficiaryPrepaidCustomerId": null,
                "partnerTransactionRefId": null,
                "payerNote": "Transfer to user3",
                "payerReferenceId": "33333",
                "status": "failed",
                "errorCode": "2",
                "message": "Tranzak user tz25 was not found.",
                "debugMessage": "core\\models\\payment\\payout\\PayoutJob::generateInternalBeneAccount | user tz25 was not found. search was performed  using login and _id attributes",
                "createdAt": "2022-02-16 14:24:44",
                "lastUpdatedAt": "2022-02-16 15:24:44",
                "errorText": "user not found"
            },
            {
                "id": "11",
                "payoutId": "PO5TQWPZJ4C4KT80SCJ7",
                "amount": 1000,
                "beneAmount": 999,
                "feeAmount": 1,
                "currencyCode": "XAF",
                "beneficiaryAccountNumber": "tz24",
                "beneficiaryAccountName": "Dan Internal",
                "beneficiaryBankCode": null,
                "beneficiaryBankName": "",
                "beneficiaryNote": "Hello salary2",
                "beneficiaryBranchCode": null,
                "beneficiaryRibCode": null,
                "beneficiaryPrepaidFirst6Digits": null,
                "beneficiaryPrepaidLast4Digits": null,
                "beneficiaryPrepaidCustomerId": null,
                "partnerTransactionRefId": null,
                "payerNote": "Transfer to user2",
                "payerReferenceId": "22222",
                "status": "failed",
                "errorCode": "2",
                "message": "Tranzak user tz24 was not found.",
                "debugMessage": "core\\models\\payment\\payout\\PayoutJob::generateInternalBeneAccount | user tz24 was not found. search was performed  using login and _id attributes",
                "createdAt": "2022-02-16 14:24:44",
                "lastUpdatedAt": "2022-02-16 15:24:44",
                "errorText": "user not found"
            },
            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 12
    },
    "success": true,
    "dateTime": "2022-02-16T14:56:22+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "ff1ruzi3vz5o"
    }
}

View a Transfer Job

Displays details of the job. A job is a single transaction inside a mass payment request.

Request Endpoint

```GET /payout/view-transfer?jobId=3 `

Filters

Parameter Type required Description
id int false job iD

Response

{
    "data": {
        "amount": 1000,
        "beneAmount": 999,
        "beneficiaryAccountName": "Dan Internal",
        "beneficiaryAccountNumber": "tz25",
        "beneficiaryBankCode": null,
        "beneficiaryBankName": "",
        "beneficiaryBranchCode": null,
        "beneficiaryNote": "Hello salary3",
        "beneficiaryPrepaidCustomerId": null,
        "beneficiaryPrepaidFirst6Digits": null,
        "beneficiaryPrepaidLast4Digits": null,
        "beneficiaryRibCode": null,
        "createdAt": "2022-02-16 14:24:44",
        "currencyCode": "XAF",
        "errorCode": 2,
        "errorCodeText": "user not found",
        "feeAmount": 1,
        "id": "12",
        "lastUpdatedAt": "2022-02-16 15:24:44",
        "message": "Tranzak user tz25 was not found.",
        "partnerTransactionRefId": null,
        "payerNote": "Transfer to user3",
        "payerReferenceId": "33333",
        "payoutId": "PO5TQWPZJ4C4KT80SCJ7",
        "reportUrl": "http://staging-api.tranzak.me/fapi/mapi/payout/download-csv?_id=PO5TQWPZJ4C4KT80SCJ7",
        "status": 5,
        "statusText": "failed"
    },
    "success": true,
    "dateTime": "2022-02-16T14:57:32+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.047s",
        "userId": "ff1ruzi3vz5o"
    }
}

Payment Request(mapi)

Primary interface for collection (receiving funds)

Status Codes

    const MAPI_STATUS_PENDING = 'PENDING' ;
    const MAPI_STATUS_COMPLETED = 'SUCCESSFUL' ;
    const MAPI_STATUS_CANCELLED = 'CANCELLED' ;
    const MAPI_STATUS_CANCELLED_BY_PAYER = 'CANCELLED_BY_PAYER' ;
    const MAPI_STATUS_FAILED = 'FAILED' ;
    const MAPI_STATUS_PAYMENT_IN_PROGRESS = 'PAYMENT_IN_PROGRESS' ;
    const MAPI_STATUS_VOIDED = 'CANCELLED/REFUNDED' ;
    const MAPI_STATUS_UNKNOWN = 'UNKNOWN' ;

Status Code for Payouts

    const MAPI_PAYOUT_STATUS_PENDING = 'PENDING';
    const MAPI_PAYOUT_STATUS_PROCESSING = 'PROCESSING';
    const MAPI_PAYOUT_STATUS_FAILED = 'FAILED';
    const MAPI_PAYOUT_STATUS_COMPLETED = 'SUCCESSFUL';

Create

Creates a PP request

Endpoint

POST /mapi/v1/platform/create

Request Params

Request Body Parameters

A request may be searched by either a requestId (cortex-generated) or using a merchant customer mchTransactionRef.

Parameter Type required Description
currencyCode String(3) true The currency code
description String(255) true Description of request
currencyCode String(3) true The currency code
platformTransactionRef String(32) true A custom transaction reference to track this payment
returnUrl String(500) false URL where the payer will be redirected after payment
recipients array true List of recipients (merchants)
autoPayout array false Where to automatically disburse funds to the recipients after payment capture. Default = TRUE
payoutHoldTimeInHours array true The hold time for disbursing funds to recipients. Default = NULL = immediately ;
Recipient details
Parameter Type required Description
recipientType String() true the merchant ID type
recipientId String() true the recipient Identification
amount String() true amount
description String() true description of this payment
platformCommission String() true the commission paid to the platform owner.
mchTransactionRef String() true a custom transaction reference

recipientTypes

    const RECEIVER_TYPE_TRANZAK_APP_ID = 'app_id' ;
    const RECEIVER_TYPE_TRANZAK_ID = 'tranzak_id';
    const RECEIVER_TYPE_MOBILE_WALLET = 'mobile_wallet' ;
    const RECEIVER_TYPE_MERCHANT_ID = 'merchant_id' ;

{
    "currencyCode": "XAF",
    "description": "Merchant Payment",
    "platformTransactionRef": "2333333",    
    "returnUrl" : "https://pay.tranzak.me/platform/PFX6FYY7MUCNCD86TTMZ" ,
    "recipients": [
        {
            "recipientType": "mobile_wallet",
            "recipientId": "237674728670",
            "amount": "1000",
            "description": "Hello salary",
            "platformCommission" : 100,
            "mchTransactionRef": "1111111111"
        },
        {
            "recipientType": "mobile_wallet",
            "recipientId": "237674728670",
            "amount": "1000",
            "description": "Hello salary",
            "platformCommission" : 100,
            "mchTransactionRef": "1111111111"
        },
        {
            "recipientType": "mobile_wallet",
            "recipientId": "237674728670",
            "amount": "1000",
            "description": "Hello salary",
            "platformCommission" : 100,
            "mchTransactionRef": "1111111111"
        },                
        {
            "recipientType": "tranzak_id",
            "recipientId": "tz23",
            "amount": "1000",
            "platformCommission" : 100,
            "description": "Hello salary",
            "mchTransactionRef": "22222222222"
        },
        {
            "recipientType": "app_id",
            "recipientId": "apayjpfyl4jeqg",
            "amount": "1000",
            "description": "Hello salary",
            "mchTransactionRef": "3333333333333",
            "platformCommission" : 100
            
        }
    ]
}

Response

See the VIEW section

Create In-person payment request

Uses authCode to automatically authorize a platform payment

Request endpoint

POST /mapi/v1/platform/create-in-person-request

Request body params

See the body requires under Create section. All the params in CREATE plus the following :

Parameter Type required Description
authCode String() true the pre-authorization code
mchTransactionRef String() true a custom transaction reference

Response

See the VIEW section

Create Mobile Money payment request

Uses authCode to automatically authorize a platform payment

Request endpoint

POST /mapi/v1/platform/create-mobile-wallet-request

Request body params

See the body requires under Create section. All the params in CREATE plus the following :

Parameter Type required Description
mobileWalletNumber String() true the mobile wallet number
mchTransactionRef String() true a custom transaction reference

Response

See the VIEW section

VIEW details

Displays details of PR request

URL Endpoint

GET mapi/v1/platform/details?platformRequestId=PF10I70MF69A99TN9T81

Request URL

Parameter Type required Description
platformRequestId String() true request ID

Response

{
    "data": {
        "platformRequestId": "PFZI3B18TDBOFLI1164Y",
        "description": "Merchant Payment",
        "totalAmount": 5000,
        "totalPlatformCommission": 500,
        "autoPayout": 1,
        "totalReceiverFee": 54,
        "currencyCode": "XAF",
        "status": "PENDING",
        "delayPaymentUntilDate": null,
        "hostAppId": "21",
        "createdAt": "2022-05-18 12:08:05",
        "totalNumberOfReceivers": 5,
        "platformTransactionRef": "2333333"
    },
    "success": true,
 
}

VIEW with Recipient Details

Displays details of PR request + recipient info

URL Endpoint

GET /mapi/v1/platform/details?platformRequestId=PFP43HJR3489O9JUIE26

Request URL

Parameter Type required Description
platformRequestId String() true request ID
withRecipients String() false whether/not to display recipients

Response

{
    "data": {
        "platformRequestId": "PFZI3B18TDBOFLI1164Y",
        "description": "Merchant Payment",
        "totalAmount": 5000,
        "totalPlatformCommission": 500,
        "autoPayout": 1,
        "totalReceiverFee": 54,
        "currencyCode": "XAF",
        "status": "PENDING",
        "delayPaymentUntilDate": null,
        "hostAppId": "21",
        "createdAt": "2022-05-18 12:08:05",
        "totalNumberOfReceivers": 5,
        "platformTransactionRef": "2333333",
        "recipients": [
            {
                "recipientType": "mobile_wallet",
                "recipientId": "237674728670",
                "amount": "1000",
                "description": "Hello salary",
                "platformCommission": 100,
                "mchTransactionRef": "1111111111"
            },
            {
                "recipientType": "mobile_wallet",
                "recipientId": "237674728670",
                "amount": "1000",
                "description": "Hello salary",
                "platformCommission": 100,
                "mchTransactionRef": "1111111111"
            },
            {
                "recipientType": "mobile_wallet",
                "recipientId": "237674728670",
                "amount": "1000",
                "description": "Hello salary",
                "platformCommission": 100,
                "mchTransactionRef": "1111111111"
            },
            {
                "recipientType": "tranzak_id",
                "recipientId": "tz23",
                "amount": "1000",
                "platformCommission": 100,
                "description": "Hello salary",
                "mchTransactionRef": "22222222222"
            },
            {
                "recipientType": "app_id",
                "recipientId": "apayjpfyl4jeqg",
                "amount": "1000",
                "description": "Hello salary",
                "mchTransactionRef": "3333333333333",
                "platformCommission": 100
            }
        ]
    },
    "success": true   
}

List

Lists requests

URL Endpoint

GET /mapi/v1/platform/list

Request URL

Parameter Type required Description
platformRequestId String() true request ID
withRecipients String() false whether/not to display recipients

Response

{
    "data": {
        "list": [
            {
                "platformRequestId": "PFZI3B18TDBOFLI1164Y",
                "description": "Merchant Payment",
                "totalAmount": 5000,
                "totalPlatformCommission": 500,
                "autoPayout": 1,
                "totalReceiverFee": 54,
                "currencyCode": "XAF",
                "status": "PENDING",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 12:08:05",
                "totalNumberOfReceivers": 5,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFVA1CX8FY2YSP9C5958",
                "description": "Merchant Payment",
                "totalAmount": 5000,
                "totalPlatformCommission": 500,
                "autoPayout": 1,
                "totalReceiverFee": 54,
                "currencyCode": "XAF",
                "status": "PENDING",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:20:46",
                "totalNumberOfReceivers": 5,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFEDSQ2BIAUS18Z0TOWZ",
                "description": "Merchant Payment",
                "totalAmount": 5000,
                "totalPlatformCommission": 500,
                "autoPayout": 1,
                "totalReceiverFee": 54,
                "currencyCode": "XAF",
                "status": "PENDING",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:19:15",
                "totalNumberOfReceivers": 5,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFWPP38NFP7CQI0M2EGZ",
                "description": "Merchant Payment",
                "totalAmount": 5000,
                "totalPlatformCommission": 500,
                "autoPayout": 1,
                "totalReceiverFee": 54,
                "currencyCode": "XAF",
                "status": "PENDING",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:18:43",
                "totalNumberOfReceivers": 5,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFT02FW9KO2AMVAKTW4K",
                "description": "Merchant Payment",
                "totalAmount": 5000,
                "totalPlatformCommission": 500,
                "autoPayout": 1,
                "totalReceiverFee": 54,
                "currencyCode": "XAF",
                "status": "PENDING",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:09:56",
                "totalNumberOfReceivers": 5,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFEKZ3N43LJKP3SDVMYN",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:07:00",
                "transactionId": "PP220518I0OWVMEAAVOQ",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:07:00.822000",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFNQVVNPG96YSEIULX00",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:05:16",
                "transactionId": "PP220518D4XXWRQV4C9O",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:05:16.377638",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PF43XSWJL7R18E8DBGAE",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:03:13",
                "transactionId": "PP220518PRTPKXVUD6IM",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:03:13.350246",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFM8IQ48GGB60OZBPJ1Z",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:02:59",
                "transactionId": "PP220518HR6GLYF5DRAF",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:02:59.407227",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PF6HQLB8SBWTRSNCFED1",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:02:16",
                "transactionId": "PP220518O298KNU4697L",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:02:16.473476",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFPE0VSM4WL9JQ8SDPC4",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:02:03",
                "transactionId": "PP220518QOTQZJCT6MGT",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:02:03.083506",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFZL562NHX6IF8QZ4V4R",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 10:01:39",
                "transactionId": "PP220518WC3ZFYAC5LDY",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 11:01:39.666322",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFOKOD26PDFZFNBJC7LS",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:58:31",
                "transactionId": "PP2205180X8D7T8EDH1H",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:58:31.331204",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFY3EJ5ZAZHBSQFI3933",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:54:27",
                "transactionId": "PP220518CKIFK362E9PZ",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:54:27.233326",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFGD8ZXU3WD345H6951I",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:53:34",
                "transactionId": "PP220518HVIMBSYLDSF0",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:53:34.254753",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFHKWT98KZEXR5ZJB8P1",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:52:33",
                "transactionId": "PP220518YLAAS8QVPC7N",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:52:33.465621",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PF6527EL4QPM2OGV8UUD",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:50:20",
                "transactionId": "PP2205189VYXANHEF7E1",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:50:20.363072",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PF5HIGKSFT0A0ZWWSGAG",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:48:05",
                "transactionId": "PP220518NM8SNKX4TSPQ",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:48:05.374216",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PF8SWMPN29KW5VRUY7YN",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:46:32",
                "transactionId": "PP2205180AXD9DPJF8AJ",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:46:33.017652",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            },
            {
                "platformRequestId": "PFRZRQQXXE7HUVA4DW3L",
                "description": "Platform payment is cool",
                "totalAmount": 30,
                "totalPlatformCommission": 3,
                "autoPayout": 1,
                "totalReceiverFee": 0.18,
                "currencyCode": "USD",
                "status": "SUCCESSFUL",
                "delayPaymentUntilDate": null,
                "hostAppId": "21",
                "createdAt": "2022-05-18 09:45:27",
                "transactionId": "PP2205180TTJJDZHHC7Y",
                "payoutStatus": "SUCCESSFUL",
                "transactionTime": "2022-05-18 10:45:27.460832",
                "totalNumberOfReceivers": 3,
                "platformTransactionRef": "2333333"
            }
        ],
        "totalItems": 37,
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "currentPage": 1,
        "hasMore": true
    },
    "success": true,
 
}

Transfer

Manual disburse funds to recipients. This is applicable if autoPayout = false .

Endpoint

POST /mapi/v1/platform/transfer

Request Params

Request URL

Parameter Type required Description
platformRequestId String() true request ID
{
   "platformRequestId" : "PFNXTMUAIHXE1TOUOPBD"
}

Response

See VIEW section

Payment Request(mapi)

Primary interface for collection (receiving funds)

Status Codes

    const MAPI_STATUS_PENDING = 'PENDING' ;
    const MAPI_STATUS_COMPLETED = 'SUCCESSFUL' ;
    const MAPI_STATUS_CANCELLED = 'CANCELLED' ;
    const MAPI_STATUS_FAILED = 'FAILED' ;
    const MAPI_STATUS_PAYMENT_IN_PROGRESS = 'PAYMENT_IN_PROGRESS' ;
    const MAPI_STATUS_VOIDED = 'CANCELLED/REFUNDED' ;
    const MAPI_STATUS_UNKNOWN = 'UNKNOWN' ;

Create a request

Initiates a payment request to collect from a mobile wallet Upon creation, the mobile user will be required to authorize the payment.

Endpoint

POST /v1/request/create

Request Body Parameters

Parameter Type required Description
amount String(100) true Amount of transaction
currencyCode String(3) true 3-digit currency code
description String(255) true Description of payment
mchTransactionRef String false mch customer reference
itemDetails String false details of transaction
returnUrl String false return URL (payer will be redirected to URL after payment)
notifyUrl String false Notification URL
payerNote int false note to payer
receivingAccountId String false the receiving account (defaults to merchant defaullt account)
invoiceId String false invoice ID if this is for invoice payment
mobileWalletNumber String false The mobile wallet that will be used to authorize payment
{
    "amount": 1,
    "currencyCode" : "XAF", 
    "description" : "This is a noty note",   
    
    "receivingAccountId" : "MSAZTFNJSNA1S0VEJPIX" ,
    "mobileWalletNumber" : "23768067567"  
}

Response

See the VIEW section

Create an in-person/in-store request

Initiates an in-person /in-store payment request.

Endpoint

POST /v1/request/create-in-person-request

Request Body Parameters

Parameter Type required Description
amount String(100) true Amount of transaction
currencyCode String(3) true 3-digit currency code
description String(255) true Description of payment
authCode String TRUE REQUIRED Payer authorization code (for in-person payment)
mchTransactionRef string TRUE REQUIRED mch customer reference
itemDetails String false details of transaction
returnUrl String false return URL (payer will be redirected to URL after payment)
notifyUrl String false Notification URL
payerNote int false note to payer
receivingAccountId String false the receiving account (defaults to merchant default account)
invoiceId String false invoice ID if this is for invoice payment
{
    "amount": 10000,
    "currencyCode": "USD",
    "description": "A transaction for the world",
    "authCode": "tz2k9w1gs2xx655p8c824cb",
    "mchTransactionRef": "sssssshssssssss"
}

Response

See the VIEW section

View a request

Initiates a payment request to collect from a mobile wallet Upon creation, the mobile user will be required to authorize the payment.

Endpoint

GET /v1/request/view?requestId=REQ_ID GET /v1/request/details?requestId=REQ_ID

Request Body Parameters

A request may be searched by either a requestId (cortex-generated) or using a merchant customer mchTransactionRef.

Parameter Type required Description
requestId String(32) true Amount of transaction - requestId or mchTransactionRef must be specified
mchTransactionRef String(32) optional Merchant transaction reference - requestId or mchTransactionRef must be specified

Response

Transaction in PENDING state

{
    "data": {
        "amount": 10000,
        "creationTime": "2022-02-16T17:56:51+00:00",
        "currencyCode": "USD",
        "description": "A transaction for the world",
        "itemDetails": "",
        "links": {
            "notifyUrl": "",
            "paymentUrl": "http://staging-api.tranzak.me/fapi/mapi/request/pay?id=REQ220216CB3CDPJGIFH",
            "returnUrl": ""
        },
        "mchTransactionRef": "sssssshssssssss",
        "requestId": "REQ220216CB3CDPJGIFH",
        "transactionStatus": "pending"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-02-16T17:56:51+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.176s",
        "userId": "ff1ruzi3vz5o",
        "appId": "ff1ruzi3vz5o"
    }
}

Completed request in local currency

{
    "data": {
        "amount": 10,
        "appId": "apayjpfyl4jeqg",
        "creationTime": "2022-05-12T20:07:09+00:00",
        "currencyCode": "XAF",
        "description": "A transaction for the world",
        "itemDetails": "",
        "mchTransactionRef": "sssssshssssssss",
        "payer": {
            "ref": "***id23",
            "paymentServiceProvider": "tranzak",
            "userId": "tz23",
            "customerId": "CUSPH6J4U9OGT4GE"
        },
        "requestId": "REQ2205124C966S5KBDL",
        "transactionId": "MP2205121DMY64GQ0G68",
        "transactionStatus": "SUCCESSFUL",
        "transactionTime": "2022-05-12T20:07:09+00:00"
    },
    "success": true,
 
}

Transaction in COMPLETED (successful) state with FOREX

{
    "data": {
        "amount": 10,
        "appId": "apayjpfyl4jeqg",
        "creationTime": "2022-05-12T20:05:51+00:00",
        "currencyCode": "USD",
        "description": "A transaction for the world",
        "forex": {
            "rate": 632300000,
            "divisor": 100000000,
            "amount": 6323,
            "currencyCode": "XAF"
        },
        "itemDetails": "",
        "mchTransactionRef": "112345566666",
        "payer": {
            "ref": "***id23",
            "paymentServiceProvider": "tranzak",
            "userId": "tz23",
            "customerId": "CUSPH6J4U9OGT4GE"
        },
        "requestId": "REQ220512L08IPWTB2NK",
        "transactionId": "MP22051287LQXCWT0WKN",
        "transactionStatus": "SUCCESSFUL",
        "transactionTime": "2022-05-12T20:05:53+00:00"
    },
    "success": true,
 
}

Send Message to Payer

This interface is used to send message to the payer after completing a transaction.

Endpoint

POST /v1/request/send-payment-message

Request Body Parameters

Parameter Type required Description
requestId String true requestId
mchTransactionRef String(32) true mchTransactionRef (either requestId or mchTransactionRef is required)
title String(40) true Title of message.
messageBody String(250) true Title of message.

Params

{
    "title": "Thank you for your purchase purchase 234",
    "messageBody": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lo n an unknown printer took a galley of type and scrambas  versions of Lorem Ipsum",
    "requestId": "REQ2204010LNGOC4AJMH"
}

{
    "title": "Thank you for your purchase purchase 234",
    "messageBody": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lo n an unknown printer took a galley of type and scrambas  versions of Lorem Ipsum",
    "mchTransactionRef": "ref12345566666"
}

Response

Success or failure message

{
    "data": {
        "message": "success"
    },
    "success": true,
}

List Requests

Paginated list of requests

Endpoint

GET /request/list

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": true,
        "list": [
            {
                "requestId": "REQ220512JUJ9VVRTGTW",
                "status": "pending",
                "amount": 1000,
                "currencyCode": "XAF",
                "description": "Merchant Payment",
                "itemDetails": "",
                "mchTransactionRef": "2333333",
                "creationTime": "2022-05-12 19:49:48"
            },
            {
                "requestId": "REQ2205126SURX2ZS0EF",
                "status": "pending",
                "amount": 1000,
                "currencyCode": "XAF",
                "description": "Merchant Payment",
                "itemDetails": "",
                "mchTransactionRef": "2333333",
                "creationTime": "2022-05-12 19:49:47"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 2,
        "totalItems": 18
    },
    "success": true,
 
}

Test API (mapi)

Tests that the API is functional. Send a PING request and get a PONG response

Endpoint

GET /mapi/v1/test/ping

Filter parameters

None

Response

Account list

{
    "data": {
        "response": "pong"
    },
    "success": true,
    "dateTime": "2022-02-16T12:01:19+00:00",
    "lang": "fr-FR",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.055s",
        "userId": "ff1ruzi3vz5o"
    }
}

Transaction (mapi)

View, update, capture a transaction

Update a transaction

This call is for updating a transaction in pending state in preparation for during the capture process.

Endpoint

POST /v1/transaction/update

Request Body Parameters

Parameter Type required Description
payerAccountId Number false The payment method account ID
collectedCouponId Number false the coupon ID (for merchant payments)
tipAmount Number false the tip amount in transaction currency. Applicable only to merchant transactions
giftCardId Number false Apply the gift card ID if applicable . The gift card amount will be automatically calculated based on available balance

Response

The response is a standard TRANSACTION response payload. See the transaction response section

See Transaction VIEW page

Capture a transaction

Capturing is the process of authorizing/confirming a transaction.

Endpoint

POST /v1/transaction/capture

Request Body Parameters

Parameter Type required Description
payerAccountId Number false The payment method account ID (Set if the payer uses a diff PM)
paymentPin Number true the user's 6-digit payment PIN used for authorizing transactions

Response

Response is standard Transaction payload response.

View transaction

Views transaction details. The details of a transaction will vary slightly depending on :

  1. Whether the current user is the payer or beneficiary.
  2. Whether the transaction is PENDING or in TERMINAL (completed/refunded/failed) state .

GET /v1/transaction/view?id=_TRANSACTION_ID

Request Body Parameters

Parameter Type required Description
_id String true The transaction ID

Response

Response is standard Transaction payload response. The payload for PAYER and BENEFICIARY are slightly different. the resulting payload will be generated based on the current user

PAYER's payload for transaction in PENDING State

{
    "data": {
        "_id": "MP2202161MOESVEUKUJ3",
        "amount": 1,
        "co": 1,
        "completedAt": "2022-02-16 19:00:59.111505",
        "couponDiscount": 0,
        "createdAt": "2022-02-16 18:00:59.102474",
        "currencyCode": "USD",
        "description": "A transaction for the world",
        "isInitiatiatedByPayer": true,
        "itemDetails": "",
        "mchTransactionRef": "sssssshssssssss",
        "payee": {
            "_id": "dadb46c4d7a04a4ebf8717eecfdba825",
            "displayName": null,
            "beneficiaryAccountNumber": null,
            "isVerified": null,
            "avatarUrl": null,
            "note": "",
            "netAmount": 565
        },
        "payer": {
            "_id": "tz21",
            "displayName": "tz21",
            "avatarUrl": null
        },
        "returnUrl": "",
        "service": {
            "type": "payment",
            "_id": 43
        },
        "status": "successful",
        "tipAmount": 0,
        "type": "merchant payment"
    },
    "success": true,
    "debugInfo": null,
    "debug": {
        "lang": "en-US",
        "dateTime": "2022-02-16T18:02:53+00:00",
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.05s",
        "userId": "ff1ruzi3vz5o",
        "appId": "ff1ruzi3vz5o"
    }
}

Payer's payload For transaction in TERMINAL (completed) state

{
    "data": {
        "_id": "MP220120POU1NRP84W0O",
        "amount": 1000,
        "bene": {
            "displayName": "tz12",
            "beneficiaryAccountId": "tz12",
            "isVerified": 0,
            "avatarUrl": null,
            "note": null,
            "netAmount": 900
        },
        "completedAt": "2022-01-20 01:39:29.664083",
        "createdAt": "2022-01-20 00:16:51.808261",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "syswkz2y65ugrmto",
            "displayName": "tz13",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null,
            "primaryCurrencyCode": "XAF"
        },
        "description": "Payment to tz12",
        "disablePayerAccountSelection": null,
        "isInitiatiatedByPayer": true,
        "itemDetails": null,
        "mchTransactionRef": null,
        "membership": {
            "planId": "MEMSHOSURRCOVX58",
            "_id": "CMDIJ6S3QAGO84Y6",
            "name": "VIP membership",
            "description": "buy at half price!",
            "avatarUrl": "https://avatar.com/image.png",
            "payerAmount": 100,
            "payerCurrencyCode": "XAF",
            "beneAmount": 100,
            "beneCurrencyCode": "XAF"
        },
        "merchantCouponAmount": 0,
        "payer": {
            "displayName": "tz13",
            "avatarUrl": null,
            "currencyCode": "XAF",
            "amount": 1000,
            "fee": 0,
            "bonusAmount": 0,
            "merchantDiscountAmount": 0,
            "giftCardAmount": 0,
            "membershipAmount": 100,
            "netAmount": 900,
            "isVerified": 0,
            "account": {
                "_id": "ACWO7CG5KTSLE7FPL1Z8",
                "name": "Primary balance",
                "description": "",
                "balance": 99999999100,
                "currencyCode": "XAF",
                "isExternal": false,
                "openingBalance": 100000000000,
                "closingBalance": 99999999100
            }
        },
        "requirePinForTransaction": 1,
        "returnUrl": null,
        "status": 2,
        "statusText": "completed",
        "tipAmount": 0,
        "type": 3,
        "typeText": "merchant payment"
    },
    "success": true,
    "dateTime": "2022-01-20T11:10:10+00:00",
    "duration": "0.061s",
    "lang": "en-US",
    "userId": 13,
    "orgUserId": 13,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

BENEFICIARY Payload in TERMINAL state

{
    "data": {
        "_id": "MP220120POU1NRP84W0O",
        "amount": 1000,
        "bene": {
            "displayName": "Merchant account (Default)",
            "beneficiaryAccountId": "tz12",
            "isVerified": 0,
            "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
            "note": null,
            "netAmount": 900,
            "currencyCode": "XAF",
            "amount": 1000,
            "fee": 0,
            "giftCardDiscountAmount": 0,
            "membershipDiscountAmount": 100,
            "account": {
                "name": "Merchant account (Default)",
                "currencyCode": "XAF",
                "_id": "MSAEDQL3H3UBK40L5H23",
                "openingBalance": 0,
                "closingBalance": 900
            }
        },
        "completedAt": "2022-01-20 01:39:29.664083",
        "createdAt": "2022-01-20 00:16:51.808261",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "sysk4ml12hm856e9",
            "displayName": "tz12",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null,
            "primaryCurrencyCode": "XAF"
        },
        "description": "Payment to tz12",
        "disablePayerAccountSelection": null,
        "isInitiatiatedByPayer": true,
        "itemDetails": null,
        "mchTransactionRef": null,
        "membership": {
            "planId": "MEMSHOSURRCOVX58",
            "_id": "CMDIJ6S3QAGO84Y6",
            "name": "VIP membership",
            "description": "buy at half price!",
            "avatarUrl": "https://avatar.com/image.png",
            "payerAmount": 100,
            "payerCurrencyCode": "XAF",
            "beneAmount": 100,
            "beneCurrencyCode": "XAF"
        },
        "merchantCouponAmount": 0,
        "payer": {
            "displayName": "tz13",
            "avatarUrl": null
        },
        "requirePinForTransaction": 1,
        "returnUrl": null,
        "status": 2,
        "statusText": "completed",
        "tipAmount": 0,
        "type": 3,
        "typeText": "merchant payment"
    },
    "success": true,
    "dateTime": "2022-01-20T11:10:35+00:00",
    "duration": "0.055s",
    "lang": "en-US",
    "userId": 12,
    "orgUserId": 12,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Poll Transaction

Polls the transaction to obtain the status. Useful for payments that use external funding sources.

Endpoint

GET /v1/transaction/poll?_id=TXN_ID

Response

{
    "status": 1,
    "statusText": "pending"
}

Refresh Inbound External Payment Status

For payments using external payment methods. If the payment too long without status update, the payer may be asked to "refresh" the status of the payment to obtain the latest status from the service provider. The delay may be caused by payment not being sent/received or provider internal issues.

Request Endpoint

GET /transaction/refresh-inbound-payment-status

{
   "_id" : "MP2202070XD9JIW6FBZS"           
}

Response

Success/failure message

    "data": {
        "message": "success"
    },

List transaction history

Displays Transaction history

Endpoint

POST /v1/transaction/list

Search Filter params

Parameter Type required Description
_id string false transaction ID
accountId string false Any account ID (could be payer or benef)
startDateTime Date false start date time
endDateTime Date false end date time
payerAccountId Number false payer's (source) account ID
beneAccountId Number false beneficiary's (destination) account ID
payerUserId String false payer UserId
beneUserId String false beneficiary's user ID
payerOrgUserId String false payer's org User ID
customerId String false Transactions involving this customer (for merchants)
payerUserId String false Filter by SID of the authorizing user
beneIdToken String false the beneficiary token (e.g mobile number, bank account number) e.g 237683160662
description String false transaction narration

Response

{
   "data": {
       "currentPage": 1,
       "hasMore": false,
       "list": [
         {
               "_id": "MP220120HZ8YSECOBMV0",
               "currencyCode": "USD",
               "amount": 100,
               "status": "2",
               "statusText": "completed",
               "type": "3",
               "typeText": "merchant payment",
               "serviceType": "1",
               "serviceTypeText": "payment",
               "description": "backdoor | demo data",
               "completedAt": "2022-01-20 13:24:29.978583",
               "isInitiatiatedByPayer": "1",
               "couponAmount": 0,
               "tipAmount": 0,
               "payerOrgUser": {
                   "merchantDiscountAmount": 0,
                   "currencyCode": "XAF",
                   "amount": 56461,
                   "fee": 0,
                   "bonusAmount": 0,
                   "giftCardAmount": 0,
                   "netAmount": 56461,
                   "_id": "sysmk14qw1xwj5ys",
                   "displayName": " ",
                   "isVerified": "0",
                   "avatarUrl": null
               },
               "payerAccount": {
                   "_id": "ACJRIPS25TL7290AR7XX",
                   "currencyCode": "XAF",
                   "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn.png",
                   "name": "Primary account",
                   "description": "",
                   "type": "1",
                   "typeText": "Primary account"
               },
               "beneUser": {
                   "currencyCode": "XAF",
                   "amount": 56461,
                   "fee": 0,
                   "netAmount": 56461,
                   "_id": "sysk4ml12hm856e9",
                   "displayName": "tz12",
                   "isVerified": "0",
                   "avatarUrl": null
               },
               "beneAccount": {
                   "_id": "MSAAQNHR8OVSDGAKVPJ6",
                   "currencyCode": "XAF",
                   "avatarUrl": "http://staging-api.tranzak.me/fapi/static/img/logos/tz-logo-btn-black.png",
                   "name": "m3",
                   "description": "Party scatter m3",
                   "type": "6",
                   "typeText": "Merchant account"
               },
               "service": {
                   "type": "1",
                   "typeText": "payment"
               }
           },
           
       ],
       "pageCount": [
           1,
           50
       ],
       "pageSize": 10,
       "totalItems": 10
   },
   "success": true,
   "dateTime": "2022-01-18T21:50:49+00:00",
   "duration": "0.077s",
   "lang": "en-US",
   "userId": 34,
   "orgUserId": 33,
   "roleId": 1000,
   "roleLabel": "super admin/owner",
   "hostname": "cortex01",
   "serverIpAddress": "192.168.137.2"
}

List SALES

Sales or sale transactions are a type of inbound transactions where :

  1. The current user is a merchant and the beneficiary ; And
  2. The receiving account type = merchant (sub)account

Request Endpoint

GET /v1/transaction/sales

Filter params

All filters applicable to transactions may be applied to sales. The following are extra filters supported by sales:

Parameter Type required Description
mchTransactionRef String false merchant custom transaction ref
giftCardPackId String false gift card pack ID
couponId String false coupon ID
withTip String false whether to filter by transactions with tips
membershipPlanId String false membership plan ID

Response

List of sale transactions The response payload is same as in transaction plus a few extra attributes

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
               

                 "giftCard": {
                    "_id": "GPYZXQ2IZNF3JW83",
                    "name": "Save on purchasesSave on purchasesSave on! 100F off!",
                    "description": "Big things popping. Small things stopping it.",
                    "avatarUrl": null,
                    "valueAmount": "10000",
                    "currencyCode": "XAF",
                    "payerAmount": 100,
                    "payerCurrencyCode": "XAF",
                    "beneAmount": 100,
                    "beneCurrencyCode": "XAF",
                },

                "coupon": {
                    "_id": "CPMRLNVKR065WXB8",
                    "name": "Save on purchasesSave on purchasesSave on! 100F off!",
                    "description": "Big things popping. Small things stopping it.",
                    "amountOff": "100",
                    "currencyCode": "XAF",
                    "percentageOff": null,
                    "code": "VF48JK"
                },
                "membership": {
                    "_id": "CMA90I7XG7BQPXOV",
                    "planId": "MEMSHOSURRCOVX58",
                    "name": "VIP membership",
                    "description": "buy at half price!",
                    "payerAmount": 100,
                    "payerCurrencyCode": "XAF",
                    "beneAmount": 100,
                    "beneCurrencyCode": "XAF",
                    "avatarUrl": "https://avatar.com/image.png"
                }
            },

            
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 10,
        "totalItems": 10
    },
    "success": true,
    "dateTime": "2022-01-18T21:50:49+00:00",
    "duration": "0.077s",
    "lang": "en-US",
    "userId": 34,
    "orgUserId": 33,
    "roleId": 1000,
    "roleLabel": "super admin/owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

List OUTbound transactions

Outbound transactions are transactions where the current user is the payer .

GET /v1/transaction/outbound

Filter params

See list transactions

Response

Same as list transactions response

List INbound transactions

Outbound transactions are transactions where the current user is the payer

GET /v1/transaction/inbound

Filter params

See list transactions

Response

Same as list transactions response

View Inbound External Transactions

Inbound External transactions are transaction funded by external payment methods (e.g MWP) ; If an ext payment method is used to fund a transaction, then while waiting for the ext payment to finalize, then status of the ext payment can be tracked by calling this interface

Request body

GET /v1/transaction/view-inbound-ext-payment?_id=IBXXXX

Response

The transaction payload is returned with inboundExternalPayment data Sample transaction showing inbound payment data. The status of the inbound extPay can be tracked using this interface.

{
    "data": {
        "_id": "PP20211110G41L6O6866",
        "amount": 1694,
        "bene": {
            "displayName": "MTN Momo | 655237546",
            "isVerified": 0,
            "avatarUrl": "http://rest.tranzak.me/static/img/partners/mtn.png",
            "currencyCode": "XAF",
            "amount": 1694,
            "fee": 0,
            "netAmount": 1694,
            "account": {
                "name": "MTN Momo | 655237546",
                "currencyCode": "XAF"
            }
        },
        "completedAt": "2021-11-10 18:26:45.801312",
        "createdAt": "2021-11-10 17:26:43.641522",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "sysn887xszvk8coz",
            "displayName": "tz87",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null
        },
        "description": "Payment to tz87",
        "inboundExternalPayment": {
            "_id": "IB20211110URNT2O",
            "serviceProviderShortName": "MTN Momo",
            "serviceProviderName": "MTN Momo",
            "serviceProviderCountryCode": "CM",
            "partnerAccountHolderId": "655237546",
            "partnerAccountHolderName": null,
            "avatarUrl": "/static/img/partners/mtn.png",
            "providerType": "telecom wallet",
            "status": 2,
            "statusText": "completed"
        },
        "payer": {
            "displayName": "Tranzak System Account | Cameroon",
            "avatarUrl": null
        },
        "status": 2,
        "statusText": "completed",
        "type": 1,
        "typeText": "transfer"
    },
    "success": true,
    "dateTime": "2021-11-10T17:33:00+00:00",
    "duration": "0.052s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Cancel Inbound External Payment

Cancels an ongoing inbound ext payment . Upon cancelling the inbound ext payment, the user should be redirected to the payment authorization page

Request body

POST /v1/transaction/cancel-inbound-ext-payment

{
    "_id" : "IB20211110Z2SVGY"
}

Response

The transaction payload is returned with inboundExternalPayment data. The status of the inboundExtPayment to confirm

{
    "data": {
        "_id": "PP20211110890QCQW90N",
        "amount": 1694,
        "bene": {
            "displayName": "MTN Momo | 655237546",
            "isVerified": 0,
            "avatarUrl": "http://rest.tranzak.me/static/img/partners/mtn.png",
            "currencyCode": "XAF",
            "amount": 1694,
            "fee": 0,
            "netAmount": 1694,
            "account": {
                "name": "MTN Momo | 655237546",
                "currencyCode": "XAF"
            }
        },
        "completedAt": null,
        "createdAt": "2021-11-10 17:46:14.051510",
        "currencyCode": "XAF",
        "currentUser": {
            "_id": "sysn887xszvk8coz",
            "displayName": "tz87",
            "countryCode": "CM",
            "verifiedName": null,
            "avatarUrl": null
        },
        "description": "Payment to tz87",
        "inboundExternalPayment": {
            "_id": "IB20211110MM1VOB",
            "serviceProviderShortName": "MTN Momo",
            "serviceProviderName": "MTN Momo",
            "serviceProviderCountryCode": "CM",
            "partnerAccountHolderId": "655237546",
            "partnerAccountHolderName": null,
            "avatarUrl": "/static/img/partners/mtn.png",
            "providerType": "telecom wallet",
            "status": 5,
            "statusText": "cancelled"
        },
        "payer": {
            "displayName": "Tranzak System Account | Cameroon",
            "avatarUrl": null
        },
        "paymentMethods": [],
        "status": 1,
        "statusText": "pending",
        "type": 1,
        "typeText": "transfer"
    },
    "success": true,
    "dateTime": "2021-11-10T17:46:26+00:00",
    "duration": "0.057s",
    "lang": "en-US",
    "userId": 87,
    "orgUserId": 87,
    "roleId": 1000,
    "roleLabel": "owner",
    "hostname": "cortex01",
    "serverIpAddress": "192.168.137.2"
}

Webhooks (mapi)

Webhooks are automated messages sent from apps when something happens. They have a message—or payload—and are sent to a unique URL—essentially the app's phone number or address. Webhooks are almost always faster than polling, and require less work on your end. They're much like SMS notifications.

Event Types

Displays list of supported events and their respective description.

Endpoint

GET /webhook/event-types

Request Params

N/A

Response

{
    "data": [
        {
            "name": "*",
            "description": "all events."
        },
        {
            "name": "REQUEST.COMPLETED",
            "description": "a payment request is completed."
        },
        {
            "name": "REQUEST.CANCELLED",
            "description": "a payment request is cancelled or voided"
        },
        {
            "name": "PAYOUT.COMPLETED",
            "description": "a payout (mass payment) is completed."
        },
        {
            "name": "PAYOUT.PROCESSING",
            "description": "a payout (mass payment) is enters processing state."
        },
        {
            "name": "INVOICE.CANCELLED",
            "description": "invoice is cancelled."
        },
        {
            "name": "INVOICE.PAID",
            "description": "invoice is partially or fully paid."
        },
        {
            "name": "REFUND.CREATED",
            "description": "a refund/reversal/chargeback is created."
        },
        {
            "name": "REFUND.COMPLETED",
            "description": "a refund/reversal/chargeback is completed"
        },
        {
            "name": "REFUND.CANCELLED",
            "description": "a refund/reversal/chargeback is cancelled"
        },
        {
            "name": "PAYMENTLINK.PAID",
            "description": "a payment link is paid"
        }
    ],
    "success": true, 
}

Create a webhook

Registers a webhook

Endpoint

POST /webhook/create

Request Body Parameters

Parameter Type required Description
url String(100) true The callback URL
eventTypes Array true List of event types that event types to receive notification.
{
    "url": "https://local-api.tranzak.me/tranzak-callback",
    "eventTypes": [
                "REQUEST.COMPLETED",
                "PAYOUT.COMPLETED",
                "PAYOUT.PROCESSING",
                "REQUEST.CANCELLED",
                "REFUND.CANCELLED",
                "REFUND.COMPLETED",
                "REFUND.CREATED",
                "INVOICE.PAID","INVOICE.CANCELLED" ,
                "PAYMENTLINK.PAID"               
    ]
}

To listen to all event types , use the '*' as event type.

{
    "url": "https://local-api.tranzak.me/tranzak-callback",
    "eventTypes": [ "*" ]         

Response

See the VIEW section

View webhook details

Initiates a payment request to collect from a mobile wallet Upon creation, the mobile user will be required to authorize the payment.

Endpoint

GET /webhook/details?id=WHJ11VT8SIZU0QARVJXL48

Request Body Parameters

A request may be searched by either a requestId (cortex-generated) or using a merchant customer mchTransactionRef.

Parameter Type required Description
id String(32) true webhook ID

Response

{
    "data": {
        "createdAt": "2022-05-12 19:31:59",
        "eventTypes": [
            "*"
        ],
        "webhookId": "WHJ11VT8SIZU0QARVJXL48",
        "url": "https://local-api.tranzak.me/tranzak-callback"
    },
    "success": true,
   
}

Delete Webhook

Deletes a webhook

Endpoint

POST /webhook/delete

Request Body Parameters

A request may be searched by either a requestId (cortex-generated) or using a merchant customer mchTransactionRef.

Parameter Type required Description
webhookId String(32) true webhook ID
{
    "webhookId": "WH99UROLUCQ1T7N7DTRRND"
}

Response

{
    "data": {
        "message": "success"
    },
    "success": true, 
}

Webhook List

Displays paginated list of registered webhooks

forex

GET latest exchange rates

POST https://fx.tranzak.me/v1/rates/latest

Request Body Parameters

None

Header Parameters

Parameter Type required Description
x-app-key String false access key

Response

Exchange rates relative to the US Dollar

{
    "data": {
        "rates": {
            "AED": 3.673005,
            "AFN": 88.333614,
            "ALL": 111.018619,
            "AMD": 488.092713,
            "ANG": 1.80142,
            "AOA": 455.6195,
            "ARS": 110.375954,
            "AUD": 1.331422,
            "AWG": 1.8005,
            "AZN": 1.7,
            "BAM": 1.779054,
            "BBD": 2,
            "BDT": 86.187313,
            "BGN": 1.7846,
            "BHD": 0.376982,
            "BIF": 2050.049631,
            "BMD": 1,
            "BND": 1.359446,
            "BOB": 6.86206,
            "BRL": 4.7434,
            "BSD": 1,
            "BTC": 0.000021181504,
            "BTN": 76.092397,
            "BWP": 11.46948,
            "BYN": 3.255516,
            "BZD": 2.014836,
            "CAD": 1.249585,
            "CDF": 1998.400503,
            "CHF": 0.936014,
            "CLF": 0.028174,
            "CLP": 777.37,
            "CNH": 6.386015,
            "CNY": 6.3705,
            "COP": 3803.334922,
            "CRC": 655.090006,
            "CUC": 1,
            "CUP": 25.75,
            "CVE": 100.675,
            "CZK": 22.4769,
            "DJF": 177.956147,
            "DKK": 6.785532,
            "DOP": 55.014988,
            "DZD": 143.022,
            "EGP": 18.306,
            "ERN": 15.000003,
            "ETB": 51.333901,
            "EUR": 0.912122,
            "FJD": 2.0899,
            "FKP": 0.762518,
            "GBP": 0.762518,
            "GEL": 3.21,
            "GGP": 0.762518,
            "GHS": 7.572254,
            "GIP": 0.762518,
            "GMD": 54.1,
            "GNF": 8933.71733,
            "GTQ": 7.685576,
            "GYD": 209.129287,
            "HKD": 7.829685,
            "HNL": 24.536429,
            "HRK": 6.9075,
            "HTG": 106.451507,
            "HUF": 341.336552,
            "IDR": 14353.95,
            "ILS": 3.221145,
            "IMP": 0.762518,
            "INR": 76.121504,
            "IQD": 1458.844238,
            "IRR": 42300,
            "ISK": 130.26,
            "JEP": 0.762518,
            "JMD": 153.202608,
            "JOD": 0.709,
            "JPY": 124.05416667,
            "KES": 114.8,
            "KGS": 99.0642,
            "KHR": 4048.232137,
            "KMF": 447.849773,
            "KPW": 900,
            "KRW": 1224.294332,
            "KWD": 0.304573,
            "KYD": 0.832958,
            "KZT": 481.178112,
            "LAK": 11679.765136,
            "LBP": 1511.390739,
            "LKR": 284.868997,
            "LRD": 153.049991,
            "LSL": 14.56722,
            "LYD": 4.665233,
            "MAD": 9.687956,
            "MDL": 18.295002,
            "MGA": 4042.169475,
            "MKD": 56.128189,
            "MMK": 1777.733196,
            "MNT": 2897.751396,
            "MOP": 8.060709,
            "MRU": 36.374304,
            "MUR": 44.956841,
            "MVR": 15.4,
            "MWK": 816.602372,
            "MXN": 20.037099,
            "MYR": 4.2165,
            "MZN": 63.83,
            "NAD": 14.55,
            "NGN": 415.597357,
            "NIO": 35.748562,
            "NOK": 8.673335,
            "NPR": 121.750139,
            "NZD": 1.444409,
            "OMR": 0.384531,
            "PAB": 1,
            "PEN": 3.735946,
            "PGK": 3.521974,
            "PHP": 52.033504,
            "PKR": 182.42528,
            "PLN": 4.30433,
            "PYG": 6963.441783,
            "QAR": 3.652324,
            "RON": 4.5136,
            "RSD": 107.388239,
            "RUB": 98.250016,
            "RWF": 1023.336238,
            "SAR": 3.75147,
            "SBD": 8.035388,
            "SCR": 14.416848,
            "SDG": 447,
            "SEK": 9.505507,
            "SGD": 1.360527,
            "SHP": 0.762518,
            "SLL": 11755.499907,
            "SOS": 578.258397,
            "SRD": 20.678,
            "SSP": 130.26,
            "STD": 21443.240504,
            "STN": 22.55,
            "SVC": 8.746117,
            "SYP": 2512,
            "SZL": 14.567219,
            "THB": 33.756567,
            "TJS": 12.97018,
            "TMT": 3.51,
            "TND": 2.953,
            "TOP": 2.250084,
            "TRY": 14.841587,
            "TTD": 6.799049,
            "TWD": 28.818501,
            "TZS": 2320,
            "UAH": 29.511128,
            "UGX": 3593.700634,
            "USD": 1,
            "UYU": 41.785789,
            "UZS": 11481.883887,
            "VES": 4.33645,
            "VND": 22870.214241,
            "VUV": 113.148302,
            "WST": 2.603668,
            "XAF": 598.312857,
            "XAG": 0.0400088,
            "XAU": 0.00051809,
            "XCD": 2.70255,
            "XDR": 0.720272,
            "XOF": 598.312857,
            "XPD": 0.00044132,
            "XPF": 108.845116,
            "XPT": 0.00101318,
            "YER": 250.249937,
            "ZAR": 14.583922,
            "ZMW": 17.896767,
            "ZWL": 322
        }
    },
    "success": true
}

Get time series for a specific currency

https Request

POST https://fx.tranzak.me/v1/rates/time-series

Request Body Parameters

Parameter Type required Description
startDate String true eg: 2021-01-01
endDate String true eg: 2021-01-30

Response

{{
    "data": {
        "currencies": {
            "motd": {
                "msg": "If you or your company use this project or like what we doing, please consider backing us so we can continue maintaining and evolving this project.",
                "url": "https://exchangerate.host/#/donate"
            },
            "success": true,
            "timeseries": true,
            "base": "USD",
            "start_date": "2021-01-01",
            "end_date": "2021-01-05",
            "rates": {
                "2021-01-01": {
                    "AED": 3.6732,
                    "AFN": 77.571731,
                    "ALL": 101.322185,
                    "AMD": 522.909949,
                    "ANG": 1.794679,
                    "AOA": 654.159937,
                    "ARS": 85.115425,
                    "AUD": 1.29985,
                    "AWG": 1.8,
                    "AZN": 1.7025,
                    "BAM": 1.601236,
                    "BBD": 2,
                    "BDT": 84.632448,
                    "BGN": 1.601211,
                    "BHD": 0.377011,
                    "BIF": 1941.945201,
                    "BMD": 1,
                    "BND": 1.328012,
                    "BOB": 6.919071,
                    "BRL": 5.1934,
                    "BSD": 1,
                    "BTC": 0.000034,
                    "BTN": 73.428784,
                    "BWP": 10.802856,
                    "BYN": 2.612258,
                    "BZD": 2.015329,
                    "CAD": 1.273005,
                    "CDF": 1971.040189,
                    "CHF": 0.89,
                    "CLF": 0.025749,
                    "CLP": 710.499322,
                    "CNH": 6.50503,
                    "CNY": 6.532999,
                    "COP": 3461.474932,
                    "CRC": 610.275845,
                    "CUC": 0.999805,
                    "CUP": 25.749997,
                    "CVE": 90.549991,
                    "CZK": 21.470199,
                    "DJF": 178.902108,
                    "DKK": 6.0929,
                    "DOP": 58.17725,
                    "DZD": 132.070378,
                    "EGP": 15.842603,
                    "ERN": 15.001451,
                    "ETB": 39.551919,
                    "EUR": 0.8213,
                    "FJD": 2.0392,
                    "FKP": 0.731368,
                    "GBP": 0.731368,
                    "GEL": 3.284999,
                    "GGP": 0.731368,
                    "GHS": 5.899054,
                    "GIP": 0.731368,
                    "GMD": 51.754995,
                    "GNF": 10001.799669,
                    "GTQ": 7.793424,
                    "GYD": 209.171262,
                    "HKD": 7.753249,
                    "HNL": 24.201213,
                    "HRK": 6.179399,
                    "HTG": 72.620412,
                    "HUF": 296.919972,
                    "IDR": 14213.691127,
                    "ILS": 3.21302,
                    "IMP": 0.731368,
                    "INR": 73.092243,
                    "IQD": 1468.227675,
                    "IRR": 42104.995933,
                    "ISK": 127.809987,
                    "JEP": 0.731368,
                    "JMD": 142.971622,
                    "JOD": 0.709,
                    "JPY": 103.239971,
                    "KES": 109.73999,
                    "KGS": 83.169848,
                    "KHR": 4057.956903,
                    "KMF": 403.000178,
                    "KPW": 899.999913,
                    "KRW": 1085.729895,
                    "KWD": 0.304145,
                    "KYD": 0.833157,
                    "KZT": 421.359506,
                    "LAK": 9341.068686,
                    "LBP": 1519.510734,
                    "LKR": 186.166807,
                    "LRD": 164.233287,
                    "LSL": 14.681039,
                    "LYD": 1.344386,
                    "MAD": 8.927094,
                    "MDL": 17.269064,
                    "MGA": 3931.398367,
                    "MKD": 50.444142,
                    "MMK": 1334.572289,
                    "MNT": 2852.592985,
                    "MOP": 7.983465,
                    "MRO": 356.999966,
                    "MRU": 36.179997,
                    "MUR": 39.699571,
                    "MVR": 15.399999,
                    "MWK": 774.654882,
                    "MXN": 19.882198,
                    "MYR": 4.050499,
                    "MZN": 74.809993,
                    "NAD": 14.689999,
                    "NGN": 396.70047,
                    "NIO": 34.873725,
                    "NOK": 8.63301,
                    "NPR": 117.485764,
                    "NZD": 1.412085,
                    "OMR": 0.384976,
                    "PAB": 1,
                    "PEN": 3.637889,
                    "PGK": 3.539268,
                    "PHP": 48.338892,
                    "PKR": 160.992856,
                    "PLN": 3.753769,
                    "PYG": 6951.071768,
                    "QAR": 3.64125,
                    "RON": 3.983099,
                    "RSD": 96.249991,
                    "RUB": 73.944993,
                    "RWF": 990.813104,
                    "SAR": 3.751083,
                    "SBD": 8.002048,
                    "SCR": 21.204536,
                    "SDG": 55.224994,
                    "SEK": 8.269289,
                    "SGD": 1.321615,
                    "SHP": 0.731368,
                    "SLL": 10099.475354,
                    "SOS": 581.358293,
                    "SRD": 14.153999,
                    "SSP": 130.259987,
                    "STD": 20389.995485,
                    "STN": 20.324998,
                    "SVC": 8.748594,
                    "SYP": 513.419561,
                    "SZL": 14.677732,
                    "THB": 30.1953,
                    "TJS": 11.325198,
                    "TMT": 3.5,
                    "TND": 2.694499,
                    "TOP": 2.274086,
                    "TRY": 7.439199,
                    "TTD": 6.795284,
                    "TWD": 28.068998,
                    "TZS": 2318.536776,
                    "UAH": 28.475253,
                    "UGX": 3655.261967,
                    "USD": 1,
                    "UYU": 42.360888,
                    "UZS": 10474.794265,
                    "VEF": 248487.618237,
                    "VES": 1105425.195719,
                    "VND": 23344.598819,
                    "VUV": 109.239895,
                    "WST": 2.518034,
                    "XAF": 538.737432,
                    "XAG": 0.037901,
                    "XAU": 0.000526,
                    "XCD": 2.70255,
                    "XDR": 0.696046,
                    "XOF": 538.737432,
                    "XPD": 0.000407,
                    "XPF": 98.00715,
                    "XPT": 0.000932,
                    "YER": 250.408323,
                    "ZAR": 14.662594,
                    "ZMW": 21.165798,
                    "ZWL": 321.999969
                },
                "2021-01-02": {
                    "AED": 3.6732,
                    "AFN": 77.571727,
                    "ALL": 101.32218,
                    "AMD": 522.909923,
                    "ANG": 1.794679,
                    "AOA": 654.159904,
                    "ARS": 85.115422,
                    "AUD": 1.29985,
                    "AWG": 1.8,
                    "AZN": 1.702499,
                    "BAM": 1.601236,
                    "BBD": 2,
                    "BDT": 84.632443,
                    "BGN": 1.601211,
                    "BHD": 0.377011,
                    "BIF": 1941.945103,
                    "BMD": 1,
                    "BND": 1.328012,
                    "BOB": 6.91907,
                    "BRL": 5.193399,
                    "BSD": 1,
                    "BTC": 0.000031,
                    "BTN": 73.42878,
                    "BWP": 10.802856,
                    "BYN": 2.612258,
                    "BZD": 2.015328,
                    "CAD": 1.273005,
                    "CDF": 1971.040089,
                    "CHF": 0.890075,
                    "CLF": 0.025749,
                    "CLP": 710.499286,
                    "CNH": 6.505029,
                    "CNY": 6.532999,
                    "COP": 3461.474757,
                    "CRC": 610.275814,
                    "CUC": 0.999805,
                    "CUP": 25.749996,
                    "CVE": 90.549987,
                    "CZK": 21.470198,
                    "DJF": 178.902099,
                    "DKK": 6.092899,
                    "DOP": 58.177248,
                    "DZD": 132.070372,
                    "EGP": 15.842602,
                    "ERN": 15.001451,
                    "ETB": 39.551917,
                    "EUR": 0.824063,
                    "FJD": 2.0392,
                    "FKP": 0.731368,
                    "GBP": 0.731368,
                    "GEL": 3.285,
                    "GGP": 0.731368,
                    "GHS": 5.899053,
                    "GIP": 0.731368,
                    "GMD": 51.754992,
                    "GNF": 10001.799163,
                    "GTQ": 7.793424,
                    "GYD": 209.171252,
                    "HKD": 7.753248,
                    "HNL": 24.201211,
                    "HRK": 6.179399,
                    "HTG": 72.620409,
                    "HUF": 296.919956,
                    "IDR": 14213.690409,
                    "ILS": 3.213019,
                    "IMP": 0.731368,
                    "INR": 73.092239,
                    "IQD": 1468.227601,
                    "IRR": 42213.378965,
                    "ISK": 127.809981,
                    "JEP": 0.731368,
                    "JMD": 142.971616,
                    "JOD": 0.709,
                    "JPY": 103.239965,
                    "KES": 109.739984,
                    "KGS": 83.169843,
                    "KHR": 4057.956698,
                    "KMF": 403.000157,
                    "KPW": 899.999867,
                    "KRW": 1085.72984,
                    "KWD": 0.304144,
                    "KYD": 0.833157,
                    "KZT": 421.359485,
                    "LAK": 9341.068214,
                    "LBP": 1519.510657,
                    "LKR": 186.166798,
                    "LRD": 164.233279,
                    "LSL": 14.681038,
                    "LYD": 1.344386,
                    "MAD": 8.927094,
                    "MDL": 17.269063,
                    "MGA": 3931.398169,
                    "MKD": 50.444139,
                    "MMK": 1334.572222,
                    "MNT": 2854.185863,
                    "MOP": 7.983464,
                    "MRO": 356.999947,
                    "MRU": 36.179995,
                    "MUR": 39.699569,
                    "MVR": 15.399998,
                    "MWK": 774.654843,
                    "MXN": 19.882197,
                    "MYR": 4.050499,
                    "MZN": 74.809989,
                    "NAD": 14.689998,
                    "NGN": 396.700451,
                    "NIO": 34.873723,
                    "NOK": 8.633009,
                    "NPR": 117.485759,
                    "NZD": 1.412085,
                    "OMR": 0.384976,
                    "PAB": 1,
                    "PEN": 3.637889,
                    "PGK": 3.539267,
                    "PHP": 48.33889,
                    "PKR": 160.992848,
                    "PLN": 3.753769,
                    "PYG": 6951.071417,
                    "QAR": 3.641249,
                    "RON": 3.983099,
                    "RSD": 96.249986,
                    "RUB": 73.944989,
                    "RWF": 990.813054,
                    "SAR": 3.751083,
                    "SBD": 8.002047,
                    "SCR": 21.204534,
                    "SDG": 55.224992,
                    "SEK": 8.269289,
                    "SGD": 1.321615,
                    "SHP": 0.731368,
                    "SLL": 10099.474844,
                    "SOS": 581.358263,
                    "SRD": 14.153998,
                    "SSP": 130.259981,
                    "STD": 20389.994455,
                    "STN": 20.324997,
                    "SVC": 8.748593,
                    "SYP": 513.419529,
                    "SZL": 14.677731,
                    "THB": 30.170541,
                    "TJS": 11.325197,
                    "TMT": 3.499999,
                    "TND": 2.694499,
                    "TOP": 2.274086,
                    "TRY": 7.439199,
                    "TTD": 6.795283,
                    "TWD": 28.068996,
                    "TZS": 2318.536659,
                    "UAH": 28.475253,
                    "UGX": 3655.261782,
                    "USD": 1,
                    "UYU": 42.360886,
                    "UZS": 10474.793736,
                    "VEF": 248487.605682,
                    "VES": 1105425.139867,
                    "VND": 23344.597639,
                    "VUV": 108.952001,
                    "WST": 2.536797,
                    "XAF": 540.54965,
                    "XAG": 0.0379,
                    "XAU": 0.000527,
                    "XCD": 2.70255,
                    "XDR": 0.696046,
                    "XOF": 540.54965,
                    "XPD": 0.000407,
                    "XPF": 98.336829,
                    "XPT": 0.000932,
                    "YER": 250.408311,
                    "ZAR": 14.662593,
                    "ZMW": 21.165797,
                    "ZWL": 321.999953
                },
                "2021-01-03": {
                    "AED": 3.672958,
                    "AFN": 77.571721,
                    "ALL": 101.322173,
                    "AMD": 522.909882,
                    "ANG": 1.803922,
                    "AOA": 654.159853,
                    "ARS": 84.427008,
                    "AUD": 1.299453,
                    "AWG": 1.8,
                    "AZN": 1.702499,
                    "BAM": 1.601236,
                    "BBD": 1.999999,
                    "BDT": 85.068958,
                    "BGN": 1.601687,
                    "BHD": 0.37701,
                    "BIF": 1949.897093,
                    "BMD": 1,
                    "BND": 1.328011,
                    "BOB": 6.91907,
                    "BRL": 5.202339,
                    "BSD": 1,
                    "BTC": 0.00003,
                    "BTN": 73.428775,
                    "BWP": 10.858486,
                    "BYN": 2.625731,
                    "BZD": 2.025707,
                    "CAD": 1.27332,
                    "CDF": 1981.252451,
                    "CHF": 0.883964,
                    "CLF": 0.025749,
                    "CLP": 710.499647,
                    "CNH": 6.495958,
                    "CNY": 6.532998,
                    "COP": 3433.491377,
                    "CRC": 613.417924,
                    "CUC": 1.004953,
                    "CUP": 25.749994,
                    "CVE": 90.54998,
                    "CZK": 21.450257,
                    "DJF": 178.902086,
                    "DKK": 6.082472,
                    "DOP": 58.428083,
                    "DZD": 132.070361,
                    "EGP": 15.714463,
                    "ERN": 15.001303,
                    "ETB": 39.551914,
                    "EUR": 0.817388,
                    "FJD": 2.039199,
                    "FKP": 0.731935,
                    "GBP": 0.731935,
                    "GEL": 3.282305,
                    "GGP": 0.731935,
                    "GHS": 5.899053,
                    "GIP": 0.731935,
                    "GMD": 51.709988,
                    "GNF": 10044.592653,
                    "GTQ": 7.833557,
                    "GYD": 210.250012,
                    "HKD": 7.753029,
                    "HNL": 24.230212,
                    "HRK": 6.179632,
                    "HTG": 72.994379,
                    "HUF": 297.113433,
                    "IDR": 14097.083324,
                    "ILS": 3.211123,
                    "IMP": 0.731935,
                    "INR": 73.086997,
                    "IQD": 1468.227486,
                    "IRR": 42104.990514,
                    "ISK": 127.804406,
                    "JEP": 0.731935,
                    "JMD": 143.707826,
                    "JOD": 0.709,
                    "JPY": 103.218727,
                    "KES": 109.740281,
                    "KGS": 83.174138,
                    "KHR": 4057.956381,
                    "KMF": 403.000126,
                    "KPW": 899.999797,
                    "KRW": 1087.236331,
                    "KWD": 0.304144,
                    "KYD": 0.837447,
                    "KZT": 423.529359,
                    "LAK": 9341.067484,
                    "LBP": 1519.510538,
                    "LKR": 186.166783,
                    "LRD": 164.233266,
                    "LSL": 14.747634,
                    "LYD": 1.344385,
                    "MAD": 8.927093,
                    "MDL": 17.187434,
                    "MGA": 3885.698498,
                    "MKD": 50.444132,
                    "MMK": 1334.572118,
                    "MNT": 2854.537719,
                    "MOP": 8.024641,
                    "MRO": 356.99992,
                    "MRU": 36.680986,
                    "MUR": 39.69978,
                    "MVR": 15.399942,
                    "MWK": 774.654783,
                    "MXN": 19.908945,
                    "MYR": 4.022499,
                    "MZN": 74.809983,
                    "NAD": 14.689997,
                    "NGN": 388.950167,
                    "NIO": 35.022302,
                    "NOK": 8.555925,
                    "NPR": 117.485738,
                    "NZD": 1.390936,
                    "OMR": 0.384973,
                    "PAB": 1,
                    "PEN": 3.637888,
                    "PGK": 3.573784,
                    "PHP": 47.941593,
                    "PKR": 160.992836,
                    "PLN": 3.728814,
                    "PYG": 6951.070874,
                    "QAR": 3.659011,
                    "RON": 3.979019,
                    "RSD": 96.249979,
                    "RUB": 74.108816,
                    "RWF": 995.914372,
                    "SAR": 3.751574,
                    "SBD": 8.002048,
                    "SCR": 21.20444,
                    "SDG": 55.249988,
                    "SEK": 8.210508,
                    "SGD": 1.322359,
                    "SHP": 0.731935,
                    "SLL": 10099.473488,
                    "SOS": 581.358218,
                    "SRD": 14.153997,
                    "SSP": 130.25997,
                    "STD": 20389.992862,
                    "STN": 20.249996,
                    "SVC": 8.793645,
                    "SYP": 512.90949,
                    "SZL": 14.745094,
                    "THB": 29.950949,
                    "TJS": 11.383517,
                    "TMT": 3.5,
                    "TND": 2.692633,
                    "TOP": 2.276155,
                    "TRY": 7.442299,
                    "TTD": 6.795283,
                    "TWD": 28.068994,
                    "TZS": 2325.698449,
                    "UAH": 28.47525,
                    "UGX": 3674.072127,
                    "USD": 1,
                    "UYU": 42.365445,
                    "UZS": 10528.689812,
                    "VEF": 248487.586259,
                    "VES": 1071507.361322,
                    "VND": 23158.122057,
                    "VUV": 108.949903,
                    "WST": 2.536905,
                    "XAF": 536.171468,
                    "XAG": 0.037883,
                    "XAU": 0.000529,
                    "XCD": 2.702549,
                    "XDR": 0.696046,
                    "XOF": 536.171468,
                    "XPD": 0.000407,
                    "XPF": 97.54035,
                    "XPT": 0.000932,
                    "YER": 250.408291,
                    "ZAR": 14.665696,
                    "ZMW": 21.274791,
                    "ZWL": 321.999927
                },
                "2021-01-04": {
                    "AED": 3.673022,
                    "AFN": 77.402794,
                    "ALL": 100.7227,
                    "AMD": 523.32501,
                    "ANG": 1.794158,
                    "AOA": 568.193456,
                    "ARS": 84.69438,
                    "AUD": 1.304009,
                    "AWG": 1.799999,
                    "AZN": 1.700855,
                    "BAM": 1.590247,
                    "BBD": 1.999999,
                    "BDT": 84.766018,
                    "BGN": 1.595605,
                    "BHD": 0.376962,
                    "BIF": 1942.138558,
                    "BMD": 1,
                    "BND": 1.316594,
                    "BOB": 6.881834,
                    "BRL": 5.2972,
                    "BSD": 1,
                    "BTC": 0.000032,
                    "BTN": 72.988885,
                    "BWP": 10.753648,
                    "BZD": 2.01483,
                    "CAD": 1.278366,
                    "CDF": 1970.491149,
                    "CHF": 0.881139,
                    "CLF": 0.025524,
                    "CLP": 704.299659,
                    "CNH": 6.454759,
                    "CNY": 6.461598,
                    "COP": 3433.960225,
                    "CRC": 610.149913,
                    "CUP": 25.749994,
                    "CVE": 90.124979,
                    "CZK": 21.373278,
                    "DJF": 177.944175,
                    "DKK": 6.073148,
                    "DOP": 58.167738,
                    "DZD": 132.182626,
                    "EGP": 15.739597,
                    "ERN": 15.001317,
                    "ETB": 39.199991,
                    "EUR": 0.816286,
                    "FJD": 2.04083,
                    "FKP": 0.73662,
                    "GBP": 0.73662,
                    "GEL": 3.289999,
                    "GGP": 0.73662,
                    "GHS": 5.867319,
                    "GIP": 0.73662,
                    "GMD": 51.749988,
                    "GNF": 10157.770875,
                    "GTQ": 7.79149,
                    "GYD": 208.935662,
                    "HKD": 7.753559,
                    "HNL": 24.210776,
                    "HRK": 6.172698,
                    "HUF": 295.427369,
                    "IDR": 13938.696729,
                    "ILS": 3.208919,
                    "IMP": 0.73662,
                    "INR": 73.08543,
                    "IQD": 1459.324896,
                    "IRR": 42104.990121,
                    "ISK": 127.41997,
                    "JEP": 0.73662,
                    "JMD": 142.38656,
                    "JOD": 0.709,
                    "JPY": 103.125833,
                    "KES": 109.271435,
                    "KGS": 83.170067,
                    "KHR": 4047.141593,
                    "KMF": 402.224836,
                    "KPW": 899.999789,
                    "KRW": 1086.359745,
                    "KWD": 0.304084,
                    "KYD": 0.83292,
                    "KZT": 421.248703,
                    "LAK": 9286.867798,
                    "LBP": 1512.972283,
                    "LKR": 186.914005,
                    "LRD": 164.399998,
                    "LSL": 14.577761,
                    "LYD": 1.335632,
                    "MAD": 8.856096,
                    "MDL": 17.159654,
                    "MGA": 3905.033082,
                    "MKD": 50.097965,
                    "MMK": 1327.389656,
                    "MNT": 2852.300312,
                    "MOP": 7.981363,
                    "MRO": 356.999745,
                    "MRU": 36.708231,
                    "MUR": 39.400133,
                    "MVR": 15.409996,
                    "MWK": 773.095243,
                    "MXN": 19.96402,
                    "MYR": 4.006499,
                    "NAD": 14.599996,
                    "NGN": 386.114338,
                    "NIO": 34.930689,
                    "NOK": 8.553064,
                    "NPR": 116.7859,
                    "NZD": 1.394446,
                    "OMR": 0.38497,
                    "PAB": 1,
                    "PEN": 3.620222,
                    "PGK": 3.554689,
                    "PHP": 48.074989,
                    "PKR": 160.108784,
                    "PLN": 3.719672,
                    "PYG": 6913.672109,
                    "QAR": 3.640681,
                    "RON": 3.975499,
                    "RSD": 95.959978,
                    "RUB": 73.532982,
                    "RWF": 990.567777,
                    "SAR": 3.751654,
                    "SBD": 8.047134,
                    "SCR": 21.203825,
                    "SEK": 8.245331,
                    "SGD": 1.319785,
                    "SHP": 0.73662,
                    "SLL": 10099.473572,
                    "SOS": 580.362855,
                    "SSP": 130.259969,
                    "STD": 20389.992671,
                    "SVC": 8.745495,
                    "SYP": 512.842441,
                    "SZL": 14.583462,
                    "THB": 29.907493,
                    "TJS": 11.32231,
                    "TMT": 3.509999,
                    "TND": 2.686999,
                    "TOP": 2.273577,
                    "TRY": 7.424914,
                    "TTD": 6.758733,
                    "TWD": 28.087992,
                    "TZS": 2318.156067,
                    "UGX": 3678.259624,
                    "USD": 1,
                    "UYU": 42.338675,
                    "UZS": 10448.538676,
                    "VES": 1105425.293155,
                    "VND": 23158.121841,
                    "VUV": 109.238219,
                    "WST": 2.519178,
                    "XAF": 535.448439,
                    "XAG": 0.036715,
                    "XAU": 0.000515,
                    "XCD": 2.70255,
                    "XDR": 0.694005,
                    "XOF": 535.448439,
                    "XPD": 0.00042,
                    "XPF": 97.408816,
                    "XPT": 0.000922,
                    "YER": 250.349902,
                    "ZAR": 14.719061,
                    "ZWL": 321.999924
                },
                "2021-01-05": {
                    "AED": 3.673003,
                    "AFN": 77.469288,
                    "ALL": 100.72445,
                    "AMD": 522.310224,
                    "ANG": 1.797109,
                    "AOA": 655.515163,
                    "ARS": 84.795721,
                    "AUD": 1.289565,
                    "AWG": 1.8,
                    "AZN": 1.700805,
                    "BAM": 1.594176,
                    "BBD": 2.000001,
                    "BDT": 84.906274,
                    "BGN": 1.589526,
                    "BHD": 0.376998,
                    "BIF": 1944.01661,
                    "BMD": 1,
                    "BND": 1.320118,
                    "BOB": 6.893209,
                    "BRL": 5.286001,
                    "BSD": 1,
                    "BTC": 0.000029,
                    "BTN": 73.32012,
                    "BWP": 10.8944,
                    "BYN": 2.586767,
                    "BZD": 2.018079,
                    "CAD": 1.267445,
                    "CDF": 1972.077662,
                    "CHF": 0.878418,
                    "CLF": 0.02522,
                    "CLP": 695.901734,
                    "CNH": 6.437347,
                    "CNY": 6.456301,
                    "COP": 3445.727057,
                    "CRC": 612.824613,
                    "CUC": 1.004953,
                    "CUP": 25.750007,
                    "CVE": 90.350022,
                    "CZK": 21.26782,
                    "DJF": 178.198465,
                    "DKK": 6.049919,
                    "DOP": 58.243856,
                    "DZD": 132.240551,
                    "EGP": 15.696904,
                    "ERN": 15.001256,
                    "ETB": 39.273555,
                    "EUR": 0.813219,
                    "FJD": 2.027201,
                    "FKP": 0.734071,
                    "GBP": 0.734071,
                    "GEL": 3.300001,
                    "GGP": 0.734071,
                    "GHS": 5.868208,
                    "GIP": 0.734071,
                    "GMD": 51.700012,
                    "GNF": 10249.613285,
                    "GTQ": 7.804315,
                    "GYD": 209.36383,
                    "HKD": 7.753242,
                    "HNL": 24.234549,
                    "HRK": 6.149301,
                    "HTG": 72.349755,
                    "HUF": 292.326041,
                    "IDR": 13905.947451,
                    "ILS": 3.203771,
                    "IMP": 0.734071,
                    "INR": 73.14176,
                    "IQD": 1461.64241,
                    "IRR": 42105.01045,
                    "ISK": 126.940032,
                    "JEP": 0.734071,
                    "JMD": 142.009716,
                    "JOD": 0.709,
                    "JPY": 102.717609,
                    "KES": 109.478409,
                    "KGS": 83.204799,
                    "KHR": 4054.892183,
                    "KMF": 401.150199,
                    "KPW": 900.000224,
                    "KRW": 1087.205072,
                    "KWD": 0.303558,
                    "KYD": 0.834325,
                    "KZT": 422.04506,
                    "LAK": 9301.237802,
                    "LBP": 1513.732374,
                    "LKR": 188.725126,
                    "LRD": 165.150014,
                    "LSL": 14.808895,
                    "LYD": 3.512199,
                    "MAD": 8.827908,
                    "MDL": 17.182079,
                    "MGA": 3887.809953,
                    "MKD": 50.221718,
                    "MMK": 1322.077144,
                    "MNT": 2853.865486,
                    "MOP": 7.994965,
                    "MRO": 356.999916,
                    "MRU": 36.488018,
                    "MUR": 39.400007,
                    "MVR": 15.400005,
                    "MWK": 771.275517,
                    "MXN": 19.880005,
                    "MYR": 4.017501,
                    "MZN": 74.960011,
                    "NAD": 15.010003,
                    "NGN": 388.310055,
                    "NIO": 34.906917,
                    "NOK": 8.467137,
                    "NPR": 117.312525,
                    "NZD": 1.379292,
                    "OMR": 0.384938,
                    "PAB": 1,
                    "PEN": 3.629253,
                    "PGK": 3.520239,
                    "PHP": 48.120012,
                    "PKR": 160.667083,
                    "PLN": 3.688605,
                    "PYG": 6926.448977,
                    "QAR": 3.641001,
                    "RON": 3.961601,
                    "RSD": 95.615024,
                    "RUB": 74.170118,
                    "RWF": 983.334645,
                    "SAR": 3.75071,
                    "SBD": 8.016039,
                    "SCR": 21.203698,
                    "SDG": 55.300014,
                    "SEK": 8.182468,
                    "SGD": 1.31763,
                    "SHP": 0.734071,
                    "SLL": 10106.227122,
                    "SOS": 579.920898,
                    "SRD": 14.154003,
                    "SSP": 130.260032,
                    "STD": 20390.002515,
                    "STN": 20.100005,
                    "SVC": 8.760578,
                    "SYP": 512.85118,
                    "SZL": 14.94931,
                    "THB": 29.935508,
                    "TJS": 11.341069,
                    "TMT": 3.500001,
                    "TND": 2.680501,
                    "TOP": 2.27513,
                    "TRY": 7.39133,
                    "TTD": 6.801675,
                    "TWD": 27.967006,
                    "TZS": 2321.769158,
                    "UAH": 28.339005,
                    "UGX": 3699.427573,
                    "USD": 1,
                    "UYU": 42.30654,
                    "UZS": 10463.052108,
                    "VES": 1112243.83159,
                    "VND": 23064.716159,
                    "VUV": 108.911804,
                    "WST": 2.525273,
                    "XAF": 533.436721,
                    "XAG": 0.036278,
                    "XAU": 0.000513,
                    "XCD": 2.70255,
                    "XDR": 0.693463,
                    "XOF": 533.436721,
                    "XPD": 0.000405,
                    "XPF": 97.042844,
                    "XPT": 0.000896,
                    "YER": 250.425034,
                    "ZAR": 14.988084,
                    "ZMW": 21.212776,
                    "ZWL": 322.00008
                }
            }
        }
    },
    "success": true
}

Convert currency to another

POST https://fx.tranzak.me/v1/rates/convert

Request Body Parameters

Parameter Type required Description
from String true eg: USD
to String true eg: CNY
amount Number true eg: 1

Response

Parameter Type Description
result Number conversion result
rate Number conversion rate
{
    "data": {
        "result": 6.3705,
        "rate": 6.3705
    },
    "success": true
}

Get currencies

https Request

POST https://fx.tranzak.me/v1/rates/currencies

Request Body Parameters

None

Response

{
    "data": {
        "currencies": {
            "AED": "United Arab Emirates Dirham",
            "AFN": "Afghan Afghani",
            "ALL": "Albanian Lek",
            "AMD": "Armenian Dram",
            "ANG": "Netherlands Antillean Guilder",
            "AOA": "Angolan Kwanza",
            "ARS": "Argentine Peso",
            "AUD": "Australian Dollar",
            "AWG": "Aruban Florin",
            "AZN": "Azerbaijani Manat",
            "BAM": "Bosnia-Herzegovina Convertible Mark",
            "BBD": "Barbadian Dollar",
            "BDT": "Bangladeshi Taka",
            "BGN": "Bulgarian Lev",
            "BHD": "Bahraini Dinar",
            "BIF": "Burundian Franc",
            "BMD": "Bermudan Dollar",
            "BND": "Brunei Dollar",
            "BOB": "Bolivian Boliviano",
            "BRL": "Brazilian Real",
            "BSD": "Bahamian Dollar",
            "BTC": "Bitcoin",
            "BTN": "Bhutanese Ngultrum",
            "BWP": "Botswanan Pula",
            "BYN": "Belarusian Ruble",
            "BZD": "Belize Dollar",
            "CAD": "Canadian Dollar",
            "CDF": "Congolese Franc",
            "CHF": "Swiss Franc",
            "CLF": "Chilean Unit of Account (UF)",
            "CLP": "Chilean Peso",
            "CNH": "Chinese Yuan (Offshore)",
            "CNY": "Chinese Yuan",
            "COP": "Colombian Peso",
            "CRC": "Costa Rican Colón",
            "CUC": "Cuban Convertible Peso",
            "CUP": "Cuban Peso",
            "CVE": "Cape Verdean Escudo",
            "CZK": "Czech Republic Koruna",
            "DJF": "Djiboutian Franc",
            "DKK": "Danish Krone",
            "DOP": "Dominican Peso",
            "DZD": "Algerian Dinar",
            "EGP": "Egyptian Pound",
            "ERN": "Eritrean Nakfa",
            "ETB": "Ethiopian Birr",
            "EUR": "Euro",
            "FJD": "Fijian Dollar",
            "FKP": "Falkland Islands Pound",
            "GBP": "British Pound Sterling",
            "GEL": "Georgian Lari",
            "GGP": "Guernsey Pound",
            "GHS": "Ghanaian Cedi",
            "GIP": "Gibraltar Pound",
            "GMD": "Gambian Dalasi",
            "GNF": "Guinean Franc",
            "GTQ": "Guatemalan Quetzal",
            "GYD": "Guyanaese Dollar",
            "HKD": "Hong Kong Dollar",
            "HNL": "Honduran Lempira",
            "HRK": "Croatian Kuna",
            "HTG": "Haitian Gourde",
            "HUF": "Hungarian Forint",
            "IDR": "Indonesian Rupiah",
            "ILS": "Israeli New Sheqel",
            "IMP": "Manx pound",
            "INR": "Indian Rupee",
            "IQD": "Iraqi Dinar",
            "IRR": "Iranian Rial",
            "ISK": "Icelandic Króna",
            "JEP": "Jersey Pound",
            "JMD": "Jamaican Dollar",
            "JOD": "Jordanian Dinar",
            "JPY": "Japanese Yen",
            "KES": "Kenyan Shilling",
            "KGS": "Kyrgystani Som",
            "KHR": "Cambodian Riel",
            "KMF": "Comorian Franc",
            "KPW": "North Korean Won",
            "KRW": "South Korean Won",
            "KWD": "Kuwaiti Dinar",
            "KYD": "Cayman Islands Dollar",
            "KZT": "Kazakhstani Tenge",
            "LAK": "Laotian Kip",
            "LBP": "Lebanese Pound",
            "LKR": "Sri Lankan Rupee",
            "LRD": "Liberian Dollar",
            "LSL": "Lesotho Loti",
            "LYD": "Libyan Dinar",
            "MAD": "Moroccan Dirham",
            "MDL": "Moldovan Leu",
            "MGA": "Malagasy Ariary",
            "MKD": "Macedonian Denar",
            "MMK": "Myanma Kyat",
            "MNT": "Mongolian Tugrik",
            "MOP": "Macanese Pataca",
            "MRU": "Mauritanian Ouguiya",
            "MUR": "Mauritian Rupee",
            "MVR": "Maldivian Rufiyaa",
            "MWK": "Malawian Kwacha",
            "MXN": "Mexican Peso",
            "MYR": "Malaysian Ringgit",
            "MZN": "Mozambican Metical",
            "NAD": "Namibian Dollar",
            "NGN": "Nigerian Naira",
            "NIO": "Nicaraguan Córdoba",
            "NOK": "Norwegian Krone",
            "NPR": "Nepalese Rupee",
            "NZD": "New Zealand Dollar",
            "OMR": "Omani Rial",
            "PAB": "Panamanian Balboa",
            "PEN": "Peruvian Nuevo Sol",
            "PGK": "Papua New Guinean Kina",
            "PHP": "Philippine Peso",
            "PKR": "Pakistani Rupee",
            "PLN": "Polish Zloty",
            "PYG": "Paraguayan Guarani",
            "QAR": "Qatari Rial",
            "RON": "Romanian Leu",
            "RSD": "Serbian Dinar",
            "RUB": "Russian Ruble",
            "RWF": "Rwandan Franc",
            "SAR": "Saudi Riyal",
            "SBD": "Solomon Islands Dollar",
            "SCR": "Seychellois Rupee",
            "SDG": "Sudanese Pound",
            "SEK": "Swedish Krona",
            "SGD": "Singapore Dollar",
            "SHP": "Saint Helena Pound",
            "SLL": "Sierra Leonean Leone",
            "SOS": "Somali Shilling",
            "SRD": "Surinamese Dollar",
            "SSP": "South Sudanese Pound",
            "STD": "São Tomé and Príncipe Dobra (pre-2018)",
            "STN": "São Tomé and Príncipe Dobra",
            "SVC": "Salvadoran Colón",
            "SYP": "Syrian Pound",
            "SZL": "Swazi Lilangeni",
            "THB": "Thai Baht",
            "TJS": "Tajikistani Somoni",
            "TMT": "Turkmenistani Manat",
            "TND": "Tunisian Dinar",
            "TOP": "Tongan Pa'anga",
            "TRY": "Turkish Lira",
            "TTD": "Trinidad and Tobago Dollar",
            "TWD": "New Taiwan Dollar",
            "TZS": "Tanzanian Shilling",
            "UAH": "Ukrainian Hryvnia",
            "UGX": "Ugandan Shilling",
            "USD": "United States Dollar",
            "UYU": "Uruguayan Peso",
            "UZS": "Uzbekistan Som",
            "VEF": "Venezuelan Bolívar Fuerte (Old)",
            "VES": "Venezuelan Bolívar Soberano",
            "VND": "Vietnamese Dong",
            "VUV": "Vanuatu Vatu",
            "WST": "Samoan Tala",
            "XAF": "CFA Franc BEAC",
            "XAG": "Silver Ounce",
            "XAU": "Gold Ounce",
            "XCD": "East Caribbean Dollar",
            "XDR": "Special Drawing Rights",
            "XOF": "CFA Franc BCEAO",
            "XPD": "Palladium Ounce",
            "XPF": "CFP Franc",
            "XPT": "Platinum Ounce",
            "YER": "Yemeni Rial",
            "ZAR": "South African Rand",
            "ZMW": "Zambian Kwacha",
            "ZWL": "Zimbabwean Dollar"
        }
    },
    "success": true
}

git

Summary

Git is a free and open source distributed version control system that's responsible for everything that happens locally remotely on your computer or remotely on your server.

This cheat sheet features the most important and commonly used Git commands for easy reference.


SETUP


Configuring user information used across all local repositories.

> git config --global user.name “[firstname lastname]”

## set a name that is identifiable for credit when review version history
> git config --global user.email “[valid-email]”

## set an email address that will be associated with each history marker
> git config --global credential.helper cache

## cache your login credentials in Git.
> git config -l

## list all git current configuration.
> git config --global color.ui auto

## set automatic command line coloring for Git for easy reviewing

SETUP & INIT


> git init

## initialize an existing directory as a Git repository
> git clone [url]

## retrieve an entire repository from a hosted location via URL

STAGE & SNAPSHOT


Working with snapshots and the Git staging area.

> git status

## show modified files in working directory, staged for your next commit
> git add [file]

## add a file as it looks now to your next commit (stage)
> git diff

## diff of what is changed but not staged.
> git diff --staged

## didiff of what is staged but not yet commited.
> git commit -m “[descriptive message]”

## commit your staged content as a new commit snapshot.

BRANCH & MERGE


Isolating work in branches, changing context, and integrating changes.

> git branch

## list your branches. a * will appear next to the currently active branch.
> git branch [branch-name]

## create a new branch at the current commit.
> git checkout

## switch to another branch and check it out into your working directory.
> git merge [branch]

## merge the specified branch’s history into the current one.
> git log

## show all commits in the current branch’s history.

INSPECT & COMPARE


Examining logs, diffs and object information.

> git log

## show the commit history for the currently active branch.
> git log branchB..branchA

## show the commits on branchA that are not on branchB.
> git log --follow [file]

## show the commits that changed file, even across renames.
> git diff branchB...branchA

## show the diff of what is in branchA that is not in branchB.
> git show [SHA]

## show any object in Git in human-readable format.

SHARE & UPDATE


Retrieving updates from another repository and updating local repos.

> git remote add [alias] [url]

## add a git URL as an alias.
> git fetch [alias]

## fetch down all the branches from that Git remote.
> git merge [alias]/[branch]

## merge a remote branch into your current branch to bring it up to date.
> git push [alias] [branch]

## Transmit local branch commits to the remote repository branche.
> git pull

## fetch and merge any commits from the tracking remote branch.

REWRITE HISTORY


Rewriting branches, updating commits and clearing history.

> git rebase [branch]

## apply any commits of current branch ahead of specified one.
> git reset --hard [commit]

## clear staging area, rewrite working tree from specified commit.

TEMPORARY COMMITS


Temporarily store modified, tracked files in order to change branches.

> git stash

## Save modified and staged changes.
> git stash list

## list stack-order of stashed file changes.
> git stash pop

## write working from top of stash stack.
> git stash drop

## discard the changes from top of stash stack.

TRACKING PATH CHANGES


Versioning file removes and path changes.

> git rm [file]

## delete the file from project and stage the removal for commit.
> git mv [existing-path] [new-path]

## change an existing file path and stage the move.
> git log --stat -M

## show all commit logs with indication of any paths that moved.

TRACKING PATH CHANGES


Preventing unintentional staging or commiting of files.

logs/
*.notes
pattern*/

## Save a file with desired paterns as .gitignore with either direct string matches or wildcard globs.
> git config --global core.excludesfile [file]

## system wide ignore patern for all local repositories.

Summary


The following section presents some conventions to respect when committing on different projects.

These will facilitate the understanding of each commit and the traceability when necessary.


1. Commit messages conventions



1.1. Goals


Generally, commit messages conventions has many advantages. But herein and for now, we just retain three main goals for our conventions :


1.1.1. Generating CHANGELOG.md


We could use these three sections in changelog: new features, bug fixes, breaking changes. This list could be generated by script when doing a release. Along with links to related commits. Of course you can edit this change log before actual release, but it could generate the skeleton.

List of all subjects (first lines in commit message) since last release:

> git log <last tag> HEAD --pretty=format:%s

New features in this release

> git log <last release> HEAD --grep feature

1.1.2. Recognizing unimportant commits


These are formatting changes (adding/removing spaces/empty lines, indentation), missing semi colons, comments. So when you are looking for some change, you can ignore these commits - no logic change inside this commit.

When bisecting, you can ignore these by:

> git bisect skip $(git rev-list --grep irrelevant <good place> HEAD)

1.1.3. Provide more information when browsing the history


This would add kinda “context” information. Look at these messages :

All of these messages try to specify where is the change. But they don’t share any convention...

Now, look at these messages:

Are you able to guess what’s inside ? These messages miss place specification... So maybe something like parts of the code: docs, docs-parser, compiler, scenario-runner, …

Of course, you can find this information by checking which files had been changed, but that’s slow. And when looking in git history I can see all of us tries to specify the place, only missing the convention.


1.2. Format of the commit message


<type>(<scope>): <subject>
<!-- <BLANK LINE> -->
<body>
<!-- <BLANK LINE> -->
<footer>

Note : Any line of the commit message cannot be longer 100 characters! This allows the message to be easier to read on gitlab as well as in various git tools.

A commit message consists of a header, a body and a footer, each separated by a blank line.


1.2.1. Message header


The message header is a single line that contains succinct description of the change containing a type, an optional scope and a subject.


1.2.1.1. Allowed <type>

This describes the kind of change that this commit is providing.


1.2.1.2. Allowed <scope>

Scope can be anything specifying place of the commit change. It can be a module or a specific folder, if the project is organized in that way. For example in trec, we can list chat, notifications, invoice as modules. Therefore, they define some valid scopes.

In case some module/folders exists many times but nested in different modules/folders, just use a double semi-column to specify the module from the parent to the child.

Look at the image above. If your work only affect the child-module in products module, your scope will then be products::child-module.

Additionnaly, You can use * if there isn't a more fitting scope.


1.2.1.3. <subject> text

This is a very short description of the change.


1.2.2. Message body


Explain the motivation for the change in the commit message body. This commit message should explain why you are making the change. You can include a comparison of the previous behavior with the new behavior in order to illustrate the impact of the change.

Just as in <subject> use imperative, present tense: “change” not “changed” nor “changes”

Resources :

1.2.3.1. Referencing issues

Closed bugs should be listed on a separate line in the footer prefixed with "Closes" keyword like this:

Closes #234

or in case of multiple issues:

Closes #123, #245, #992


1.2.3.2. Breaking changes

All breaking changes have to be mentioned as a breaking change block in the footer, which should start with the word BREAKING CHANGE: with a space or two newlines. The rest of the commit message is then the description of the change, justification and migration notes.

The following code shows an expanded breaking change description.

BREAKING CHANGE: isolate scope bindings definition has changed and
    the inject option for the directive controller injection was removed.
    
    To migrate the code follow the example below:
    
    Before:
    
    scope: {
        myAttr: 'attribute',
        myBind: 'bind',
        myExpression: 'expression',
        myEval: 'evaluate',
        myAccessor: 'accessor'
    }
    
    After:
    
    scope: {
        myAttr: '@',
        myBind: '@',
        myExpression: '&',
        // myEval - usually not useful, but in cases where the expression is assignable, you can use '='
        myAccessor: '=' // in directive's template change myAccessor() to myAccessor
    }

The removed `inject` wasn't generaly useful for directives so there should be no code using it.

1.2.3.3. Depreciated

Similarly, a Deprecation section should start with "DEPRECATED: " followed by a short description of what is deprecated, a blank line, and a detailed description of the deprecation that also mentions the recommended update path.

    DEPRECATED: <what is deprecated>
    <!-- <BLANK LINE> -->
    <deprecation description + recommended update path>
    <!-- <BLANK LINE> -->
    <!-- <BLANK LINE> -->
    Closes #<pr number>

1.2.4. Revert a commit


If the commit reverts a previous commit, its header should begin with revert: , followed by the header of the reverted commit. In the body it should say: This reverts commit <hash>., where the hash is the SHA of the commit being reverted.


1.3. Examples


1. New feature on module $browser breaks another one.

feat($browser): onUrlChange event (popstate/hashchange/polling)

Added new event to $browser:
- forward popstate event if available
- forward hashchange event if popstate not available
- do polling when neither popstate nor hashchange available

Breaks $browser.onHashChange, which was removed (use onUrlChange instead)

2. Bug fix on module $compile breaks some others and closes an issue.

fix($compile): couple of unit tests for IE9

Older IEs serialize html uppercased, but IE9 does not...
Would be better to expect case insensitive, unfortunately   jasmine does
not allow to user regexps for throw expectations.

Closes #392
Breaks foo.bar api, foo.baz should be used instead

3. Beautifying code

style($location): add couple of missing semi colons

4. Documentation

docs(guide): update fixed docs from Google Docs

Couple of typos fixed:
- indentation
- batchLogbatchLog -> batchLog
- start periodic checking
- missing brace

5. New feature with full described breaking change

feat($compile): simplify isolate scope bindings

Changed the isolate scope binding options to:
- @attr - attribute binding (including interpolation)
- =model - by-directional model binding
- &expr - expression execution binding

This change simplifies the terminology as well as
number of choices available to the developer. It
also supports local name aliasing from the parent.

BREAKING CHANGE: isolate scope bindings definition has changed and
the inject option for the directive controller injection was removed.

To migrate the code follow the example below:

Before:

scope: {
myAttr: 'attribute',
myBind: 'bind',
myExpression: 'expression',
myEval: 'evaluate',
myAccessor: 'accessor'
}

After:

scope: {
myAttr: '@',
myBind: '@',
myExpression: '&',
// myEval - usually not useful, but in cases where the expression is assignable, you can use '='
myAccessor: '=' // in directive's template change myAccessor() to myAccessor
}

The removed `inject` wasn't generaly useful for directives so there should be no code using it.

Coding style conventions

See Google JavaScript Style Guide

infra

Common API PATH Convention

System Architecture Diagram

Intro

  1. All API requests will be made through the same domain, and will be routed based on the uri prefix(service type code)
  2. The URI prefix of our APIs will based on an internal code,hence not exposing the service name(or business line's name)。if you need a new URI prefix, please send an email to rolland.ntague@tranzak.net to request one.

API Convention

environment domain
production api.tranzak.me
staging staging-api.tranzak.me
dev dev-api.tranzak.me

Prefix allocation

Naming convention:service type code+(random value+1-digit index number)

Service Type/Module Code

Service Type api prefix
main aa
user ba
users behavior bb
monitoring be
chat af
education ji
orders da
ecomm mg
file management cb
product da
notification co
activities ea
payment tz

routing table: available services

service type module/service api prefix maintainer remark
main aa mini apps, App /aa038 Rolland APP's main API prefix
user ba user-center /ba021 Rolland
user-api /ba038 Rolland
chat chat service /af028 Rolland
edu edu mp backend /ji036 Rolland
file management fms /cb068 Rolland port 3003
notification notification service /co018 Rolland
monitoring tracing service /be139 Rolland
ecomm Trec /mg210 Rolland
payment cortex merchant APIs /mapi Rolland external use, exposed to third party
payment cortex APIs /fapi Rolland internal only
payment merchant solutions /tz988 Rolland
Yannick shopping /mg211 Rolland Appartments
forwarding aliases service name

userCenter

Role Based Access Control

The section is for all access control related API, such creating users and assigning them a role. Then managing those using.

CREATE NEW STAFF USER API

https Request

POST https://staging-api.tranzak.me/ba021/v1/merchant/new

Request Body Parameters

Parameter Type required Description
firstName String true first name
lastName String true last name
phone String true phone eg: +237672998876
role Number true 100: 'Non Staff', 105: "Other Staff", 110: "IT/ Developer", 115: "Auditor", 120: "Support" , 125: "Analyst",130: "Manager", 1000: 'Super Admin/ Owner'
orgId String true Organization Id. That's the orgId of the person creating this user.
avatar String false profile picture
remark String false remark from the user creating
email String false user email
sex number false user gender 0 unknown(user didn't choose), 1 male , 2 female, 3 other
address String false user address

Response

{
    "data": {
        "user": {
            "sex": 0,
            "role": 130,
            "firstName": "Ansel",
            "lastName": "Ayuk",
            "orgId": "345666",
            "phone": "+237678727139",
            "openId": "a4533f96f8fd4cb1936319e9fb1d622b345666",
            "ufID": "z758twy8g8ywg3",
            "userId": "a4533f96f8fd4cb1936319e9fb1d622b"
        }
    },
    "success": true
}

https Request

POST https://staging-api.tranzak.me/ba021/v1/merchant/list

Request Body Parameters

Parameter Type required Description
pageNum Number false current page, default 1, starts from 1
pageSize Number false page size, default 10
searchParams Object false an object containing one or more key:value pair or the fields to search. Almost every field on the user object is searchable. Note: for date range search: startDate and endDate are both quired

Example body params:

// Example get list(search) request body params:
{  
   "pageNum":1,
   "pageSize":10,
    "searchParams": {
        "startDate":"2021-10-11",
        "endDate":"2021-10-15",
        "firstName":"Ansel",
        "status": 1
    }
}

Response

//sample list response (with pagination info)
{
    "data": {
        "list": [
            {
                "sex": 0,
                "role": 110,
                "firstName": "Test3",
                "lastName": "Test3",
                "orgId": "6efccb9633964441a03914fb48f63e30",
                "phone": "+237678722149",
                "openId": "561f21c43bcd409c83d53ae667c200516efccb9633964441a03914fb48f63e30",
                "ufID": "yq0j2nfqflq02g",
                "userId": "561f21c43bcd409c83d53ae667c20051"
            },
            {
                "sex": 0,
                "role": 110,
                "firstName": "Test2",
                "lastName": "Test2",
                "orgId": "6efccb9633964441a03914fb48f63e30",
                "phone": "+237678723149",
                "openId": "de91d5bdd7964b978ca8f7d6d5d10de46efccb9633964441a03914fb48f63e30",
                "ufID": "5kgze1swkuk2sf",
                "userId": "de91d5bdd7964b978ca8f7d6d5d10de4"
            },
            {
                "sex": 0,
                "role": 130,
                "firstName": "Test",
                "lastName": "Test User Updated",
                "orgId": "6efccb9633964441a03914fb48f63e30",
                "phone": "+237678727149",
                "openId": "5faf22dc38604df0ae47254703ea217e6efccb9633964441a03914fb48f63e30",
                "ufID": "c5lyby31ss2aju",
                "userId": "5faf22dc38604df0ae47254703ea217e"
            }
        ],
        "total": 3,
        "totalPages": 1,
        "hasMore": false
    },
    "success": true
}

UPDATE STAFF USER API

https Request

PUT https://staging-api.tranzak.me/ba021/v1/merchant/user

Request Body Parameters

Parameter Type required Description
userId String true userId of the user being edited
any other field N/A false or or more fields to update

Response

{
    "data": {
        "user": {
            "sex": 0,
            "role": 130,
            "firstName": "Test",
            "lastName": "Test User Updated",
            "orgId": "6efccb9633964441a03914fb48f63e30",
            "phone": "+237678727149",
            "openId": "5faf22dc38604df0ae47254703ea217e6efccb9633964441a03914fb48f63e30",
            "ufID": "c5lyby31ss2aju",
            "userId": "5faf22dc38604df0ae47254703ea217e"
        }
    },
    "success": true
}

DELETE STAFF USER API

https Request

POST https://staging-api.tranzak.me/ba021/v1/merchant/delete/:userId

eg: POST https://staging-api.tranzak.me/ba021/v1/merchant/delete/5faf22dc38604df0ae47254703ea217e

Request Body Parameters

None

Request URL Parameters

Parameter Type required Description
userId String true userId of the user being deleted

Response

{
    "data": {
        "deleted": true
    },
    "success": true
}

ORG/MERCHANT AUTHENTICATION

User login using JWT token

Org/Merchant user

POST https://staging-api.tranzak.me/ba021/v1/org/login

Request Header Parameters

Parameter Type required Description
x-platform-id String true eg: 9rem6jwjc3a5

Request Body Parameters

Parameter Type required Description
email String true email
password String true password
phone String true phone eg: +237672998876

Response

{
    "data": {
        "user": {
            "userId": "743fbb81a7d4490f8b22f026c7c769ab",
            "firstName": "Rolland Cortex",
            "lastName": "Admin",
            "ufId": "o5knwhsvtlejxr",
            "userType": 2,
            "role": 1000,
            "orgId": "fpq0lbb0qqy6z8",
            "scopeId": "9rem6jwjc3a5",
            "phone": "+237691115489"
        },
        "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI3NDNmYmI4MWE3ZDQ0OTBmOGIyMmYwMjZjN2M3NjlhYiIsImZpcnN0TmFtZSI6IlJvbGxhbmQgQ29ydGV4IiwibGFzdE5hbWUiOiJBZG1pbiIsInVmSWQiOiJvNWtud2hzdnRsZWp4ciIsInVzZXJUeXBlIjoyLCJyb2xlIjoxMDAwLCJvcmdJZCI6ImZwcTBsYmIwcXF5Nno4Iiwic2NvcGVJZCI6IjlyZW02andqYzNhNSIsInBob25lIjoiKzIzNzY5MTExNTQ4OSIsImlhdCI6MTY0NzI4MzQ5OSwiZXhwIjoxNjQ5MzU3MDk5fQ.jtZer_L4_fFzPVZQfvA6tcUmoguWVCD2NpWdsYmZjeY"
    },
    "success": true
}

ORG/Edit profile

The user can edit displayName,firstName,lastName,sex,dob,avatar,role,address, password

PUT https://staging-api.tranzak.me/ba021/v1/org/user

Request Body Parameters

Parameter Type required Description
userId String true Id of the user we want to edit
displayName String false email
firstName String false firstName
lastName String false lastName
address String false address
avatar String false avatar
sex Number false 0 unknown, 1 male , 2 female, 3 other
role String false role, can only be changed by user with role admin
phone String false phone eg: +237672998876
dob String false date of birth eg: 2020-03-19

Response

{
    "data": {},
    "success": true
}

Reset password

POST https://staging-api.tranzak.me/ba021/v1/org/reset-password

Request Body Parameters

Parameter Type required Description
oldPassword String true oldPassword
newPassword String true newPassword

Response

{
    "data": {
        "completed": true
    },
    "success": true
}

Reset Payment Pin

POST https://staging-api.tranzak.me/ba021/v1/org/payment/reset-pin

Request Body Parameters

Parameter Type required Description
oldPin String true old pin
newPin String true new pin

Response

{
    "data": {
        "completed": true
    },
    "success": true
}

Set Payment Pin

POST https://staging-api.tranzak.me/ba021/v1/org/payment/set-pin

Request Body Parameters

Parameter Type required Description
pin String true user's pin

Response

{
    "data": {
        "completed": true
    },
    "success": true
}

Service Token Auth

https Request

POST https://staging-api.tranzak.me/ba021/v1/services/userInfo

Request Body Parameters

None

Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Parameter Type Description
ufID String User friendly Id(unique)
userId String User Mongo Id (unique)
phone String User phone
firstName String First Name
lastName String Last Name
role Int user role
{
    "data": {
        "userInfo": {
            "userId": "38b73cb0e50d4872805fe82e0b171f55",
            "firstName": "",
            "lastName": "",
            "ufId": "4szmwnjwt7mwm0",
            "role": 101,
            "phone": "+237692098168"
        }
    },
    "success": true
}
 // will be called by other services to check token validity
  validateToken: async (req, res, next) => {
    try {
      const userServiceResp = await new Request(req).post(config.serviceUrls.user.checkToken, {});

      if (userServiceResp && userServiceResp.userInfo && userServiceResp.userInfo.userId) {
        req.ufId = userServiceResp.userInfo.ufId;
        req.userId = userServiceResp.userInfo.userId;

        return next();
      } else {
        console.log('====Invalid token------');
        return APIResponse.failResponse(res, "Invalid token", 40001);

      }
    } catch (error) {
      console.log('decode error----|||||||---', error);
      throw error;
    }
  }

Service Org Token Auth/For merchant BO and Sanaga

https Request

POST https://staging-api.tranzak.me/ba021/v1/services/org/userInfo

Request Body Parameters

None

Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Parameter Type Description
ufID String User friendly Id(unique)
userId String User Mongo Id (unique)
phone String User phone
firstName String First Name
lastName String Last Name
role Int user role
{
    "data": {
        "userInfo": {
            "userId": "38b73cb0e50d4872805fe82e0b171f55",
            "firstName": "",
            "lastName": "",
            "ufId": "4szmwnjwt7mwm0",
            "role": 101,
            "phone": "+237692098168"
        }
    },
    "success": true
}
 // will be called by other services to check token validity
  validateToken: async (req, res, next) => {
    try {
      const userServiceResp = await new Request(req).post(config.serviceUrls.user.checkToken, {});

      if (userServiceResp && userServiceResp.userInfo && userServiceResp.userInfo.userId) {
        req.ufId = userServiceResp.userInfo.ufId;
        req.userId = userServiceResp.userInfo.userId;

        return next();
      } else {
        console.log('====Invalid token------');
        return APIResponse.failResponse(res, "Invalid token", 40001);

      }
    } catch (error) {
      console.log('decode error----|||||||---', error);
      throw error;
    }
  }

Get appId By User ScopeId

https Request

POST https://staging-api.tranzak.me/ba021/v1/services/user/appId

Request Body Parameters

Query Parameters

Parameter Type required Description
appType String true the application type to which the user belongs to mp, bo(back office), app (tranzak app)
scopeId String true The scope Id of the user

Response

Parameter Type Description
appId String app Id
{
    "data": {
        "appId": "4szmwnjwt7mwm0",
    "success": true
}

Validate/Verify User Pin

https Request

POST https://staging-api.tranzak.me/ba021/v1/services/validate-pin

Request Body Parameters

Parameter Type required Description
pin String true User's 6 digit pin
userId String true userId

Response

Parameter Type Description
isValidPin Bool Whether Pin is valid or not
{
    "data": {
    },
    "success": true
}

Base Url

https://[staging-]api.tranzak.me/ba021

Get User By Phone

https Request

POST /v1/org/auByPhone

Request Body Parameters

Parameter Type required Description
phone String true phone number to search by

Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Parameter Type Description
ufID String User friendly Id(unique)
userId String User Mongo Id (unique)
phone String User phone
email String email
firstName String First Name
lastName String Last Name
role Int user role
{
    "data": {
        "userInfo": {
            "userId": "38b73cb0e50d4872805fe82e0b171f55",
            "firstName": "",
            "lastName": "",
            "ufId": "4szmwnjwt7mwm0",
            "role": 101,
            "phone": "+237692098168"
        }
    },
    "success": true
}

User List

https Request

POST /v1/sanaga/list

Get all org users regardless of their types.

Request Body Parameters

Parameter Type required Description
pageNum Number false current page, default 1, starts from 1
pageSize Number false page size, default 10
searchParams Object false an object containing one or more key:value pair or the fields to search. Almost every field on the user object is searchable. Note: for date range search: startDate and endDate are both quired

Example body params:

// Example get list(search) request body params:
{  
   "pageNum":1,
   "pageSize":10,
    "searchParams": {
        "startDate":"2021-10-11",
        "endDate":"2021-10-15",
        "userType":2,
        "status": 1,
        "email": "email@example.com",
        "phone":"+237671922822"
    }
}

Response

//sample list response (with pagination info)
{
    "data": {
        "list": [
            {
                "sex": 0,
                "role": 1000,
                "firstName": "Test2",
                "lastName": "Test2",
                "orgId": "tzgze1swkuk2sf",
                "phone": "+237678723149",
                "openId": "de91d5bdd7964b978ca8f7d6d5d10de46efccb9633964441a03914fb48f63e30",
                "ufID": "tzgze1swkuk2sf",
                "userId": "de91d5bdd7964b978ca8f7d6d5d10de4"
            },
            {
                "sex": 1,
                "role": 1000,
                "firstName": "Test",
                "lastName": "Test User Updated",
                "orgId": "tzgze1sw1uk2sf",
                "phone": "+237678727149",
                "openId": "5faf22dc38604df0ae47254703ea217e6efccb9633964441a03914fb48f63e30",
                "ufID": "tzgze1sw1uk2sf",
                "userId": "5faf22dc38604df0ae47254703ea217e"
            }
        ],
        "total": 3,
        "totalPages": 1,
        "hasMore": false
    },
    "success": true
}

invoices

Invoices

Merchant invoice

BaseUrl

https://{staging-}api.tranzak.me/tz988

Create (from scratch)

Creates an invoice from scratch

Endpoint

POST /v1/invoice/service/create

Request Body Parameters

Parameter Type required Description
orgId String true Merchant's transaction orgId
title String true Invoice title
currencyCode String false default XAF the invoice currency code. Defaults to user's currency code
mchInvoiceRef String false user's custom invoice ref
serviceId String false calling service's ref id. Used to track invoices and do a one to one mapping between the calling service and the invoice service
appId String false additional filtering parameter besides serviceId
totalTax String false tax if applicable. default : 0
billToName String false Name of invoice
billToAddress String false payer address
billToEmail String false payer email address
createdByUserId String false Tranzak userId of the person creating the invoice from the bo
memo String false Memo
activateUponCreation Boolean false the invoice will start immediately from status pending instead of draft
items List true JSON representation of the items (see request body)
receivingAccountId String false The MERCHANT account type account ID that the invoice will be paid into. Default : merchant default account
issueDate String false Invoice date of issue
dueDate String false Invoice due date
acceptPartialPayments Boolean false Partial payments accepted . default: true
serviceCallbackUrl String false endpoint to call when ever there is a new payment

Sample request body

{
    "serviceId": "eaouoda38d0dhadfd",
    "userInvoiceRef" : "5555" ,
    "title" : "invoice tiles" ,
    "totalTax" : 100,
    "billToName" : "Tranzak Descriptinaria" ,
    "billToAddress" : "Rue Drouot" ,
    "billToEmail" : "trrr@tranzak.net" ,
    "memo" : "Memo for schoolmo for schoolmo for schoolmo for schoolmo for s" ,
    "acceptPartialPayments" : true,
    "receivingAccountId" : "MSAQM5SZWXUMAJANC78J",
 
    
    
"items" : [
    {
        "itemDescription" : "some item1" ,
        "unitPrice" : 1000,
        "quantity" : 2
    },
    {
        "itemDescription" : "some item2" ,
        "unitPrice" : 100,
        "quantity" : 1
    },
    {
        "itemDescription" : "some item3" ,
        "unitPrice" : 300,
        "quantity" : 5
    },
]
 
 
}

Response

See VIEW section

Upload an invoice

Uploads an invoice file

Request body

Parameter Type required Description
orgId String true Merchant's transaction orgId
title String true Invoice title
currencyCode String false default XAF the invoice currency code. Defaults to user's currency code
mchInvoiceRef String false user's custom invoice ref
serviceId String false calling service's ref id. Used to track invoices and do a one to one mapping between the calling service and the invoice service
totalTax String false tax if applicable. default : 0
billToName String false Name of invoice
billToAddress String false payer address
billToEmail String false payer email address
createdByUserId String false Tranzak userId of the person creating the invoice from the bo
memo String false Memo
items List true JSON representation of the items (see request body)
receivingAccountId String false The MERCHANT account type account ID that the invoice will be paid into. Default : merchant default account
issueDate String false Invoice date of issue
dueDate String false Invoice due date
acceptPartialPayments Boolean false Partial payments accepted?

Response

The response is described in the VIEW section

Edit/Update Invoice

Updates an invoice model

Endpoint

POST /v1/invoice/service/update

Request Body Parameters

Parameter Type required Description
_id String true GC code

See [[CREATE]] for other params

Response

See the VIEW section

View

Shows invoice data

Endpoint

POST /v1/invoice/service/get-by-invoiceId

Parameter Type required Description
id String true invoiceId eg: IVN3GZ8U9RP6M0QMLP

Request Body Parameters

Issues a GET request

Response

{
    "data": {
        "statusText": "Partially Paid",
        "type": 1,
        "status": 3,
        "totalPaid": 300,
        "totalTax": 300,
        "subtotal": 0,
        "amountWithoutTax": 3000,
        "mchInvoiceRef": "",
        "serviceId": "",
        "acceptPartialPayments": true,
        "isDeleted": false,
        "_id": "64e36398343f9167a7821807",
        "billToName": "Ansel Ayk",
        "clientNote": "",
        "dueDate": "2023-08-31T00:00:00.000Z",
        "items": [
            {
                "unitPrice": 1000,
                "quantity": 3,
                "itemDescription": "One item",
                "_id": "64e353efc9d76861681073fgh"
            },
                 {
                "unitPrice": 300,
                "quantity": 3,
                "itemDescription": "Another item",
                "_id": "64e353efc9d7686168107lk9"
            }
        ],
        "fileUrl": null,
        "receivingAccountId": null,
        "title": "New invoice",
        "createdByUserId": "6c08587665c94c0c88bcf95f56b3ff39",
        "orgDisplayName": "Liverpool Org updated",
        "orgName": "Anseloh org",
        "orgLogo": "https://staging-fms.tranzak.me/cdn/pf/arjtsg3t286q4dga_103445.87978898482imagepicker6A937A5A52374579B7D0060C98DD1F55166540000094398F4E27C.jpg",
        "currencyCode": "XAF",
        "orgId": "tz32elknz06ic8el",
        "invoiceId": "IVX0BQTY7FRAH28Q2E",
        "issueDate": "2023-08-21T13:16:08.727Z",
        "createdAt": "2023-08-21T13:16:08.728Z",
        "updatedAt": "2023-08-21T13:18:36.269Z",
        "__v": 0,
        "links": {
            "payerUrl": "https://staging-collections.tranzak.me/pay/invoice/IVX0BQTY7FRAH28Q2E",
            "payerShortUrl": "https://link.tranzak.net/Wg8zXiHbcZvByLVUA"
        }
    },
    "success": true
}

List

Get all invoices with filters

Endpoint

GET /v1/invoice/service/all-by-org

Filter parameters

Parameter Type required Description
orgId String true orgId of the organization
pageNum Number false default 1
pageSize Number false default 20
startDate String false date filter
endDate String false date filter
status String false status filter
title String false title fuzzy search filter

Response

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
           {
              "statusText": "Partially Paid",
        "type": 1,
        "status": 3,
        "totalPaid": 300,
        "totalTax": 300,
        "subtotal": 0,
        "amountWithoutTax": 3000,
        "mchInvoiceRef": "",
        "serviceId": "",
        "acceptPartialPayments": true,
        "isDeleted": false,
        "_id": "64e36398343f9167a7821807",
        "billToName": "Ansel Ayk",
        "clientNote": "",
        "dueDate": "2023-08-31T00:00:00.000Z",
        "items": [
            {
                "unitPrice": 1000,
                "quantity": 3,
                "itemDescription": "One item",
                "_id": "64e353efc9d76861681073fgh"
            },
                 {
                "unitPrice": 300,
                "quantity": 3,
                "itemDescription": "Another item",
                "_id": "64e353efc9d7686168107lk9"
            }
        ],
        "fileUrl": null,
        "receivingAccountId": null,
        "title": "New invoice",
        "createdByUserId": "6c08587665c94c0c88bcf95f56b3ff39",
        "orgDisplayName": "Liverpool Org updated",
        "orgName": "Anseloh org",
        "orgLogo": "https://staging-fms.tranzak.me/cdn/pf/arjtsg3t286q4dga_103445.87978898482imagepicker6A937A5A52374579B7D0060C98DD1F55166540000094398F4E27C.jpg",
        "currencyCode": "XAF",
        "orgId": "tz32elknz06ic8el",
        "invoiceId": "IVX0BQTY7FRAH28Q2E",
        "issueDate": "2023-08-21T13:16:08.727Z",
        "createdAt": "2023-08-21T13:16:08.728Z",
        "updatedAt": "2023-08-21T13:18:36.269Z",
        "__v": 0,
        "links": {
            "payerUrl": "https://staging-collections.tranzak.me/pay/invoice/IVX0BQTY7FRAH28Q2E",
            "payerShortUrl": "https://link.tranzak.net/Wg8zXiHbcZvByLVUA"
        }
           }
        ],
        "pageSize": 20,
        "totalItems": 2
    },
    "success": true
}

Add a payment

Adds a non-Tranzak payment using some other source

Endpoint

POST /v1/invoice/service/add-payment

Filter parameters

Parameter Type required Description
_id Number true invoice ID
amount Number true amount in invoice currency
paymentSourceId Number true payment source ID 2 => PAYMENT_SOURCE_CASH , 3 => PAYMENT_SOURCE_OTHER_MEANS
note Number true a note
{
    "_id" : "IV375WEJ3BEBPRJ4ZBS3",
    "amount" : 1   ,
    "paymentSourceId" : 2,
    "note" : "We added payment  !"
  
}

List Payments

List payments made to invoices. Use filters to filter through list

Endpoint GET /v1/invoice/service/payments/all-by-org

Request Body (filters)

Parameter Type required Description
_id String false Payment ID
invoiceId String false _id of invoice
paymentId String false payment Id
paymentSourceId String false source ID

RESPONSE

{
    "data": {
        "currentPage": 1,
        "hasMore": false,
        "list": [
            {
                "_id": "IPPHLF5FABCVF2STE1AJ",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:34:29",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            },
            {
                "_id": "IPELPT7YVSEVOMVUQ85F",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:33:37",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            },
            {
                "_id": "IPL8Y0YZRDXOIMG67RDJ",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:33:29",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            },
            {
                "_id": "IPPVRVIJI59TVLFQ6PKM",
                "invoiceId": "IV220216HB6561BKF6I1",
                "amount": 1,
                "paymentId": null,
                "paymentSourceId": "2",
                "note": "We added payment  !",
                "createdAt": "2022-02-16 12:33:10",
                "currencyCode": "XAF",
                "paymentSource": "paid via cash"
            }
        ],
        "pageCount": [
            1,
            50
        ],
        "pageSize": 20,
        "totalItems": 4
    },
    "success": true,
    "dateTime": "2022-02-16T12:44:07+00:00",
    "lang": "en-US",
    "debugInfo": null,
    "debug": {
        "hostname": "cortex01",
        "serverIpAddress": "192.168.137.2",
        "clientIpAddress": "192.168.137.1",
        "duration": "0.044s",
        "userId": "ff1ruzi3vz5o"
    }
}

Other actions

Cancel

Cancels an invoice

Endpoint

POST /v1/invoice/service/cancel

Request Body

{
    "id": "IV220216HB6561BKF6I1"
}

Submit

Submits an invoice in draft status and make it available to receive payment

Endpoint

POST /v1/invoice/service/submit

Request Body

{
    "id": "IV220216HB6561BKF6I1"
}

Mark as paid

Marks the invoice as paid

Endpoint

POST /v1/invoice/service/mark-as-paid

Request body params

Parameter Type required Description
id String true invoiceId eg. IVXXX
paymentSourceId String true _id of invoice
note String true payment Id
{
  "_id": "IVRYCSMGIEW2OO6TMUPY",
   "paymentSourceId" : 1,
   "note" : "We closed this invoice !"
}

jobScheduler

Scheduler

https Request

POST https://agenda.tranzak.me/v1/schedule

{
    "url":"https://staging-api.tranzak.me/aa038/v1/mps",
    "jobName":"name_space-job_name-ref_1id34",
    "time": 5,
    "params":{
        "name":"App Name",
        "desc":"description",
        "categories":["business"],
        "tags":["shopping"],
        "businessName":"test biz name",
        "qrCodeUrl":"https://qrcode.png",
        "logo":"https://logo.png"
    }
}

Query Parameters

Parameter Type required Description
url String true Url that will be queried by the scheduler
jobName String true A name to uniquely identify your job. The jobName can also be used for searching through schedule jobs
time Int true The number of seconds from now until executing the job
params Object false The parameters that will be passed as body while calling the url

merchantSolutions

Create payroll

HTTP Request

POST https://host/~/v1/pay-rolls/create

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Description
name String false Label used to describe the group.
receivers PayRollMember[] true Set of user involved in the current payroll. See PayRollMember described above.

Sample request body

{
  "name": "Sample payroll three",
  "receivers": [
    {"scopeId": "xxxxxxxxxxxxx", "name": "Freddy Kamgang"},
    {"scopeId": "yyyyyyyyyyyyy", "name": "Rebecca Sutter"}
  ]
}

Response

Success Response

{
  "data": {
    "_id": "62015ce7bc07dd182487a317",
    "name": "Sample payroll three",
    "ownerUserId": "e7bc07dd182487a",
    "ownerUserScopeId": "e7bc07dd182487a",
    "users": [
      {
        "_id": "62015ce7bc07dd182487a318",
        "name": "Freddy Kamgang",
        "userScopeId": "xxxxxxxxxxxxx"
      },
      {
        "_id": "62015ce7bc07dd182487a319",
        "name": "Rebecca Sutter",
        "userScopeId": "yyyyyyyyyyyyy"
      }
    ],
    "status": 5,
    "createdAt": "2022-02-07T17:54:47.912Z",
    "updatedAt": "2022-02-07T17:54:47.912Z"
  },
  "success": true
}

Error Response

{
  "errorMsg": "At least one receiver is needed to create a pay roll",
  "errorCode": 0,
  "success": false
}
{
  "errorMsg": "Invalid receiver provided",
  "errorCode": 0,
  "success": false
}

Important notes

If duplicates (in term of scopeId and id) are present in the receivers array, the api will only consider the last occurrence of the duo [scopeId + id].

Types description

/**
* Describes a user involved in a .
*/
class PayRollMember {
  /**
  * `Required`.
  * 
  * ScopeId of the targeted user.
  */
  scopeId!: String;
  /**
  * Exact id of the targeted user.
  */
  id?: String | null | undefined;
  /**
  * FullName of the targeted user.
  */
  name?: String | null | undefined;
}
/**
 * Defines available payroll statuses.
 */
enum PayRollStatus {
  /**
   * By default, only active payroll are returned when querying. 
   */
  Active: 5,
  /**
   * The `Archived` state transcript the fact that the payroll is not deleted, 
   * but it is no more returned when performing normal queries.
   * 
   * You can still decide to show archived payrolls.
   * But even in that way, they would not be in top of the results.
   */
  Archived: 1,
  /**
   * The `Inactive` state is not yet used. 
   * But if you set a payroll as inactive, it will be shown after `Active` and `Archived` payrolls.
   */
  Inactive: -1
}

LIST PAY ROLLS

HTTP Request

POST https://host/~/v1/pay-rolls/all

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Description
name String false Name pattern. Used to filter in name-like way.
status PayRollStatus[] false See PayRollStatus described above.

Request Route Parameters

Parameter Type Default Description
limit Number 20 Number of items to return in single call.
page Number 1 Defines the number of element to offset while querying the storage.

Response

{
"data": {
  "list": [
    {
      "_id": "62015c6cbc07dd182487a313",
      "name": "Sample payroll two",
      "ownerUserId": "efka",
      "ownerUserScopeId": "efka",
      "users": [
          {
            "_id": "62015c6cbc07dd182487a314",
            "name": "Plam Luvifer Morningstar",
            "userScopeId": "morningstar"
          },
          {
            "_id": "62015c6cbc07dd182487a315",
            "name": "Raimond Red Reddington",
            "userScopeId": "reddington"
          },
          {
            "_id": "62015c6cbc07dd182487a316",
            "name": "Wess Gibbings",
            "userScopeId": "gibbings"
          }
      ],
      "status": 5,
      "createdAt": "2022-02-07T17:52:44.896Z",
      "updatedAt": "2022-02-07T17:52:44.896Z"
    },
    {
      "_id": "62015ce7bc07dd182487a317",
      "name": "Sample payroll three",
      "ownerUserId": "efka",
      "ownerUserScopeId": "efka",
      "users": [
        {
          "_id": "62015ce7bc07dd182487a318",
          "name": "Freddy Kmagang",
          "userScopeId": "freddy"
        },
        {
          "_id": "62015ce7bc07dd182487a319",
          "name": "Rebecca sutter",
          "userScopeId": "sutter"
        }
      ],
      "status": 1,
      "createdAt": "2022-02-07T17:54:47.912Z",
      "updatedAt": "2022-02-07T17:54:57.110Z"
    }
  ],
  "total": 3,
  "totalPages": 2,
  "hasMore": true
},
"success": true
}

MARK AS ARCHIVED

HTTP Request

PUT https://host/~/v1/pay-rolls/archive

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Description
id String false Single id of the pay roll to archive.
ids String[] false Collection of pay roll identifiers. If id is also defined, it will be added to this collection.

If both id and ids are not provided, an error message will be returned.

Response

{
"data": {
  "done": true
},
"success": true
}

MARK AS ACTIVE

HTTP Request

PUT https://host/~/v1/pay-rolls/un-archive

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Description
id String false Single id of the pay roll to archive.
ids String[] false Collection of pay roll identifiers. If id is also defined, it will be added to this collection.

If both id and ids are not provided, an error message will be returned.

Response

{
"data": {
  "done": true
},
"success": true
}

NB : Note that all error response shown here are returned in handled error scenario. In case of unhandled error, a dedicated response will be sent.

notifications

Send Notification

HTTP Request

POST https://host/~/co018/v1/notification/send

Request Body Parameters

Parameter Type required Description
appId String true Sending application unique identifier.
platformId String true Sending platform unique identifier.
message String true Content of the notification.
recipient String or String[] or EmailRecipients true Who is the notification intended to. If the notification is an email, it holds the recipient's email. In case it is an SMS, put the phone numbers here. Otherwise, send the target user's scope id.
type NotificationType true Logical type of the sending notification.
platform TargetPlatform true Logical type of the receiving platform.
priority NotificationPriority false Logical level value of the notification's urgency. Default value is NotificationPriority.Regular.
recipientAppType mp or app or bo true Indicates if the notification is for the back office, a mini program or the app itself.
title String true Main title of the notification. In case of email, it represent the subject of the email.
roles Number or Number[] false List of user's roles targeted by the notification.
subTitle String false Additional subject of the notification. In case of email, this will be ignored.
targetUrl String false Url to redirect to, when the user clicks on this notification. In case of email, this will be ignored.
callbackUrl String false POST Url to call once the notification is delivered. Used for Mail and SMS.
sender String false Name of the sender (Mainly used for the website in the contact form).

Types description


 /**
  * Email recipient format.
  */
 class EmailRecipients {
     /**
      * Recipients Email addresses.
      */
     to: String[];
     /**
      * Email addresses to add as cc.
      */
     cc: String[] | null | undefined;
 }
    enum NotificationType {
        /**
         * Notifications related to Tranzak supporting customers.
         */
        Support = 1,
        /**
         * Incoming mail from website (eg: contact us form).
         */
        Website = 10,
        /**
         * OTP verification code notification.
         */
        VerificationCode = 20,
        /**
         *  Payment related notification from Tranzak including payments in mps.
         */
        Payment = 30,
        /**
         * Non payment messages from mini-programs.
         */
        Services = 40,
        /**
         * Generic system's notification.
         */
        System = 100
    }
    enum TargetPlatform {
        /**
         * Generic sms.
         */
        Sms = 1,
        /**
         * Generic mail.
         */
        Mail = 10,
        /**
         * Sent to the mobile application.
         */
        App = 20,
        /**
         * Sent to in app mini-programs.
         */
        MP = 21,
        /**
         * Sent to back office app.
         */
        Bo = 30
    }
    enum NotificationPriority {
        /**
         * Normal notification. Delivery delayed to max 5 minutes.
         */
        Regular = 1,
        /**
         * Urgent. Will be delivered as soon as possible.
         */
        Urgent = 10
    }

Sample request body

Sends App notification to user identified by scope id fpq0lbb0qqy6z8

{
    "type": 40,
    "platform": 20,
    "message": "Payment done by Ni's Kitchen. Amount : 1350 XAF. New balance : 2000 XAF.",
    "appId":"g7o84wzypf64",
    "platformId": "u1d6yppv1uwx",
    "recipient": "fpq0lbb0qqy6z8",
    "title": "New payment received",
    "subTitle": "SchoolFees",
    "recipientAppType": "app",
    "targetUrl": "trec.tranzak.me",
    "roles": [1,2,3]
}

Response

Success Response

{
    "data": {
        "notification": {
            "appId": "g7o84wzypf64",
            "title": "New payment received",
            "subTitle": "SchoolFees",
            "platformId": "u1d6yppv1uwx",
            "_id": "e27354831d234c579b8178f7e297fa9f",
            "createdAt": "2022-01-14T19:13:32.242Z",
            "updatedAt": "2022-01-14T19:13:32.242Z",
            "recipientAppName": "Sanaga",
            "recipientAppLogo": "https://fms.tranzak.me/cdn/ia/4jo20xfrvcglt6r8_undefined105740.7951086897.png",
            "message": "Payment done by Ni's Kitchen. Amount : 1350 XAF. New balance : 2000 XAF.",
            "recipient": "fpq0lbb0qqy6z8",
            "recipientAppId": "qyhnul9mqiph",
            "type": 20,
            "priority": 1,
            "roles": [1,2,3],
            "platform": 20,
            "recipientAppType": "app",
            "status": 1,
            "redirectTo": "http://trec.tranzak.me",
            "appName": "ANsel Trec",
            "appLogo": "https://fms.tranzak.me/cdn/ia/n6dixu958vg1mykz_wy8cvocq1jew67108976.77335343431.jpg"
        }
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

Error Responses

{
    "data": [
        {
            "type": "Invalid notification type"
        },
        {
            "appId": "Invalid appId input"
        },
        {
            "platformId": "Invalid platformId input"
        },
        {
            "message": "Invalid message input"
        },
        {
            "title": "Invalid title input"
        },
        {
            "recipient": "Invalid recipient input"
        }
    ],
    "errorMsg": "Invalid params",
    "errorCode": 400,
    "success": false
}
{
    "errorMsg": "Unknown APP",
    "errorCode": 0,
    "success": false
}
{
    "errorMsg": "Notification count max value reached",
    "errorCode": 0,
    "success": false
}

Data keys description

Key Type Description
_id String Notification's unique identifier.
status Number Status of the notification. 1 = unread; 2 = read.
type Number Notification's type. See NotificationType described above.
priority Number Notification's priority. See NotificationPriority described above.
platform Number Logical type of the receiving platform. See TargetPlatform described above.
message String Notification's content.
title String Main subject of the notification.
roles Number[] false
subTitle String Auxiliary subject of the notification. Will be undefined if the sender doesn't provide it.
redirectTo String Url to redirect to, when the user clicks on this notification. Valid only for platform BO, InApp & InAppMiniProgram. Will be undefined if the sender doesn't provide it.
callbackUrl String POST url to call once the notification delivery attempt is complete. Note that this url is called only one time whether the delivery is successful or not. Will be undefined if the sender doesn't provide it.
recipient String Who is the notification intended to.
recipientAppId String Identifier of the receiving application.
recipientAppType String Nature of the receiving application.
recipientAppName String Name of the receiving application.
recipientAppLogo String Logo path of the receiving application.
appId String Id of the app sending the notification.
platformId String Platform identifier of the app sending the notification.
appName String Name of the app sending the notification.
appLogo String Log path of the app sending the notification.
time DateTime Date and time at which the record was saved.

Important notes

In case of emails and sms, receiving this response payload doesn't mean the message has been delivered. You must provide a callbackUrl (served on a POST method) to be notified once the message is delivered to its recipient(s).

The payload sent to the callback looks like following :

{
    /**
     * Indicates whether the delivery was successful or not.
     */
    "status": true,
    /**
     * Same as the notification object you got in the previous response.
     */
    "notification": {...}
}

MARK SINGLE NOTIFICATION AS READ

Toggles notification's read status. Callable only on non Email or SMS notifications.

HTTP Request

PUT https://host/~/co018/v1/notification/mark-read/:notificationId

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Route Parameters

Parameter Type required Description
notificationId String true Unique identifier of the target notification.

Response

Success response

{
    "data": {
        "read": true
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

Errors responses

Notification is an email or SMS, was already read, or just not exists.
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Notification not found"
}
Trying to read non owned notification.
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Unauthorized action"
}

MARK MANY NOTIFICATIONS AS READ

Toggles multiple notification's read status. Callable only on non Email or SMS notifications.

HTTP Request

PUT https://host/~/co018/v1/notification/mark-read-many

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Route Parameters

Parameter Type required Description
ids String[] true Array of notifications unique identifiers.

Response

Success response

{
    "data": {
        "read": true
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

Errors responses

Notification is an email or SMS, was already read, or just not exists.
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Notification not found"
}
Trying to read non owned notification.
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Unauthorized action"
}

MARK ALL NOTIFICATIONS AS READ

Toggles all multiple notification's read status according to request parameters. Callable only on non Email or SMS notifications.

HTTP Request

PUT https://host/~/co018/v1/notification/mark-read-all

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Route Parameters

Parameter Type required Default Description
appId String true null Receiving application unique identifier.
appType bo or mp or app true null Recipient app type.
type NotificationType or NotificationType[] false null See NotificationType described above.

Response

{
    "data": {
        "read": true,
        "total": 1
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

GET UNREAD NOTIFICATIONS

Retrieves unread notifications intended to particular a user/group of users according to its scope id. Returns only non Email or SMS notifications.

HTTP Request

POST https://host/~/co018/v1/notification/get-unread

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Default Description
appId String true null Sending application unique identifier.
appType bo or mp or app true null Recipient app type.
type NotificationType or NotificationType[] false null See NotificationType described above.
platformId String false null Sending platform unique identifier.
roles Number or Number[] false null Use this parameter to fetch only the notifications where the given roles are involved. If not specified, returned notifications are those that are not concerned by any role.

Request Query String Parameters

Parameter Type Required Default Description
limit Number false 20 Number of items to return in single call.
page Number false 1 Defines the number of element to offset while querying the storage.

Response

Returns a list of notifications inside the data.notifications.list key.

{
    "data": {
        "list": [
            {
                "_id": "e27354831d234c579b8178f7e297fa9f",
                "appId": "g7o84wzypf64",
                "title": "Salem",
                "subTitle": "Le procès de la mort",
                "platformId": "u1d6yppv1uwx",
                "createdAt": "2022-01-14T19:13:32.242Z",
                "updatedAt": "2022-01-14T19:13:32.242Z",
                "recipientAppName": "Sanaga",
                "recipientAppLogo": "https://fms.tranzak.me/cdn/ia/4jo20xfrvcglt6r8_undefined105740.7951086897.png",
                "message": "Hot fix in live coding",
                "recipient": "fpq0lbb0qqy6z8",
                "recipientAppId": "qyhnul9mqiph",
                "type": 20,
                "roles": [1,2,3],
                "priority": 1,
                "platform": 20,
                "recipientAppType": "app",
                "status": 0,
                "redirectTo": "http://trec.tranzak.me",
                "sender": "Efka",
                "appName": "ANsel Trec",
                "appLogo": "https://fms.tranzak.me/cdn/ia/n6dixu958vg1mykz_wy8cvocq1jew67108976.77335343431.jpg"
            }
        ],
        "total": 1,
        "totalPages": 1,
        "hasMore": false
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

GET ALL NOTIFICATIONS

Retrieves notifications intended to particular a user/group of users according to its scope id. Returns only non Email or SMS notifications.

HTTP Request

POST https://host/~/co018/v1/notification/get

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Default Description
appId String true null Receiving application unique identifier.
appType bo or mp or app true null Recipient app type.
status r (read), u (unread), * (all) false * Notification's read status. If a non awaited value is provided, * is considered.
type NotificationType or NotificationType[] false null See NotificationType described above.
platformId String false null Sending platform unique identifier.
roles Number or Number[] false null Use this parameter to fetch only the notifications where the given roles are involved. If not specified, returned notifications are those that are not concerned by any role.

Request Query String Parameters

Parameter Type Required Default Description
limit Number false 20 Number of items to return in single call.
page Number false 1 Defines the number of element to offset while querying the storage.

Response

Returns a list of notifications inside the data.notifications.list key.

{
    "data": {
        "list": [
            {
                "_id": "e27354831d234c579b8178f7e297fa9f",
                "appId": "g7o84wzypf64",
                "title": "Salem",
                "subTitle": "Le procès de la mort",
                "platformId": "u1d6yppv1uwx",
                "createdAt": "2022-01-14T19:13:32.242Z",
                "updatedAt": "2022-01-14T19:13:32.242Z",
                "recipientAppName": "Sanaga",
                "recipientAppLogo": "https://fms.tranzak.me/cdn/ia/4jo20xfrvcglt6r8_undefined105740.7951086897.png",
                "message": "Hot fix in live coding",
                "recipient": "fpq0lbb0qqy6z8",
                "recipientAppId": "qyhnul9mqiph",
                "type": 20,
                "roles": [1,2,3],
                "priority": 1,
                "platform": 20,
                "recipientAppType": "app",
                "status": 0,
                "redirectTo": "http://trec.tranzak.me",
                "sender": "Efka",
                "appName": "ANsel Trec",
                "appLogo": "https://fms.tranzak.me/cdn/ia/n6dixu958vg1mykz_wy8cvocq1jew67108976.77335343431.jpg"
            }
        ],
        "total": 1,
        "totalPages": 1,
        "hasMore": false
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

GET UNDELIVERED NOTIFICATIONS

Deletes all elements in the identified user's cart.

HTTP Request

POST https://host/~/co018/v1/notification/undelivered

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Returns a list of notifications inside the data.notifications.list key.

Success Response

{
    "data": {
        "list": [
            {
                "_id": "e27354831d234c579b8178f7e297fa9f",
                "appId": "g7o84wzypf64",
                "title": "Salem",
                "subTitle": "Le procès de la mort",
                "platformId": "u1d6yppv1uwx",
                "createdAt": "2022-01-14T19:13:32.242Z",
                "updatedAt": "2022-01-14T19:13:32.242Z",
                "recipientAppName": "Sanaga",
                "recipientAppLogo": "https://fms.tranzak.me/cdn/ia/4jo20xfrvcglt6r8_undefined105740.7951086897.png",
                "message": "Hot fix in live coding",
                "recipient": "fpq0lbb0qqy6z8",
                "recipientAppId": "qyhnul9mqiph",
                "type": 20,
                "roles": [],
                "priority": 1,
                "platform": 20,
                "recipientAppType": "app",
                "status": 0,
                "redirectTo": "http://trec.tranzak.me",
                "sender": "Efka",
                "appName": "ANsel Trec",
                "appLogo": "https://fms.tranzak.me/cdn/ia/n6dixu958vg1mykz_wy8cvocq1jew67108976.77335343431.jpg"
            }
        ],
        "total": 1,
        "totalPages": 1,
        "hasMore": false
    },
    "success": true,
    "errorMsg": "",
    "errorCode": 0
}

NB : Note that all error response shown here are returned in handled error scenario. In case of unhandled error, a dedicated response will be sent.

partners

Bill Payment

This section resumes all endpoints about bill payment services. Concerned services here are :

Get bills for a service

GET https://host/~/v1/services/billing/{service_path}/find/:account

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Route Parameters

Parameter Type required Description
account String true Customer service account.

Response

{
    "data": [
        {
            "payItemId": "S-112-950-CAMWATER-90007-CAMWATER_NEW0101781812201012205-f07486cb2e8c4970998541c52e222eac",
            "serviceNumber": null,
            "billNumber": "025458558555",
            "billMonth": "05",
            "billYear": "2022",
            "billDate": "2022-05-24T13:59:51+00:00",
            "billDueDate": "2025-05-12T23:15:34+00:00",
            "penaltyAmount": 0,
            "amount": 1000,
            "currency": "XAF",
            "service": {
                "deleted": false,
                "_id": "628ce260d09bcc9c0823903a",
                "serviceType": 3999,
                "serviceName": "Cam water",
                "partnerMerchantCode": "CAMWATER",
                "partnerServiceId": "90007"
            }
        }
    ],
    "success": true
}

Pay one bill for a service

GET https://host/~/v1/services/billing/{service_path}/pay-bill/:billNumber

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Route Parameters

Parameter Type required Description
billNumber String true Target bill number.

Request Body Parameters

Parameter Type required Description
amount Float false Amount you intend to pay. Use this parameter when dealing with services supporting partial payments

Response

{
    "data": {
        "amount": 1000,
        "transactionType": 1,
        "serviceType": 3999,
        "state": "pending",
        "version": 0,
        "partnerFees": 1300,
        "fees": 0,
        "paidAmount": 0,
        "_id": "628ce462f6999432442097bf",
        "userId": "efka",
        "currency": "XAF",
        "serviceName": "Cam water",
        "accountNumber": "025458558555",
        "payItemId": "S-112-950-CAMWATER-90007-CAMWATER_NEW0254585585552205-a464ef4ff6254addb6f602421b40c758",
        "ctxRequestId": "REQ220524P8AYBI1GY2T",
        "ctxPaymentUrl": "https://pay.tranzak.me/request/REQ220524P8AYBI1GY2T",
        "noteFromPayer": "Period : 05-2022",
        "transactionNo": "A1S8L0K63I",
        "createdAt": "2022-05-24T13:57:54.952Z",
        "updatedAt": "2022-05-24T13:57:54.952Z",
        "__v": 0
    },
    "success": true
}

Confirm payment [callback]

PUT https://host/~/v1/txn/confirm-payment/:transactionId

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Route Parameters

Parameter Type required Description
transactionId String true Target transaction unique identifier.

Response

{
    "data": {
        "transaction": {
          "amount": 1000,
          "transactionType": 1,
          "serviceType": 3999,
          "state": "pending",
          "version": 0,
          "partnerFees": 1300,
          "fees": 0,
          "paidAmount": 0,
          "_id": "628ce462f6999432442097bf",
          "userId": "efka",
          "currency": "XAF",
          "serviceName": "Cam water",
          "accountNumber": "025458558555",
          "payItemId":   "S-112-950-CAMWATER-90007-CAMWATER_NEW0254585585552205-a464ef4ff6254addb6f602421b40c758",
          "ctxRequestId": "REQ220524P8AYBI1GY2T",
          "ctxPaymentUrl": "https://pay.tranzak.me/request/REQ220524P8AYBI1GY2T",
          "noteFromPayer": "Period : 05-2022",
          "transactionNo": "A1S8L0K63I",
          "createdAt": "2022-05-24T13:57:54.952Z",
          "updatedAt": "2022-05-24T13:57:54.952Z"
        },
        "message": "Payment successful"
    },
    "success": true
}

User profiles

POST https://host/~/v1/profile/read

Get user accounts for services.

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request body Parameters

Parameter Type required Description
serviceId String false Target service unique identifier. If provided, only profiles accounts related to this service will be returned.

Response

Fetch system available services.

POST https://host/~/v1/srv/find

Request body Parameters

Parameter Type required Description
serviceId String false Target service unique identifier. If provided, only profiles accounts related to this service will be returned.

Request Query String Parameters

Parameter Type Required Default Description
limit Number false 20 Number of items to return in single call.
page Number false 1 Defines the number of element to offset while querying the storage.

Response

{
    "data": {
        "list": [
            {
                "deleted": false,
                "_id": "628b8f475117ec5e5435e5de",
                "serviceType": 28038,
                "serviceName": "Eneo Post payment",
                "partnerMerchantCode": "ENEO",
                "partnerServiceId": "10039",
            }
        ],
        "limit": 20,
        "total": 1,
        "currentPage": 1,
        "hasMore": false,
        "totalPages": 1
    },
    "success": true
}

trec

Cart API

GET CART ITEMS

Returns all items in the identified user's cart according to a specific MP.

https Request

GET https://host/~/cartitem/list

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

{
    "data": {
        "list": [
            {
                "cartId": "3",
                "status": "1",
                "itemId": "12",
                "userId": "e457572597c94da5a35ffcf15c23661e",
                "qty": "1",
                "scopeId": "2abnjls9no8pe6",
                "createdAt": "2021-11-12 06:38:09",
                "updatedAt": "2021-11-12 13:49:55",
                "itemName": "Ndole",
                "itemPrice": "3000",
                "itemCoverImage": ""
            }
        ],
        "total": 1
    },
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}
Data keys description
Key Type Description
cartId String Cart item Id(unique)
itemId String Product Id(unique)
status String number Cart item Id(unique)
qty Float Quantity of item/product ordered
scopeId String Queried application Id
createdAt DateTime Date and time at wich the record was saved.
updatedAt DateTime Date and time at wich the record was updated for the last time.
itemName String Product/item's name.
itemPrice String number Product/item's price.
itemCoverImage String Product/item's cover image.

ADD OR UPDATE CART ITEM

Adds or updates a single item in the identified user's cart according to a specific MP.

https Request

POST https://host/~/cartitem/setItem

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

Parameter Type required Description
itemId String true Product Id (unique)
qty number true Quantity of item/product ordered (min value: 1)

Response

Returns the created/updated item.

Success response
{
    "data": {
        "cartId": "7",
        "status": "1",
        "itemId": "16",
        "userId": "e457572597c94da5a35ffcf15c23661e",
        "qty": "3",
        "scopeId": "2abnjls9no8pe6",
        "createdAt": "2021-11-12 09:09:57",
        "updatedAt": "2021-11-12 09:09:57"
    },
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}
Errors reponses
None of all required params provided
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Invalid Params"
}
Some required params are missing
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "No item id given"
}
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "No quantity given"
}
Quantity lower or equals to 0
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Invalid quantity provided"
}
Unknown handled issue
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Something went wrong while processing. Please retry in few minutes"
}

DELETE CART ITEM

Drop one item in the identified user's cart.

https Request

1. Delete by cart identifier

POST https://host/~/cartitem/deleteItem

2. Delete by product/item identifier

POST https://host/~/cart/deleteItemByItemId

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Request Body Parameters

1. Delete by cart identifier
Parameter Type required Description
cartId Number true Card item Id
2. Delete by product/item identifier
Parameter Type required Description
itemId Number/String true Product / Item Id

Response

Returns true if well done or false if something went wrong.

Success Response
{
    "data": true,
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}
Error Response
{
    "data": false,
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}

DELETE CART

Deletes all elements in the identified user's cart.

https Request

DELETE|POST https://host/~/cartitem/delete

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Response

Returns true if well done or false if something went wrong.

Success Response
{
    "data": true,
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}
Error Response
{
    "data": false,
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}

SET FULL CART

Adds, Updates and Deletes cart items in the identified user's cart.

https Request

POST|PUT https://host/~/cartitem/setFullCart

Request Header Parameters

Parameter Type required Description
Authorization String true user' Bearer token, as sent from the front-end (eg: Bearer <userToken>)

Body Parameters

Parameter Type required Description
items Array<{itemId: number; qty: number}> true Full cart items that will overrides the existing ones.

Response

Returns all items in the identified user's cart.

Success Response
{
    "data": {
        "list": [
            {
                "cartId": "3",
                "status": "1",
                "itemId": "12",
                "userId": "e457572597c94da5a35ffcf15c23661e",
                "qty": "1",
                "scopeId": "2abnjls9no8pe6",
                "createdAt": "2021-11-12 06:38:09",
                "updatedAt": "2021-11-12 13:49:55",
                "itemName": "Ndole",
                "itemPrice": "3000",
                "itemCoverImage": ""
            }
        ],
        "total": 1
    },
    "success": true,
    "errorCode": 0,
    "errorMsg": ""
}
Errors reponses
None of all required params provided
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Invalid Params"
}
Required param items is missing
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "No items given"
}
Required param items is not an array
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Invalid param : items"
}
Some items in items doesn't have the itemId key
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Missinng required value for itemId"
}
Some items in items doesn't have the qty key or its value is either not an integer or <= 0
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Bad value provided for qty"
}
Some items are duplicated
{
    "data": null,
    "success": true,
    "errorCode": 0,
    "errorMsg": "Some items are duplicated"
}

NB : Note that all error response shown here are returned in handled error scenario. Incase of unhandled error, a dedicated response will be sent.

reviews

Summary

The Reviews API is designed to help create a back-end for desktop workers (maybe customer support or analysts) be able to just view the reviews submitted by the users, reviewing their their merchants.

**CASL actions**: Read **Resource**: Review **API Service code**: aa038

Usage

POST https://staging-api.tranzak.me/aa038/v1/reviews

An example on how to consume the api to get all reviews

funcName: (params = {}) =>  request.post("https://staging-api.tranzak.me/aa038/v1/reviews/all", params)

Visit the reviews.route.js file in the backend for more details on how to retrieve and post data of different types.

Query response

{
    "comment": "This is a comment",
    "ratings":  4,
    "ratingsProduct":  4,
    "ratingsService":  4,
    "ratingsEnvironment":  4,
    "ratingScene": 1,
    "userId":  "xdy12y3",
    "merchantId":  "fd1234",
    "transactionId":  "21334534",
    "appId":  "id2131",
    "status": 1,
    "createdAt": "2021-12-12TZ12:03"
},

Parameter Details

Parameter Type required Description
page Number true The current page starting from 1
pageSize Number true The limit to how many rows of reviews can be downloaded per page (Default is 10)
searchParams Object false These are the parameters used when searching for content in the database. They are currently set to search for data by; Date range (String) when the entry was created. Merchant name (String). Status (Number)

components

##Merchant Settings