Payment Parameters
Method POSTURL
https://xxx.finexusgroup.com/fnx-fintech/sandbox/mqpos-host/api/submit
- Request Parameters
- Response Parameters
Configure the field paymentMethod
for Card and QR payment options.
Header
Field Name | Required | Type | Description |
---|---|---|---|
Signature | Yes | String | Contains the signature value of the message. The message originator is responsible for generating the signature, while the message receiver must verify it to ensure the integrity, authenticity, and non-repudiation of the message . Please refer to Appendix 1. |
sourceSystem | Yes | String | The system ID of the message originator. |
Body
Please refer to Embed Code to encrypt the content and prepend the Message Type Indicator 0011
to the body.
Field Name | Required | Type | Length | Description | Example |
---|---|---|---|---|---|
msgVer | Yes | String | 8 | Version number. | "1.0" |
billerType | Yes | String | 2 | Type of payment. | "PS" - POS System |
callerDeviceType | Yes | String | 2 | Caller device type. | "02" - Android EDC/Card Payment Terminal |
callerDeviceVer | Yes | String | 8 | Application version number of the caller device. | "1" |
sequenceNo | Yes | String | 16 | A running message sequence number which unique within system on a calendar day and shall restart from 1 every day. | "202409288868" |
sellerId | Yes | String | 6 | Provided by FINEXUS to identify the seller or taxpayer (the Merchant) for e-Invoice processing. | "A123" |
mid | Yes | String | 15 | Merchant ID | "100000" |
isPaymentReq | Yes | String | 1 | Payment request indicator | "Y" - Trigger payment at KPOS. "N" - No payment processing will be initiated. |
payment | Conditional | Object | Payment Object. | ||
isInvoiceReq | Yes | String | 1 | Invoice request indicator | "Y" - This request will send invoice data to LHDN. "N" - This request will not send invoice data to LHDN. |
invoice | Conditional | Object | Invoice object to submit to LHDN for e-invoice purpose. It is required if isInvoiceReq is "Y" |
Object: payment
Field Name | Required | Type | Length | Description | Example |
---|---|---|---|---|---|
mrn | Yes | String | 40 | An unique reference number assigned by POS system to identify the original payment transaction. | "8e8c6e61-f9e4-40f0-a4a5-9e561579c901" |
requiredPayment | Yes | String | 1 | Indicates whether payment is required for the request. | "Y" - This request will trigger payment at KPOS.. "N" - No payment processing will be initiated. |
paymentMethod | Yes | Number | 2 | The preferred payment method will be triggered at KPOS. | "00" - KPOS will display all available payment method, the customer can then choose their preferred method to proceed. "01" - Card payment "04" - Duitnow QR payment (Merchant presented) "08" - Alipay+ QR payment (Merchant presented) |
currency | Yes | Number | 3 | ISO 4217 numeric currency code of this transaction. | "458" |
amount | Yes | Number | 18 | Amount, Transaction. The purchase transaction amount in supported currency. | "1000" |
description | No | String | 256 | Order description. | "Food order" |
paymentNotiUrl | Conditional | String | 256 | Primary payment notification URL. The URL that is used to receive the payment result notification. For security reasons, the URL must be an HTTPS URL. Only applicable for HTTPs POST integration. | "https://xxx/xxx/xxx.paymentNotiUrl" |
paymentNotiUrl2 | Conditional | String | 256 | Secondary payment notification URL. | "https://xxx/xxx/xxx.paymentNotiUrl2" |
paymentTime | Yes | String | 25 | Payment time. The value follows the ISO 8601 standard format. | "2024-06-30T12:12:12+0800" |
email | Conditional | String | 64 | Email login to KPOS. It is mandatory if payment request via HTTPs POST | "customer123@gmail.com" |
deviceSN | Conditional | String | 32 | Device SN. It is mandatory if payment request via HTTPs POST | "PPXXX72209005XXX" |
printPaymentReceipt | Yes | String | 1 | "Y" - KPOS will display an e-receipt and print a payment receipt if the payment is approved. "N" - KPOS will display an e-receipt, do not print a payment receipt if the payment is approved. | "Y" |
nonBlocking | No | String | 1 | "Y" - KPOS will return an acknowledgment in the submit response as soon as the request is received from the PSP. "N" - KPOS will fully process the request and return the final result to the PSP. Default is "Y" | "Y" |
Field Name | Required | Type | Length | Description | Example |
---|---|---|---|---|---|
sequenceNo | Yes | String | 16 | Sequence number echo from the request. | "1726817309256" |
resultCode | Yes | String | 5 | Result code. | "00000" |
advMsg | No | String | 1000 | Advisory message from KPOS. | "..." |
authIdResp | Conditional | String | 16 | Authorization code from issuer/bank for approved transaction only. The consumer should use this code as the reference to the approved payment transaction. | "484684" |
paymentScheme | Conditional | String | 2 | Payment scheme of the transaction. | "AF" - Ant Financial (Alipay) "JC" - JCB "MC" - MasterCard "PN" - Paynet (DuitNow) "UP" - UnionPay (fka CUP) "VS" - Visa |
maskedPAN | Conditional | String | 4 | Returned Masked PAN. | "443322XXX1234" |
htr | Conditional | String | 20 | Host Transaction Reference. | |
paymentMethod | Conditional | Number | 2 | The final payment method chosen by the customer to complete the payment. | "00" - KPOS will display all available payment method, the customer can then choose their preferred method to proceed. "01" - Card payment "04" - Duitnow QR payment (Merchant presented) "08" - Alipay+ QR payment (Merchant presented) |
Example Request and Response Body
- Request
- Response
Encrypt the content and prepend the Message Type Indicator 0011
to the body.
Before encryption
{
"msgVer": "1.0",
"billerType": "PS",
"callerDeviceType": "02",
"callerDeviceVer": "1",
"sequenceNo": "2022091511262185",
"sellerId": "A123",
"mid": "000010000012XXX",
"isPaymentReq": "Y",
"payment": {
"mrn": "2021061414062021078",
"requiredPayment": "Y",
"paymentMethod": "01",
"currency": "458",
"amount": "1000",
"description": "test",
"paymentTime": "2024-09-23T10:30:29.249",
"email": "customer123@gmail.com",
"deviceSN": "PPXXX72209005XXX",
"printPaymentReceipt": "N",
"nonBlocking": "N"
},
"isInvoiceReq": "N"
}
After encrytion and add Message Type Indicator
0011eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImU4NmQ0Y2ZiLTFkNzMtNDJkNi05MGVlLWRlNWJlNjcwMjVlOSIsIngiOiI0UmxIeDAzX3ZlTURWaGFaTl91TVppZ2YzV1dPWGlveG52Zy1rRXhyMzFrIiwieSI6ImcyU1VqNkJnVHdYakxWYWlTRnVobGtSWklrMndaWlNaMWJEWG1DSTZSVXcifSwia2lkIjoiMTIzIiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..UIzHIjrFX8fPX91SEUzZpA.9hmtgLHx_UZjYTwduAtdruZB60QPRPjvczVeJwSI7tomXmEU720zuokvMdf9VxQqHOh2PHvtTtqW8OZQuIqYyDmss06ii-fy73a897AJv2KXPARY6DduoiLSJwDCJKhBiJlnZkAMyRZdB5xGzJwXL21QaXbO86EF6_d9qzrOhQvrNlfkTOBQYnv5Mhnnetda0_zm59HRMW2mg-rEOGj1W0Q4U0I8ZZrXQSxO3MnalxuzWQ4oTU2uHZrFnsyL93PeKiG_RmIszQGXqG0bN8WsoJfL0BTd20rnxldLQcSZYNdxGJw0EBGwlSp7DTpcmP1kzd1v2PzLGISZiPa9zadcVuLaODBZQ5GdHoPgIi76pTRwDJrv1CuD8ugfuuu_L5DxFIErnqs5cTONqxhCQ23ZeCSbnuDJDJju9yyr2wYoFFKQQciZmPddPgi2phew31DRjju4y4Ab6H7Vv01gqk6h2b9clR7v54wZSvR0CVROLZj79nKM1eLDhEo8JEv6T5APb2EHMTaU-sIlT-XqENbwV-A5HSEuEdvU7K3fsgioU5qJWwk9SS1WWmyqHnvCK1Rl5azJcKbfyN07a7znZD66IAoSUoCHjsqmFC4bd6ckdLA.Q3Ys35PhzHsnNnlJQ3rzwR-RsfEmYeDxXDsw9h97Azo
Remove the Message Type Indicator 0012
from the body and decrypt the content.
Before decryption
0012eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImI0YjIxMmM5LTIyNjMtNDAxYi1hZjdkLTMwOWI3MjRlOTEzOSIsIngiOiJvYmx1ZFdKRy1TTWJlakVqY1hlY3Q2dl9zY19ZZExyTzUtWEV2ZGFZQjdNIiwieSI6Il9MaFdTUDRrUUMwSkpWc09GMkJndWpfamc3dFZSMlRRcTctVExoUFZOeFUifSwia2lkIjoiOGM0MDFlYWMtYjM0OS00MDIyLWJhYTItZWNhMmQ3M2I4NTc5IiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..L2N0tzgQbvbbqjTa5XFCeA.TIgLgaNOwqFEchw3r0ls75zFL74mWBCJjuQFm7e7a2Ahk83m_xoS47g6m-Y7AewFcGFWBKbb4i0aGKW1moH70g.4JNcfZMyJqQKcadQIfxb224fqiM3MoUQ5ytA7lUQ4Bw
After remove Message Type Indicator and perform decryption
{
"sequenceNo": "2022091511262185",
"resultCode": "00000",
"htr": ""
}
Example Message
- Request
- Response
POST Request
curl -X POST "https://xxx.finexusgroup.com/fnx-fintech/sandbox/mqpos-host/api/submit" \
-H "Accept: application/json" \
-H "Content-Type: text/plain" \
-H "Signature: ..." \
-H "sourceSystem: ..." \
-d '0011eyJlcGsiOnsia3R5IjoiRUMiLCJ...'
POST Response
0011eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImI0YjIxMmM5LTIyNjMtNDAxYi1hZjdkLTMwOWI3MjRlOTEzOSIsIngiOiJvYmx1ZFdKRy1TTWJlakVqY1hlY3Q2dl9zY19ZZExyTzUtWEV2ZGFZQjdNIiwieSI6Il9MaFdTUDRrUUMwSkpWc09GMkJndWpfamc3dFZSMlRRcTctVExoUFZOeFUifSwia2lkIjoiOGM0MDFlYWMtYjM0OS00MDIyLWJhYTItZWNhMmQ3M2I4NTc5IiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..L2N0tzgQbvbbqjTa5XFCeA.TIgLgaNOwqFEchw3r0ls75zFL74mWBCJjuQFm7e7a2Ahk83m_xoS47g6m-Y7AewFcGFWBKbb4i0aGKW1moH70g.4JNcfZMyJqQKcadQIfxb224fqiM3MoUQ5ytA7lUQ4Bw