Skip to main content

Notification Parameters

Method POST

URL
https://xxx/xxx/paymentNotification
Field NameRequiredTypeDescription
SignatureYesStringContains 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.
sourceSystemYesStringThe system ID of the message originator.

Body

Please refer to Embed Code to encrypt the content and prepend the Message Type Indicator 0025 to the body.

Field NameRequiredTypeLengthDescriptionExample
msgVerYesString8Version number."1.0"
billerTypeYesString2Type of payment."AM" - Automated Machine
callerDeviceTypeYesString2Caller device type."17" - On-premises Car Parking System
"18" - Cloud-based Car Parking System
callerDeviceVerYesString8Application version number of the caller device."1"
sequenceNoYesString16A running message sequence number which unique within system on a calendar day and shall restart from 1 every day."202409288868"
mrnYesString40An unique reference number assigned by POS system to identify the original payment transaction."8e8c6e61-f9e4-40f0-a4a5-9e561579c901"
resultCodeYesString5Result code."00000"
authIdRespConditionalString16Authorization code from issuer/bank for approved transaction only. The consumer should use this code as the reference to the approved payment transaction."484684"
paymentSchemeConditionalString2Payment scheme of the transaction."AF" - Ant Financial (Alipay)
"JC" - JCB
"MC" - MasterCard
"PN" - Paynet (DuitNow)
"UP" - UnionPay (fka CUP)
"VS" - Visa
maskedPANConditionalString4Returned Masked PAN."443322XXX1234"
htrConditionalString20Host Transaction Reference.
paymentMethodConditionalNumber2The 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)
advMsgNoString1000Advisory message from KPOS."..."
paymentTypeConditionalString3Specifies the type of payment transaction, such as sale, pre-authorization, or sales completion."STX" - Sale transaction
midYesString15Merchant ID"100000"
tidYesString8Terminal ID"2000200"
currencyYesNumber3ISO 4217 numeric currency code of this transaction."458"
amountYesNumber18Amount, Transaction.
The purchase transaction amount in supported currency.
"1000"
visDetailsConditionalObjectThe instalment information for a VIS transaction
receiptInfoConditionalObjectExtra information used for receipt generation.

Note: Present if resultCode = "00000" and isPaymentReq = "Y".
invoiceConditionalObjectInvoice object to submit to LHDN for e-invoice purpose.

Note: Present if billerType is "KP" (KPOS) and callerDeviceType is "03" (Self-service Kiosk).
Object: visDetails
Field NameRequiredTypeLengthDescriptionExample
numOfInstalmentYesIntegerThe total number of payment breakdown over the specified frequency."10"
instalmentFrequencyYesString32The frequency of payment."WEEKLY" - Instalment payable every week
"BIWEEKLY" - Instalment payable every two weeks.
"MONTHLY" - Instalment payable every month
"BIMONTHLY" - Instalment payable every two months
instalmentAmountYesNumber18The amount of payment payable on each specified frequency."1000"
mdrFeeYesNumber18The applicable fees for this VIS transaction."100"
Object: receiptInfo
Field NameRequiredTypeLengthDescriptionExample
acqCodeYesString20Acquirer Code.

Note: Default value: FINEXUS.
"FINEXUS"
acqMidYesString50Merchant ID (used for payment processing purposes)."XXXXXXXXXXX3169"
acqTidYesString30Acquirer Terminal ID."XXXX3992"
stanYesIntegerSystem Trace Audit Number generated by terminal to identify a transaction."000125"
rrnYesString12Retrieval Reference Number generated by Acquirer to identify a transaction."617683000125"
authIdRespYesString6Authorization code from issuer/bank for approved transaction only. The consumer should use this code as the reference to the approved payment transaction."11XXXX"
aidConditionalString32Application Identifier to identify payment application for cards.

Note: Present if paymentScheme is JC, MC, MD, UP or VS.
"A000000004XXXX"
appLabelConditionalString64Application Label to identify payment application for cards.

