Skip to main content

Terminal Integration

POST/v3/payment/terminal/quickpay

What is this?

Terminal Integration lets businesses process orders using an RM Terminal to accept credit cards, debit cards, and e-wallets. Common use cases are for POS and Self-Service Kiosk systems.

There are two types of integration:

  • Event — sends an action to the terminal from the RM server. May take time and can fail if the terminal is not connected.
  • Server — processes directly on the RM server and returns a response immediately.

This integration works with any system as long as you are using an RM Terminal for payment acceptance.


How to Use

Step 1: Identify the Terminal

Get the terminalId of the RM Terminal you want to use.

Step 2: Choose the Event Type

Select the appropriate event based on what you want to do:

  • Quick Pay — accept e-wallet QR payments
  • Card Payment — accept card payments
  • Card Refund — refund a card transaction
  • Card Settlement — settle terminal transactions
  • Cancel Event — cancel an ongoing event

Step 3: Make the POST Request

Send the event request with the terminalId, type, and order details.

Step 4: Handle the Response

Check the code field. For Event-type requests, a "SUCCESS" response confirms the event was sent — not that it completed on the terminal.


Event: Quick Pay

If your hardware device has its own scanner to scan payment QR codes, use the OpenAPI QuickPay instead for better experience and performance.

Request Parameters

terminalIdStringrequired

RM Terminal ID

typeStringrequired

Payment type. Set to "E-WALLET".

receiptTypeUintrequired

Receipt setting: 1 = Print both merchant and customer copy, 2 = Print customer copy only, 3 = Do not print

cameraTypeStringrequired

Use "FRONT" or "BACK" camera to scan QR code (for E-WALLET only)

order.idStringrequired

Order ID

order.titleStringrequired

Order title

order.currencyTypeStringrequired

Currency type (currently supported MYR only)

order.amountUint64required

Order amount

order.detailString

Order detail

order.additionalDataString

Order additional data

Example Request
JSON
1{
2 "terminalId": "1554193032595276913",
3 "type": "E-WALLET",
4 "receiptType": 3,
5 "cameraType": "FRONT",
6 "order": {
7 "amount": 10,
8 "currencyType": "MYR",
9 "id": "387153091916665362292147",
10 "title": "title",
11 "detail": "desc",
12 "additionalData": "010100 Pay parking ticket"
13 }
14}

Response Parameters

itemObject

Transaction response object

codeString

"SUCCESS" if the event was sent, otherwise an error code.

error.codeString

Error code if the request failed.

error.messageString

Error message if the request failed.

error.debugString

Debug message (sandbox only).


Event: Card Payment

Request Parameters

terminalIdStringrequired

RM Terminal ID

typeStringrequired

Payment type. Set to "CARD".

receiptTypeUintrequired

Receipt setting: 1 = Print both copies, 2 = Print customer copy only, 3 = Do not print

order.idStringrequired

Order ID

order.titleStringrequired

Order title

order.currencyTypeStringrequired

Currency type (currently supported MYR only)

order.amountUint64required

Order amount

order.detailString

Order detail

order.additionalDataString

Order additional data

Example Request
JSON
1{
2 "terminalId": "1554193032595276913",
3 "type": "CARD",
4 "receiptType": 3,
5 "order": {
6 "amount": 10,
7 "currencyType": "MYR",
8 "id": "387153091916665362292147",
9 "title": "title",
10 "detail": "desc",
11 "additionalData": "010100 Pay parking ticket"
12 }
13}

Response Parameters

itemObject

Transaction response object

codeString

"SUCCESS" if the event was sent, otherwise an error code.

error.codeString

Error code if the request failed.

error.messageString

Error message if the request failed.

error.debugString

Debug message (sandbox only).


Event: Card Refund

Request Parameters

terminalIdStringrequired

RM Terminal ID

typeStringrequired

Event type. Set to "REFUND".

data.transactionIdStringrequired

Transaction ID to refund

data.receiptTypeUint

Receipt setting: 1 = Print both copies, 2 = Print customer copy only, 3 = Do not print

data.reasonString

Reason for the refund

data.emailStringrequired

Email address matching the refund PIN

data.pinStringrequired

Refund PIN

Example Request
JSON
1{
2 "terminalId": "1582107209454501456",
3 "type": "REFUND",
4 "data": {
5 "transactionId": "210215083727100327507906",
6 "receiptType": 3,
7 "reason": "Testing Refund",
8 "email": "oska.ng@revenuemonster.my",
9 "pin": "321123"
10 }
11}

Response Parameters

itemObject

Transaction response object

codeString

"SUCCESS" if the event was sent, otherwise an error code.

error.codeString

Error code if the request failed.

error.messageString

Error message if the request failed.

error.debugString

Debug message (sandbox only).


Event: Card Settlement

Request Parameters

terminalIdStringrequired

RM Terminal ID

typeStringrequired

Event type. Set to "SETTLEMENT".

data.receiptTypeUint

Receipt setting: 1 = Print both copies, 2 = Print customer copy only, 3 = Do not print

Example Request
JSON
1{
2 "terminalId": "1554193032595276913",
3 "type": "SETTLEMENT",
4 "data": {
5 "receiptType": 3
6 }
7}

Response Parameters

codeString

"SUCCESS" if the event was sent, otherwise an error code.

error.codeString

Error code if the request failed.

error.messageString

Error message if the request failed.

error.debugString

Debug message (sandbox only).

summary.batchNoString

Terminal settlement sequence number

summary.currencyTypeString

Settlement currency type (currently supported MYR only)

summary.noOfTransactionsUint64

Count of settled transactions

summary.settlementAtString

Date and time of settlement

summary.totalSalesAmountUint64

Total sales amount in cents

transactions[*].amountUint64

Transaction amount in cents

transactions[*].currencyTypeUint64

Transaction currency type

transactions[*].transactionAtString

Transaction date and time

transactions[*].transactionIdString

Transaction ID

transactions[*].typeString

Transaction type


Event: Cancel Event

Request Parameters

terminalIdStringrequired

RM Terminal ID

typeStringrequired

Event type. Set to "CANCEL".

Example Request
JSON
1{
2 "terminalId": "1582107209454501456",
3 "type": "CANCEL"
4}

Response Parameters

codeString

"SUCCESS" if the event was sent, otherwise an error code.

error.codeString

Error code if the request failed.

error.messageString

Error message if the request failed.

error.debugString

Debug message (sandbox only).


Server: Payment Refund

This applies to e-wallet transactions only. For card payments, perform the refund on the terminal via the Event API.

See Cancel Transaction > Refund


Server: Payment Reverse

This applies to e-wallet transactions only. For card payments, perform the reverse on the terminal via the Event API.

See Cancel Transaction > Reverse