Skip to main content

POS Terminal Integration

Integrate RM Terminal with a POS system or Kiosk machine using local callback. Drives the terminal to initiate an e-wallet or card payment from your POS app.

When to Use

Use this endpoint when:

  • Connecting a POS system / Kiosk to an RM Terminal over local network
  • Driving terminal payments from your own checkout app
note

This endpoint only supports payment initiation. For refund / reverse / settlement, follow the standard refund, reverse, and settlement API steps.

How to Use

Method: POST URL: https://open.revenuemonster.my/v3/payment/terminal/quickpay Sandbox URL: https://sb-open.revenuemonster.my/v3/payment/terminal/quickpay

Step 1: Configure Terminal

Identify the terminalId of your RM Terminal.

Step 2: Send the Payment Request

POST with type ("E-WALLET" or "CARD"), receiptType, order details, and cameraType (for e-wallet).

Step 3: Handle the Response

The response contains transactionId and status. Use the transaction ID for subsequent refund or query operations.


Request Parameters

terminalIdSTRINGrequired

Terminal ID

Example: "1582107209454501456"

typeSTRINGrequired

e-wallet "E-WALLET" or Bank card "CARD" payment

Example: "E-WALLET"

receiptTypeINTEGERrequired

1 : Print Merchant Copy and Customer copy 2 : Print Customer copy 3 : Do not print Merchant Copy & Customer Copy

Example: 1

cameraTypeSTRINGrequired

For "E-WALLET" only, use back or front camera to scan QR

Example: "FRONT"

orderSTRINGrequired

(Refer order )

Example: {}

amountINTEGERrequired

Amount of order in cent (min RM 0.10 or amount: 10)

Example: 100

currencyTypeSTRINGrequired

Currency notation (currently only support MYR)

Example: "MYR"

idSTRINGrequired

Order ID (from Merchant), max: 24

Example: "123443333304"

titleSTRINGrequired

Order title, max: 32

Example: "title"

detailsSTRINGrequired

Order details, max: 600

Example: "desc"

additionalDataSTRINGrequired

For merchant's remark, max 128

Example: "API Test"

Example Request
JSON
1curl --location --request POST "https://sb-open.revenuemonster.my/v3/payment/terminal/quickpay" \
2--header "Content-Type: application/json" \
3--header "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjIwMTgtMDMtMTMiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOlsiYXBpX2NsaWVudEBFaGNLQzA5QmRYUm9RMnhwWlc1MEVNV1Z4NF9UbE5MZEZRIl0sImV4cCI6MTU4NjMzNzc1OCwiaWF0IjoxNTgzNzQ1NzU4LCJpc3MiOiJodHRwczovL3NiLW9hdXRoLnJldmVudWVtb25zdGVyLm15IiwianRpIjoiRWh3S0VFOUJkWFJvUVdOalpYTnpWRzlyWlc0UXlKSG9qb2VNcHYwViIsIm5iZiI6MTU4Mzc0NTc1OCwic3ViIjoiRWhRS0NFMWxjbU5vWVc1MEVKWFZ6ZDN3cmFxVE9SSVFDZ1JWYzJWeUVJeUpxSXp2eU1QVmNRIn0.FfBkCb7fjCKJdcy_DS06dKgEtcAvukPio0HyDRtH2UovhZsLFSqD_8oo21u094XSor_mqFg4hqXmLaHjX-h92Wz3kHl7OwiKQb16x8Rnl5OdyPHtMqIZqP8ab8Ch0RHEZ33VchK1zBTnG6Xosrb1B44tWqJ0_kdTtbRZN4rG821C8i4sb6sx8GaxgluJ5q7CEifMTBFJam_Jub9LfAfukq8YyIl0Bykp7B3A_su2QoELL9L_ElJdV9FuwFPHcKr9bxLvVSrEdyrFg7IBm_tJHxSl8gTh3j4b6lWZrBCfMSLraXaYRNzz1ddbVnwYD4aRuSyRmQeMYTUj0cInktnKUA" \
4--header "X-Signature: sha256 GohuT2QTUXJV3MZh2OoEE9qW9wcfakOU9iVLmkTjM12NQuV6IcWMRQDz9NdxAOVIrh5MssfYCLDlafb2illXxgQMpmZkZ38NT6NQsMeMfGbHBS1Kc+BUtU7o1TMLUzk55J1tA6f0Z95oEuBlCeLm6VsgCG30wFm5YmgssJ0weIwMcW355r2sFl7QcKOuRqynoGtmmr/aGfOk1HjiFLoFzSd38O7rRjwGrekYwuYUD1N/Wp5GFXRjtaaPkzAERPbXEmnh/taLME8VeAhky6dAVGZE6gHKnP5WvvVjUE+KLtj3D32YIHzxhzEW9x3JEObqgvm5Q2oRZNxoh6/MvqwkVA==" \
5--header "X-Nonce-Str: bfdgdjgtjhmnbmmjmdfdghghffj" \
6--header "X-Timestamp: 1546850694" \
7--data-raw {
8"terminalId": "1554193032595276913",
9"type": "CARD",
10"receiptType": 3,
11"cameraType": "BACK",
12"order": {
13 "amount": 10,
14 "currencyType": "MYR",
15 "id": "387153091916665362292147",
16 "title": "title",
17 "detail": "desc",
18 "additionalData": "010100 Pay parking ticket\n30/07/20 07:13 - 30/07/20 18:40\nLength of stay: 0 Days. 11:35\n02993777014011020212260030??"
19}
20}