Note: Present if paymentScheme is JC, MC, MD, UP or VS.
"Debit Mastercard"
arqcConditionalString32Authorization Request Cryptogram generated by a card for a specific transaction.

Note: Present if paymentScheme is JC, MC, MD, UP or VS.
"45DA8D7588XXXXXX"
Object: invoice
Field NameRequiredTypeLengthDescriptionExample
invNoYesString22Invoice Number.

Note: For new invoice submit requests, this field should contain the new invoice number.
For cancel or refund requests, this field should contain the new invoice number for the refund or credit note.
"2024070712121200000001"
oriInvNoConditionalString22Original Invoice Number.

Note: This field is mandatory for cancellation or refund requests, as it allows KPOS to associate the request with the correct original transaction.
"2024070712121200000001"
invDtYesNumber8Invoice Date.

Note: Format: yyyymmdd
"20240707"
invTmYesNumber6Invoice Time.

Note: Format: hhmmss
"121212"
invCurYesNumber3ISO 4217 numeric currency code of this transaction.

Note: Only support currency code 458
"458"
taxCurYesNumber3Tax currency code.

Note: Only support currency code 458
"458"
billFreqNoString2Billing frequency code."01" - Daily
"02" - Weekly
"03" - Biweekly
"04" - Monthly
"05" - Bimonthly
"06" - Quarterly
"07" - Half-yearly
"08" - Yearly
"09" - Others / Not Applicable
billStartDtConditionalString8Billing start date.

Note: Format: yyyymmdd
Mandatory when billFreq is not 09
"20240701"
billEndDtConditionalString8Billing end date.

Note: Format: yyyymmdd
Mandatory when billFreq is not 09
"20240731"
totalNetYesNumberTotal Net Amount.

Note: It is a sum of item.totalExclTax
"27800"
totalDiscNoNumberTotal discount amount.

Note: It is a sum of addAllowCharge.allowChargeAmt
"100"
totalFeeChargeNoNumberTotal fee / charge amount.

Note: It is sum of addAllowCharge.allowChargeAmt
"100"
totalExclTaxYesNumberTotal excluding tax.

Note: totalExclTax = totalNet – totalDisc + totalFeeCharge
"27800"
totalTaxYesNumberTotal tax amount.

Note: It is a sum of item.taxAmt
"0"
totalInclTaxYesNumberTotal include tax amount.

Note: totalInclTax = totalExclTax + totalTax
"27800"
pmtModeNoNumberPayment mode."01" - Cash
"02" - Cheque
"03" - Bank Transfer
"04" - Credit Card
"05" - Debit Card
"06" - e-Wallet / Digital Wallet
"07" - Digital Bank
"08" - Others
supplierAcctNoNoString150Supplier account number."SUPPLIER-ACC-001"
prePmtAmtNoNumberPre payment amount."100"
prePmtDtNoNumber8Pre payment date.

Note: Format: yyyyMMdd
"20240630"
prePmtTmNoNumber6Pre payment time.

Note: Format: hhmmss
"120000"
prePmtRefNoNoString150Pre payment reference number."PREPMT-REF-001"
roundAmtNoNumberRounding amount.

Note: Can be negative value.
Example: if negative MYR 0.10, the value is set at -10
if positive MYR 0.10, the value is set at +10
"-10"
totalPayableYesNumberTotal payable amount.

Note: totalPayable = totalInclTax-prePmtAmt+roundAmt
"27800"
billRefNoNoString150Bill reference number."BILL-REF-001"
itemsYesArrayThe individual invoice items that make up the invoice.
addAllowChargeNoArrayAdditional allowance / Charge.
shippingRecipientNoObjectShipping recipient.
denyIndividualEInvoiceNoString1Indicates whether the customer is prevented from requesting an individual e-invoice.

Note: Possible Values:
"Y" - Prevents the customer from requesting an individual invoice; the customer can view the invoice via the FIDU web/app.
"N" - Allows the customer to request an individual invoice.
If this field is not present, the default value is N.
"N"
eSignatureConditionalString512E-signature.

