Skip to main content

Online Payment

Online payment allow business to accept online payments through our web applications. With Revenue Monster's Online Payment, customer can enter payment details or select e-wallet options to complete the payment process from their smartphones and website.

info

Online payment is an online payment method and it's subscription will based on online subscription rate.


Example of Web Payment

image

Example of Mobile Payment

Hosted Payment Checkout

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

note
  • To create a unified payment checkout page for your website and mobile.
  • Data object needs to be sorted, the Nested object also needs to be sorted.

Request Parameters

ParameterTypeValidationRequiredDescription
storeIdStringYesStore ID
redirectUrlStringURLYesExample of Redirect URL Response
notifyUrlStringURLYesExample of Notify URL Response
layoutVersionStringENUM("v1", "v2", "v3", "v4")Yes
typeStringENUM("WEB_PAYMENT", "MOBILE_PAYMENT")YesCheckout session type
method[]StringNoPayment methods
order.idStringLength(24)YesOrder ID
order.titleStringLength(32)YesOrder Title
order.currencyTypeStringENUM("MYR")YesOrder Currency Type ( currently supported MYR only)
order.amountUint64YesOrder Amount
order.detailStringLength(600)NoOrder Detail
order.additionalDataStringLength(128)NoOrder Additional Data
customer.userIdStringConditionalRequired when the tokenization is enabled
customer.emailStringNo
customer.countryCodeStringNo
customer.phoneNumberStringNo

Response Parameters

ParameterTypeValidationDescription
item.checkoutIdStringCheckout session id
item.urlStringCheckout session url
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Advance: Individual Payment Checkout

After you have the checkout session url from the checkout api, you can append a query params "method" to proceed method checkout.

Example: https://sb-pg.revenuemonster.my/checkout?checkoutId=1548316308361173347&method=TNG_MY

Redirect Response

info

Redirect URL to redirect your customer back to your page after payment, it's can be any of the URL ( deeplink, browser url, server url ) as long as the browser itself can go and process.

Method : GET

ParameterTypeValidationRequiredDescription
statusStringEnum("SUCCESS", "FAILED", "CANCELLED", "EXPIRED")YesPayment Status
orderIdStringYesPayment Order ID
reasonStringNoPayment fail reason

Notify Response

info

Notify URL or Callback URL to inform server on transaction status after payment made.

Notify will call only when the transaction is success, fail and refund will not fired a notify to your server. We suggest you to do a query transaction to get full transaction info if you need full info, for notify will only response the partial transaction info.

Reference: Query Transaction

Method : POST

ParameterTypeValidationRequiredDescription
eventTypeENUM("PAYMENT_WEB_ONLINE")YesNotify event type
data.storeJSONTransaction Object: StoreNoStore details
data.referenceIdStringNoReference ID
data.transactionIdStringYesTransaction ID
data.terminalIdStringNoTerminal ID
data.currencyTypeStringENUM("MYR")YesCurrency Type ( currently supported MYR only)
data.balanceAmountUint64YesRemaining balance amount for initiate refund
data.finalAmountUint64YesAmount after all deductions ( voucher, membership)
data.platformStringENUM("TERMINAL", "MOBILE_APP", "OPEN_API", "WEB_LOYALTY")YesTransaction platform
data.typeStringAppendix: TypeYesTransaction type
data.methodStringAppendix: MethodYesTransaction payment method
data.regionStringAppendix: RegionYesTransaction pament region
data.statusStringAppendix: StatusYesTransaction payment status
data.transactionAtStringRFC3339NoTransaction payment date time ( exists only when SUCCESS )
data.createdAtStringRFC3339YesTransaction created date time
data.updatedAtStringRFC3339YesTransaction last updated date time
data.payee.userIdStringNoPayment provider user id
data.payee.subUserIdStringNoPayment provider sub user id
data.order.idStringYesOrder ID
data.order.titleStringLength(32)YesOrder Title
data.order.currencyTypeStringENUM("MYR")YesOrder Currency Type ( currently supported MYR only)
data.order.amountUint64YesOrder Amount
data.order.detailStringLength(600)NoOrder Detail
data.order.additionalDataStringLength(128)NoOrder Additional Data

Query Payment Checkout

