Payment Parameters
Method POSTURL
https://xxx.finexusgroup.com/fnx-fintech/xxx/mqpos-host/api/submit
- Request Parameters
- Response Parameters
Duplicate checking will be performed based on the combination of sequenceNo and the paymentTime.
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. | "AM" - Automated Machine |
callerDeviceType | Yes | String | 2 | Caller device type. | "21" - KPOS initiates the Pre-authorization, POS system will initiate the Completion Sales Completion/Capture request. |
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. Note: The recommended format is [Terminal ID][Message Type Code][Running Number]. | "20090XX110000001" |
sellerId | Yes | String | 6 | Provided by FINEXUS to identify the seller or taxpayer (the Merchant) for e-Invoice processing. Note: If no e-invoice is available, default to '000000'. | "000000" |
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. |
isInvoiceReq | Yes | String | 1 | Invoice request indicator | "N" - No invoice will submit. |
payment | Conditional | Object | Payment Object. |
Object: payment
| Field Name | Required | Type | Length | Description | Example |
|---|---|---|---|---|---|
mrn | Yes | String | 40 | A 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. |
paymentMethod | Yes | Number | 2 | The preferred payment method will be triggered at KPOS. | "01" - Card payment |
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" |
paymentType | Yes | String | 3 | Specifies the type of payment transaction, such as sale, pre-authorization, or sales completion | "SLC" - Sale Completion |
htr | Yes | String | 20 | Host Transaction Reference to retrieve the original transaction. | "20XX10181544723010" |
| Field Name | Required | Type | Length | Description | Example |
|---|---|---|---|---|---|
sequenceNo | Yes | String | 16 | Sequence number echo from the request. | "20090XX110000001" |
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. | "01" - Card payment |
paymentType | Yes | String | 3 | Specifies the type of payment transaction, such as sale, pre-authorization, or sales completion | "SLC" - Sale Completion |
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": "AM",
"callerDeviceType": "21",
"callerDeviceVer": "1",
"sequenceNo": "20090XX110000001",
"sellerId": "000000",
"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",
"paymentType": "SLC",
"htr": "20XX10181544723010"
}
}
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": "20090XX110000001",
"resultCode": "00000",
"authIdResp": "498576",
"paymentScheme": "VS",
"htr": "",
"paymentMethod": "01",
"paymentType": "SLC"
}
Example Message
- Request
- Response
POST Request
curl -X POST "https://xxx.finexusgroup.com/fnx-fintech/xxx/mqpos-host/api/submit" \
-H "Accept: application/json" \
-H "Content-Type: text/plain" \
-H "Signature: ..." \
-H "sourceSystem: ..." \
-d '0011eyJlcGsiOnsia3R5IjoiRUMiLCJ...'
POST Response
0012eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImI0YjIxMmM5LTIyNjMtNDAxYi1hZjdkLTMwOWI3MjRlOTEzOSIsIngiOiJvYmx1ZFdKRy1TTWJlakVqY1hlY3Q2dl9zY19ZZExyTzUtWEV2ZGFZQjdNIiwieSI6Il9MaFdTUDRrUUMwSkpWc09GMkJndWpfamc3dFZSMlRRcTctVExoUFZOeFUifSwia2lkIjoiOGM0MDFlYWMtYjM0OS00MDIyLWJhYTItZWNhMmQ3M2I4NTc5IiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..L2N0tzgQbvbbqjTa5XFCeA.TIgLgaNOwqFEchw3r0ls75zFL74mWBCJjuQFm7e7a2Ahk83m_xoS47g6m-Y7AewFcGFWBKbb4i0aGKW1moH70g.4JNcfZMyJqQKcadQIfxb224fqiM3MoUQ5ytA7lUQ4Bw