Note: Please refer to FINEXUS FIDU QR specification for detail.
This field is required for submit invoice and denyIndividualEInvoice is not present or 'N'
It is not applicable for getDocument response
"AbCDefghijklmnop"
pinCodeConditionalNumber6A 6 digit PIN code is used to protect the invoice from being claimed by an unauthorized person.

Note: Please refer to FINEXUS FIDU QR specification for detail.
This field is required for submit invoice and denyIndividualEInvoice is not present or 'N'
It is not applicable for getDocument response
"000000"
Object: invoice item
Field NameRequiredTypeLengthDescriptionExample
oriInvNoConditionalString22Original Invoice Number.

Note: It is mandatory for cancel or refund request.
"2024070712121200000001"
classCdeYesString3Classification code.

Note: Please refer to Appendix 6 for details.
"038" - Sports equipment, rental / entry fees for sports facilities or registration in sports competition
descYesString300Product / service description."Li-Ning Wind Lite"
uomNoString3Unit of measure."MTR" - metre
"EA" - each
"H87" - piece
"KGM" - kilogram
"LTR" - litre
unitPriceYesNumberUnit price."27800"
qtyNoString31Quantity.

Note: Allowable values: Numeric and "."
"1"
subtotalYesNumberSubtotal.

Note: subtotal = unitPrice*qty
"27800"
discRateNoNumberDiscount rate.

Note: Discount rate percentage out of 100
"10"
discAmtConditionalNumberDiscount amount.

Note: Mandatory when discRate is not empty
"100"
feeRateNoNumberFee / Charge rate."5"
feeAmtConditionalNumberFee / Charge amount.

Note: Mandatory when feeRate is not empty
"100"
totalExclTaxYesNumberTotal excluding tax.

Note: totalExclTax = subtotal-discAmt+feeAmt
"27800"
taxTypYesString2Tax Type."01" - Sales Tax
"02" - Service Tax
"03" - Tourism Tax
"04" - High-Value Goods Tax
"05" - Sales Tax on Low Value Goods
"06" - Not Applicable
taxRateConditionalNumberTax rate.

Note: Mandatory if taxTyp is not 06
"6"
taxExemptIndNoString1Tax Exemption Indicator.

Note: Possible values:
"Y" – Yes
"N" – No [Default]
"N"
taxExemptDtlConditionalString300Details of tax exemption.

Note: Mandatory if taxExemptInd=Y
"Tax exemption details"
taxExemptAmtConditionalNumberAmount exempted from tax.

Note: Mandatory if taxExemptInd=Y
"100"
taxAmtConditionalNumberTax amount.

Note: Mandatory if taxTyp is not 06
"100"
totalInclTaxYesNumberTotal including tax."27800"
prodTariffCdeNoString12Product tariff code."TARIFF-001"
oriCountryNoString3Country of origin."MYS" - Malaysia
"SGP" - Singapore
originSystemTypeNoString2Origin System Type."01"
originSystemNoString50Origin system."POS"
originModuleNoString50Origin module."SALES"
originBranchNoString50Origin branch."HQ"
originDeptNoString50Origin department."RETAIL"
originGLAccNoNoString20Origin GL Account Number."4000-001"
originGLTypeNoString1Origin GL Type."R"
originCustNoNoString20Origin customer number."CUST-001"
originAcctNoNoString20Origin account number."ACCT-001"
originProdTypNoString20Origin product type."RETAIL"
originTrxCdeNoString20Origin transaction code."SALE"
givenItemIdConditionalString64Item identifier assigned by the merchant.

Note: Mandatory if the menu item is configured in KBIZ.
"ITEM-038-001"
Object: allowance charge
Field NameRequiredTypeLengthDescriptionExample
allowChargeTypYesString1Allowance charge type."C" - Fee/Charge
"D" - Discount
allowChargeDescYesString100Allowance charge description."Delivery fee"
allowChargeAmtConditionalNumberAllowance charge amount."100"
Object: shipping recipient
Field NameRequiredTypeLengthDescriptionExample
nameNoString300Shipping recipient name."John Doe"
addr1YesString150Recipient address 1."Lot 66"
addr2NoString150Recipient address 2."Bangunan Merdeka"
addr3NoString150Recipient address 3."Persiaran Jaya"
stateYesString2Recipient state.

