Skip to main content

A Python wrapper around the Revenue Monster API

Project description

image0 image1 image2

This is an Python SDK that maps some of the RESTful methods of Open API that are documented at Revenue Monster Open API Documentation.

Getting Started


pip3 install rmsdk


Before using the SDK, users must obtain credentials from merchant portal first. Click here for tutorial.


This section explains the basic usage of the SDK. Detail usage for individual modules are prepared in the examples folder.

A dictionary that contains clientID, clientSecret, environment and privateKey (path to private key) is expected to passed in as argument. An object of the RMSDK class will be instantiated. All modules covered in this SDK will be available under the instantiated object.

For instance, to use the store module, simply,

response = client.module.methodName(*args)


Authenticate SDK

from rmsdk import RMSDK

client = RMSDK(configs={
    "environment": "sandbox", # or production
    "clientID": "client-id",
    "clientSecret": "client-secret",
    "privateKey": "path-to-private-key"

accessToken, refreshToken = client.accessToken, client.refreshToken

Generate Client Credentials

To get refresh token and access token(expired after 2 hours) with using provided clientID and clientSecret.

client = Auth({
    "environment": "sandbox", # or production
    "clientID": "client-id",
    "clientSecret": "client-secret",
    "privateKey": "path-to-private-key"

accessToken, refreshToken = client.clientCredentials()

Generate Refresh Token

To get new access token(expired after 2 hours) with using provided clientId and clientSecret (recommended to schedule to run this fucntion on every less than 2 hours) in order to avoid expired access token error.

accessToken, refreshToken = client.getRefreshToken(refreshToken)


Get Merchant Profile

result = client.merchant.getMerchantProfile(accessToken)

Get Merchant Subscriptions

result = client.merchant.getMerchantSubcriptions(accessToken)


Get Store List

result =

Get Store By ID

result =, storeID)

Create Store

result =, {
    "name": "Test store",
    "addressLine1": "Earth",
    "addressLine2": "Mars",
    "postCode": "10001",
    "city": "Petaling Jaya",
    "state": "Selangor",
    "country": "Malaysia",
    "countryCode": "60",
    "phoneNumber": "377334080"

Update Store

result =, storeID, {
    "name": "Test store",
    "addressLine1": "Earth",
    "addressLine2": "Mars",
    "postCode": "10001",
    "city": "Petaling Jaya",
    "state": "Selangor",
    "country": "Malaysia",
    "countryCode": "60",
    "phoneNumber": "377334080"

Delete Store

result =, storeID)


Get User Profile

result = client.user.getUserProfile(accessToken)

Payment (Quickpay QR)


result = client.quickPay.quickPay(accessToken, {
    "authCode": "1234567890",
    "order": {
        "amount": 100,
        "additonalData":"API Test"
    "ipAddress": "",
    "terminalId": "19382734937293999",
    "storeId": "6170506694335521334"


result = client.quickPay.refund(accessToken, {
    "transactionId": "190109042809010428940037",
    "refund": {
        "type": "FULL",
        "currencyType": "MYR",
        "amount": 100,
    "reason": "test"


result = client.quickPay.reverse(accessToken, {
    "orderId": "111222333"

Get All Transactions

result = client.quickPay.getAllTransactions(accessToken)

Get Transaction By ID

result = client.quickPay.getTransactionByID(accessToken, transactionID)

Get Transaction By Order ID

result = client.quickPay.getTransactionByOrder(accessToken, orderID)

Get Daily Settlement Report

result = client.quickPay.dailySettlementReport(accessToken, {
    "date": "2019-01-09",
    "method": "WECHATPAY",
    "region": "MALAYSIA",
    "sequence": 1

Payment (Transaction QR)

Create Transaction

result = client.transaction.createTransaction(accessToken, {
    "amount": 100,
    "currencyType": "MYR",
    "expiry": {
        "type": "PERMANENT"
    "isPreFillAmount": True,
    "method": ['WECHATPAY'],
    "order": {
        "details": "Test",
        "title": "Title"
    "redirectUrl": '',
    "storeId": '1981039839353524638',
    "type": 'DYNAMIC',

Get Transaction

result = client.transaction.getTransaction(accessToken)

Get Transaction By Code

result = client.transaction.getTransactionByCode(accessToken, qrCode)

Get List of Transactions By Code

result = client.transaction.getTransactionByCode(accessToken, qrCode)


Give Loyalty Point

result = client.loyalty.giveLoyaltyPoint(accessToken, {
    "point": 100,
    "type": "ID",
    "memberId": "7765269777796630408",
    "countryCode": "60",
    "phoneNumber": "172826990"

Get Loyalty Member

result = client.loyalty.getLoyaltyMember(accessToken, memberID)

Get List of Loyalty Members

result = client.loyalty.getLoyaltyMembers(accessToken)

Get Point History

Get Loyalty point history of a member

result = client.loyalty.getLoyaltyMemberPointHistory(accessToken, memberID)


Issue Voucher

result = client.voucher.issueVoucher(accessToken, batchKey)

Void Voucher

result = client.voucher.voidVoucher(accessToken, voucherCode)

Get Voucher By Code

result = client.voucher.getVoucherByCode(accessToken, voucherCode)

Get Voucher Batches

result = client.voucher.getVoucherBatches(accessToken)

Get Voucher Batches By Batch Key

result = client.voucher.getVoucherBatchByKey(accessToken, batchKey)

Detail examples can be found at examples.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rmsdk-1.0.1.tar.gz (11.9 kB view hashes)

Uploaded source

Built Distribution

rmsdk-1.0.1-py3-none-any.whl (13.6 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page