Response Parameters

balanceAmountINTEGER

Amount of order in cent

Example: 10

createdAtDATETIME

Creation date time of store

Example: "2020-02-13T07:08:56Z"

currencyTypeSTRING

Currency notation (currently only support MYR)

Example: "MYR"

extraInfoOBJECT

for CARD payment (Refer to extraInfo)

Example: {}

cardOBJECTrequired

Object of card Info

inputTypeSTRINGrequired

Type of card payment

Example: "NFC"

maskNoSTRINGrequired

Masked card no

Example: "XXXX-XXXX-XXXX-9081"

referenceIdSTRINGrequired

Card payment ref on server

Example: "104974001774"

secondaryReferenceIdSTRINGrequired

Card payment ref on terminal

Example: "001774"

methodSTRING

RM currently supported method

Example: "CARD"

orderSTRING

(Refer order )

Example: {}

amountINTEGERrequired

Amount of order in cent (min RM 0.10 or amount: 10)

Example: 10

idSTRINGrequired

Order ID (from Merchant), max: 24

Example: "201919250001"

titleSTRINGrequired

Order title, max: 32

Example: "SALE"

detailsSTRINGrequired

Order details, max: 600

Example: "XXXX-XXXX-XXXX-3121"

additionalDataSTRINGrequired

For merchant's remark, max 128

Example: "000008"

payeeOBJECT

for E-WALLET payment (Refer to payee)

Example: {}

userIdSTRINGrequired

Payee account id

Example: "1000000806040489"

platformSTRING

Only "TERMINAL"

Example: "TERMINAL"

referenceIdSTRING

Transaction ID (from server)

Example: "00000000000791320002737201919250001"

regionSTRING

Region of wallet

Example: "MALAYSIA"

statusSTRING

Status returned from WeChat server

Example: "SUCCESS"

storeOBJECT

(Refer to store)

Example: {}

idSTRING

Store ID

Example: "6170506694335521334"

nameSTRING

Store Name

Example: "REVENUE MONSTER"

addressLine1STRING

Store Address 1

Example: "B-5-30, 5th Floor, Block Bougainvillea,"

addressLine2STRING

Store Address 2

Example: "PJU 6A, Lebuhraya SPRINT, 10 Boulevard,"

postCodeSTRING

Postcode of store

Example: "47400"

citySTRING

City of store

Example: "Petaling Jaya"

stateSTRING

State of store

Example: "Selangor"

countrySTRING

Country of store

Example: "Malaysia"

countryCodeSTRING

Country code of store contact number

Example: "60"

phoneNumberSTRING

Phone number of store

Example: "377334080"

geoLocationOBJECT

Geo Location (latitude and longtitude) of store

Example: {"latitude": 3.1349857, "longtitude": 101.6136659 }

statusSTRING

Current status of store

Example: "ACTIVE"

createdAtDATETIME

Creation date time of store

Example: "2018-02-12T08:53:13Z"

updatedAtDATETIME

Last update date time of store

Example: "2018-02-12T08:53:13Z"

transactionAtDATETIME

Transaction date time of store

Example: "2020-10-25T04:35:22Z"

transactionIdDATETIME

Transaction ID generated from Revenue Monster.

Example: "200213070856100322408442"

typeSTRING

"QUICKPAY" or "BANK_CARD"

Example: "BANK_CARD"

updatedAtDATETIME

Last update date time of store

Example: "2020-02-13T07:08:56Z"

Example Response
JSON
1{
2"balanceAmount": 10,
3"createdAt": "2021-02-17T18:39:30Z",
4"currencyType": "MYR",
5"extraInfo": {
6 "card": {
7 "inputType": "NFC",
8 "maskNo": "XXXX-XXXX-XXXX-9081",
9 "referenceId": "104983001779",
10 "secondaryReferenceId": "001779"
11 }
12},
13"method": "CARD",
14"order": {
15 "additionalData": "010100 Pay parking ticket\n30/07/20 07:13 - 30/07/20 18:40\nLength of stay: 0 Days. 11:35\n02993777014011020212260030??",
16 "amount": 10,
17 "detail": "desc",
18 "id": "387153091916665362292147",
19 "title": "title"
20},
21"payee": {
22 "userId": "1000000806040489"
23},
24"platform": "TERMINAL",
25"referenceId": "00000000000550520003236104983001779",
26"region": "MALAYSIA",
27"status": "SUCCESS",
28"store": {
29 "addressLine1": "UTROPOLIS MARKETPLACE, JALAN KONTRAKTOR U1/14, SHAH ALAM",
30 "addressLine2": "UTROPOLIS MARKETPLACE, JALAN KONTRAKTOR U1/14, SHAH ALAM",
31 "city": "Shah Alam",
32 "country": "Malaysia",
33 "countryCode": "60",
34 "createdAt": "2021-01-08T10:09:23Z",
35 "geoLocation": {
36 "latitude": 3.0901139,
37 "longitude": 101.55987
38 },
39 "id": "1601912947341252990",
40 "name": "Mountain Food - Utropolis",
41 "phoneNumber": "1123621544",
42 "postCode": "40150",
43 "state": "Selangor",
44 "status": "ACTIVE",
45 "updatedAt": "2021-01-08T10:09:23Z"
46},
47"transactionAt": "2021-02-18T02:39:35+08:00",
48"transactionId": "210217183930100325434403",
49"type": "BANK_CARD",
50"updatedAt": "2021-02-17T18:39:37Z"
51}