Note: Please refer to Appendix 7 for details.
"14" - W.P. KUALA LUMPUR
cityYesString50Recipient city."Kuala Lumpur"
postcodeNoString50Recipient postal code."50480"
countryYesString3Recipient country.

Note: Only accept value: MYS
"MYS"
tinNoString16TIN of the shipping recipient assigned by the LHDN system."C12345678900"
idTypeNoString8NRIC, Passport number, Business registration number, army number.

Note: Possible values:
- NRIC
- PASSPORT
- BRN
- ARMY
"NRIC"
idValueNoString64The ID value that associated with the idType."200228105338"

Example Request and Response Body

Remove the Message Type Indicator 0025 from the body and decrypt the content.

Before decryption
0025eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImU4NmQ0Y2ZiLTFkNzMtNDJkNi05MGVlLWRlNWJlNjcwMjVlOSIsIngiOiI0UmxIeDAzX3ZlTURWaGFaTl91TVppZ2YzV1dPWGlveG52Zy1rRXhyMzFrIiwieSI6ImcyU1VqNkJnVHdYakxWYWlTRnVobGtSWklrMndaWlNaMWJEWG1DSTZSVXcifSwia2lkIjoiMTIzIiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..UIzHIjrFX8fPX91SEUzZpA.9hmtgLHx_UZjYTwduAtdruZB60QPRPjvczVeJwSI7tomXmEU720zuokvMdf9VxQqHOh2PHvtTtqW8OZQuIqYyDmss06ii-fy73a897AJv2KXPARY6DduoiLSJwDCJKhBiJlnZkAMyRZdB5xGzJwXL21QaXbO86EF6_d9qzrOhQvrNlfkTOBQYnv5Mhnnetda0_zm59HRMW2mg-rEOGj1W0Q4U0I8ZZrXQSxO3MnalxuzWQ4oTU2uHZrFnsyL93PeKiG_RmIszQGXqG0bN8WsoJfL0BTd20rnxldLQcSZYNdxGJw0EBGwlSp7DTpcmP1kzd1v2PzLGISZiPa9zadcVuLaODBZQ5GdHoPgIi76pTRwDJrv1CuD8ugfuuu_L5DxFIErnqs5cTONqxhCQ23ZeCSbnuDJDJju9yyr2wYoFFKQQciZmPddPgi2phew31DRjju4y4Ab6H7Vv01gqk6h2b9clR7v54wZSvR0CVROLZj79nKM1eLDhEo8JEv6T5APb2EHMTaU-sIlT-XqENbwV-A5HSEuEdvU7K3fsgioU5qJWwk9SS1WWmyqHnvCK1Rl5azJcKbfyN07a7znZD66IAoSUoCHjsqmFC4bd6ckdLA.Q3Ys35PhzHsnNnlJQ3rzwR-RsfEmYeDxXDsw9h97Azo
After remove Message Type Indicator and perform decryption
{
"msgVer": "1.0",
"billerType": "AM",
"callerDeviceType": "17",
"callerDeviceVer": "1",
"sequenceNo": "2022091511262185",
"mrn": "000000",
"resultCode": "8e8c6e61-f9e4-40f0-a4a5-9e561579c901",
"authIdResp": "484684",
"paymentScheme": "AM",
"maskedPAN": "443322XXX1234",
"htr": "",
"paymentMethod": "00",
"paymentType": "STX",
"mid": "000010000012XXX",
"tid": "2000XXX",
"currency": "458",
"amount": "27800"
}

Example Message

POST Request
curl -X POST "https://xxx/xxx/paymentNotification" \
-H "Accept: application/json" \
-H "Content-Type: text/plain" \
-H "Signature: ..." \
-H "sourceSystem: ..." \
-d '0025eyJlcGsiOnsia3R5IjoiRUMiLCJ...'