caution

Please note that payment checkout isn't the payment transaction info, while payment checkout will only return the checkout information like status, amount, redirectUrl but for more information about the success payment checkout transaction you can query transcation using Query By Transaction ID with the response of this API transactionId.

Method : GET
URL : https://open.revenuemonster.my/v3/payment/online?checkoutId={checkoutId}
Sandbox URL : https://sb-open.revenuemonster.my/v3/payment/online?checkoutId={checkoutId}

Request Parameters

ParameterTypeValidationDescription
checkoutIdQueryParamYesPayment checkout id

Response Paramters

ParameterTypeValidationDescription
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )
item.idStringPayment checkout id
item.typeStringENUM("WEB_PAYMENT", "WEB_MOBILE_PAYMENT", "MOBILE_PAYMENT")Payment checkout type
item.transactionIdStringPayment transaction id, you can query transaction using Query Transaction
item.order.idStringLength(24)Order ID
item.order.titleStringLength(32)Order Title
item.order.currencyTypeStringENUM("MYR")Order Currency Type ( currently supported MYR only)
item.order.amountUint64Order Amount
item.order.detailStringLength(600)Order Detail
item.order.additionalDataStringLength(128)Order Additional Data
item.platformStringENUM("OPEN_API")Payment checkout platform
item.methodStringAppendix: MethodPayment checkout available methods
item.redirectUrlStringURLPayment redirect url including cancel and fail
item.notifyUrlStringURLPayment notify url
item.startAtStringRFC3339Payment checkout start date time
item.statusStringENUM("SUCCESS", "FAILED", "CANCELLED", "EXPIRED")Payment checkout status
item.createdAtStringRFC3339Payment checkout created date time
item.updatedAtStringRFC3339Payment checkout last updated date time

Direct Payment Checkout

Method : POST
URL : https://open.revenuemonster.my/v3/payment/online/checkout
Sandbox URL : https://sb-open.revenuemonster.my/v3/payment/online/checkout

note
  • With it you can create an unified payment checkout and build your own checkout page
  • There's two mode qrcode & url, most of the times URL is preferred over QRCode

