Skip to main content

Card Payment Refund

Trigger a card refund event on the RM Terminal from a POS system. Refunds a specific card transaction by its transactionId.

When to Use

Use this endpoint when:

  • Refunding a card transaction from your POS app
  • Customer requests an in-store card refund processed via terminal

How to Use

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

Step 1: Get the Transaction ID

Capture the transactionId of the original card payment to refund.

Step 2: Send the Refund Event

POST with type: "REFUND", the transaction ID, email, and pin.

Step 3: Confirm the Refund

The response confirms refund status — "FULL_REFUNDED" indicates success.


Request Parameters

terminalIdSTRINGrequired

Terminal ID

Example: "1582107209454501456"

typeSTRINGrequired

Request type

Example: "REFUND"

dataSTRINGrequired

(Refer data )

Example: {}

transactionIdSTRINGrequired

Transaction ID generated from Revenue Monster.

Example: "1582107209454501456"

receiptTypeINTEGERrequired

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

Example: 1

reasonSTRINGrequired

Refund reason

Example: "Wrong Item"

emailSTRINGrequired

Refund email

Example: "[email protected]"

pinSTRINGrequired

Refund pin

Example: "321123"

Example Request
JSON
1curl --location --request POST "https://sb-open.revenuemonster.my/v3/event/terminal" \
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": "1582107209454501456",
9 "type": "REFUND",
10 "data": {
11 "transactionId": "210215083727100327507906",
12 "receiptType": 3,
13 "reason": "Testing",
14 "email": "[email protected]",
15 "pin": "321123"
16 }
17}

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

(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 to 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"

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"

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"

codeSTRING

Successfully call this endpoint. If fail, will return error code object (Refer Appendix 1: Error Codes)

Example: "SUCCESS"

errorOBJECT

(Refer Appendix: Error Codes)

Example: {}

Example Response
JSON
1{
2"code": "SUCCESS",
3"item": {
4 "balanceAmount": 0,
5 "createdAt": "2021-02-17T17:43:59Z",
6 "currencyType": "MYR",
7 "extraInfo": {
8 "card": {
9 "inputType": "NFC",
10 "maskNo": "XXXX-XXXX-XXXX-9081",
11 "referenceId": "104974001774",
12 "secondaryReferenceId": "001774"
13 }
14 },
15 "method": "CARD",
16 "order": {
17 "additionalData": "In store payment",
18 "amount": 10,
19 "detail": "[Terminal app] Pay to Mountain Food - Utropolis",
20 "id": "1613583839549PE24191B504",
21 "title": "In store payment"
22 },
23 "platform": "TERMINAL",
24 "referenceId": "00000000000550520003236104974001774",
25 "region": "MALAYSIA",
26 "status": "FULL_REFUNDED",
27 "transactionAt": "2021-02-17T17:44:02Z",
28 "transactionId": "210217174359100325085446",
29 "type": "BANK_CARD",
30 "updatedAt": "2021-02-17T17:44:30Z"
31}
32}