Mode: URL

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("URL")YesCheckout type url
methodStringAppendix: MethodYesCheckout method
Example Request
{
"checkoutId": "1582438693268947023",
"type": "URL",
"method": "ALIPAYPLUS_MY"
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("URL")Checkout session type
item.urlStringCheckout session url
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Mode: QRCode

Decode your Image using Base64
Using qrCodeImageBase64 URL to generate a QR Code
What user will receive
Once user scan the QR Code it will display

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("QRCODE")YesCheckout type qrcode
methodStringAppendix: MethodYesCheckout method
Example Request
{
"checkoutId": "1582438693268947023",
"type": "QRCODE",
"method": "MAYBANK_MY"
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("QRCODE")Checkout session type
item.qrcode.base64ImageString
item.qrcode.dataString
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Mode: Mini Program

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("MINI_PROGRAM")YesCheckout type qrcode
methodStringAppendix: MethodYesCheckout method
Example Request
{
"checkoutId": "1582438693268947023",
"type": "MINI_PROGRAM",
"method": "ALIPAY_CN"
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("MINI_PROGRAM")Checkout session type
item.dataStringBase64 encoded data for pass to mini program
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Alipay Mini Program

note

Use base64 decode data paramter, and pass into mini program api.

my.tradePay({
orderStr: << decoded base64 from url parameter >>,
success: (res) => {
console.log("success", res)
},
fail:(res) =>{
console.log("error", res)
},
});

Mode: FPX

FPX Bank Codes via API
Method : GET
URL : https://open.revenuemonster.my/v3/payment/fpx-bank
Sandbox URL : https://sb-open.revenuemonster.my/v3/payment/fpx-bank

{
"item": {
"AFFIN_BANK": {
"code": "AFFIN_BANK",
"isOnline": true,
"name": "Affin Bank"
},
"ALLIANCE_BANK": {
"code": "ALLIANCE_BANK",
"isOnline": true,
"name": "Alliance Bank"
},
"AMBANK": {
"code": "AMBANK",
"isOnline": true,
"name": "AmBank"
},
"BANK_ISLAM": {
"code": "BANK_ISLAM",
"isOnline": true,
"name": "Bank Islam"
},
"BANK_MUAMALAT": {
"code": "BANK_MUAMALAT",
"isOnline": true,
"name": "Bank Muamalat"
},
"BANK_RAKYAT": {
"code": "BANK_RAKYAT",
"isOnline": false,
"name": "Bank Rakyat"
},
"BSN": {
"code": "BSN",
"isOnline": true,
"name": "Bank Simpanan Nasional"
},
"CIMB_CLICKS": {
"code": "CIMB_CLICKS",
"isOnline": true,
"name": "CIMB Bank"
},
"HLB_CONNECT": {
"code": "HLB_CONNECT",
"isOnline": true,
"name": "Hong Leong Bank"
},
"HSBC": {
"code": "HSBC",
"isOnline": true,
"name": "HSBC"
},
"KUWAIT_FINANCE_HOUSE": {
"code": "KUWAIT_FINANCE_HOUSE",
"isOnline": false,
"name": "Kuwait Finance House"
},
"MAYBANK2U": {
"code": "MAYBANK2U",
"isOnline": true,
"name": "Maybank"
},
"OCBC": {
"code": "OCBC",
"isOnline": true,
"name": "OCBC"
},
"PUBLIC_BANK": {
"code": "PUBLIC_BANK",
"isOnline": true,
"name": "Public Bank"
},
"RHB_NOW": {
"code": "RHB_NOW",
"isOnline": true,
"name": "RHB Bank"
},
"STANDARD_CHARTERED_BANK": {
"code": "STANDARD_CHARTERED_BANK",
"isOnline": true,
"name": "Standard Chartered Bank"
},
"UNITED_OVERSEA_BANK": {
"code": "UNITED_OVERSEA_BANK",
"isOnline": true,
"name": "United Oversea Bank"
}
},
"code": "SUCCESS"
}
FPX Bank Codes
RM BankCodeFPX / Third Party BankCode
AFFIN_BANKFPX_ABB
ALLIANCE_BANKFPX_ABMB
AMBANKAMOnline
BANK_ISLAMBIMB
BANK_MUAMALATbankmuamalat
BANK_RAKYATbankrakyat
BSNFPX_BSN
CIMB_CLICKSCIMBCLICKS
HSBCFPX_HSBC
HLB_CONNECTHLBConnect
KUWAIT_FINANCE_HOUSEFPX_KFH
MAYBANK2UMB2U
OCBCFPX_OCBC
PUBLIC_BANKPBB
RHB_NOWRHBNow
STANDARD_CHARTERED_BANKFPX_SCB
UNITED_OVERSEA_BANKFPX_UOB

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("URL")YesCheckout type qrcode
methodStringENUM("FPX_MY")YesCheckout method
fpx.bankCodeStringYesFPX Bank code
Example Request
{
"checkoutId": "1687166508263303064",
"method": "FPX_MY",
"type": "URL",
"fpx": {
"bankCode": "TEST0021"
}
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("QRCODE")Checkout session type
item.urlStringFPX Payment URL
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Mode: GoBiz

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("URL")YesCheckout type qrcode
methodStringENUM("GOBIZ_MY")YesCheckout method
gobiz.typeStringENUM("UNIVERSAL_PAYMENT")YesGoBiz Payment Type
Example Request
{
"checkoutId": "1687168234460362061",
"method": "GOBIZ_MY",
"type": "URL",
"gobiz": {
"type": "UNIVERSAL_PAYMENT"
}
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("URL")Checkout session type
item.urlStringGoBiz Payment URL
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Mode: GoBiz w/ Card

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("URL")YesCheckout type qrcode
methodStringENUM("GOBIZ_MY")YesCheckout method
gobiz.typeStringENUM("UNIVERSAL_PAYMENT")YesGoBiz Payment Type
card.isTokenboolYesToken mode
card.isSaveboolYesSave the token after made transaction else will delete
card.noStringYesCustomer card number
card.cvcStringYesCustomer CVC
card.monthUint64YesCard expiry month
card.yearUint64YesCard expiry year
card.countryCodeStringENUM("MY")YesCard country code
Example Request
{
"checkoutId": "1687168114614662971",
"method": "GOBIZ_MY",
"type": "URL",
"gobiz": {
"type": "UNIVERSAL_PAYMENT"
},
"card": {
"isToken": false,
"isSave": true,
"name": "Test Card",
"no": "5453010000095323",
"cvc": "123",
"month": 12,
"year": 2024,
"countryCode": "MY"
}
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("URL")Checkout session type
item.urlStringGoBiz Payment URL
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Mode: GoBiz w/ Token

Request Parameters

ParameterTypeValidationRequiredDescription
checkoutIdStringYesCheckout ID
typeStringENUM("URL")YesCheckout type qrcode
methodStringENUM("GOBIZ_MY")YesCheckout method
gobiz.typeStringENUM("DIRECT_PAYMENT")YesGoBiz Payment Type
card.isTokenboolYesToken mode
card.isSaveboolYesSave the token after made transaction else will delete
card.noStringYesCustomer token
Example Request
{
"checkoutId": "1687168234460362061",
"method": "GOBIZ_MY",
"type": "URL",
"gobiz": {
"type": "DIRECT_PAYMENT"
},
"card": {
"isToken": true,
"isSave": true,
"no": "tk10f26d83de548aee420872dae999992475",
}
}

Response Paramters

ParameterTypeValidationDescription
item.typeStringENUM("URL")Checkout session type
item.transactionJSONTransaction ObjectTransaction response
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Extra: Card-on-File Tokenization ( CoFT )

Card-on-File Tokenization ( CoFT ) will be applied when your customer doing card payment, they will return the customer token to allow your customer can proceed payment without key in again full card information to provide better security so you will able to get customer token or remove the token via API and also payment with Direct Payment Checkout API.

note

We suggest you to calling the get customer token api after the transaction is success or after the webhook, else the token might not exists even you're completed the payments.

Get Customer Tokens

Method : GET
URL : https://open.revenuemonster.my/v3/payment/tokens/{customer_id}
Sandbox URL : https://sb-open.revenuemonster.my/v3/payment/tokens/{customer_id}

Request Parameters

ParameterTypeValidationRequiredDescription
customer_idParamYesCustomer ID you have used when create online payment checkout

Response Paramters

ParameterTypeValidationDescription
item.*.idStringToken ID
item.*.labelStringToken label
item.*.providerStringENUM("GOBIZ")Token provider
item.*.tokenStringUse this token when proceed payment
item.*.countryStringENUM("MY")Token country
item.*.createdAtStringRFC3339Payment checkout created date time
item.*.updatedAtStringRFC3339Payment checkout last updated date time
item.*.card.nameStringCard name when input card information
item.*.card.methodStringENUM("MASTERCARD", "VISA")Card type
item.*.card.lastFourNoStringLast four digit of the card
item.*.card.expMonthUint64Card expiry month
item.*.card.expYearUint64Card expriy year
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )

Delete Customer Token

Method : DELETE
URL : https://open.revenuemonster.my/v3/payment/tokens/{customer_id}
Sandbox URL : https://sb-open.revenuemonster.my/v3/payment/tokens/{customer_id}

Request Parameters

ParameterTypeValidationRequiredDescription
customer_idParamYesCustomer ID you have used when create online payment checkout
tokenStringYesToken
Example Request
{
"token": "tk10f26d83de548aee420872dae999992475"
}

Response Paramters

ParameterTypeValidationDescription
item.*.idStringToken ID
item.*.labelStringToken label
item.*.providerStringENUM("GOBIZ")Token provider
item.*.tokenStringUse this token when proceed payment
item.*.countryStringENUM("MY")Token country
item.*.createdAtStringRFC3339Payment checkout created date time
item.*.updatedAtStringRFC3339Payment checkout last updated date time
item.*.card.nameStringCard name when input card information
item.*.card.methodStringENUM("MASTERCARD", "VISA")Card type
item.*.card.lastFourNoStringLast four digit of the card
item.*.card.expMonthUint64Card expiry month
item.*.card.expYearUint64Card expriy year
codeStringENUM("SUCCESS")Determine request have success
error.codeStringError code
error.messageStringError message
error.debugStringDebug message ( sandbox only )