Developer Suite
Register Sandbox
Register Sandbox
    • Overview
    • API Endpoints
    • Ecommerce Checkout
      • Purchase
        POST
      • Get a transaction details
        POST
      • Close transaction
        POST
      • Check transaction
        POST
      • Refund API
        POST
      • Get transaction list
        POST
      • Exchange rate
        POST
    • Checkout Plugins
      • Shopify
      • Prestashop
      • Woocommerce
    • Credentials on File
      • Link Account
        POST
      • Link Card
        POST
      • Payment
        POST
      • Renew Token
        POST
      • Get token details
        POST
      • Remove token
        POST
      • Subscripiton
        POST
    • ABA QR API
      • QR API
        POST
    • Payment Link
      • Create payment link
        POST
      • Get payment link details
        POST
    • Pre-auth
      • Complete pre-auth transactions
        POST
      • Complete pre-auh transaction with payout
        POST
      • Cancel pre-purchase transaction
        POST
    • Payout
      • Payout
      • Update a beneficiary status
      • Add a beneficiary to whitelist
    • KHQR Guideline
      • Get transactions
    • Resources

    KHQR Guideline

    What is ABA KHQR?#

    A standardized QR code payment system overseen by the National Bank of Cambodia. It facilitates cashless transactions by allowing consumers and businesses to make and receive payments seamlessly using mobile banking apps or e-wallets. The system promotes digital payments, enhances financial inclusion, and ensures interoperability among different banks and payment service providers, making financial transactions more efficient and accessible across the country.
    📌
    Merchants who implement KHQR are required to make adjustments or changes upon request by ABA or in compliance with the National Bank of Cambodia's requirements. Failure to do so may result in the suspension or termination of the service.

    Benefits of KHQR#

    For Customers:#

    No more confusion with multiple QR codes at checkout—just scan a single KHQR code.
    Simply look for the KHQR label when making payments.
    Use your preferred payment app, including the Bakong App, to pay at any location that supports KHQR.

    For Merchants:#

    Save counter space—display just one KHQR stand instead of multiple QR labels.
    Simple, fast, and secure payment solution.
    Accept payments from anyone and any bank app without the need for multiple bilateral contracts with different acquirers.

    How to Implement#

    Notations Convention#

    AbbreviationDescription
    ansAlphanumeric Special. The Alphanumeric Special alphabet includes ninety-six (96) characters in total and includes the numeric alphabet and punctuation.
    CConditional
    CDCVMConsumer Device Cardholder Verification Method
    CRCCyclic Redundancy Check
    ECIExtended Channel Interpretation
    IDIdentifier of the data object
    ISOInternational Standards Organization
    MMandatory
    NNumeric. Values that can be represented by all digits, from "0" to "9".
    QR CodeQuick Response Code
    RFUReserved for Future Use
    SString. Values represented by any precomposed character(s) defined in [Unicode].
    Var.Variable

    Data Object#

    Data Objects Under the Root of a QR Code#

    NameIDFormatLengthPresenceComment
    Payload Format Indicator"00"N"02"M01
    Point of Initial Method"01"N"02"M- 11 for Static QR (without amount)
    - 12 for Dynamic QR (with amount)
    Merchant Account Information"30"Nvar. up to "99"MProvide By ABA
    Merchant Category Code"52"ansvar. up to "99"MAt least one Merchant Account Information data object shall be present.
    Transaction Currency"53"N"03"M116 for KHR, 840 for USD
    Transaction Amount"54"ansvar. up to "13"CAbsent if the mobile application is to prompt the consumer to enter the transaction amount. Present otherwise.
    Country Code"58"ans"02"M
    Merchant Name"59"ansvar. up to "25"MThe display name shown when a mobile banking app scans the QR. Please ensure it matches the name on your ABA registered profile.
    Merchant City"60"ansvar. up to "15"M
    Additional Data Field Template"62"Svar. up to "99"MThe Additional Data Field Template includes information that may be provided by the Merchant.
    Additional Data Field"99"Svar. up to "99"MAdditional info used by Bakong.
    CRC"63"ans"04"MCyclic Redundancy Check

    Data Objects for Additional Data Field Template (ID "62")#

    NameIDFormatLengthPresenceComment
    Merchant Reference Number"01"ansvar. up to "25"M
    PayWay Data Field Template"68"Svar. up to "99"MProvide By ABA

    Example#

    00020101021230510016abaakhppxxx@abaa01151250212145328460208ABA Bank52045987530311654031005802KH5925OLD ME 25 CHAR WINNER IP26010Phnom Penh62570115MC-REF-KH-1500068340010PAYWAY@ABA0208104514230604A2279934001317598053453370113175980552533763049FBD
    

    Data Objects Under the Root of a QR Code#

    IDSub TagLengthValueDescripiton
    000201Verstion 1
    010212Indicate it's dynamic QR
    3051Merchant info
    0016abaakhppxxx@abaaAcquiring Bakong ID.
    0115125021214532846Your MID provided by ABA Bank
    0208ABA BankName of acquiring Bank
    52045987Merchant Category Code
    5303116KHR transaction Currency
    5403100Transaction Amount
    5802KHCountry Code
    5925OLD ME 25 CHAR WINNER IP2Merchant Name
    6010PHNOM PENHMerchant City
    6257Additional data.
    0115MC-REF-KH-15000Merchant reference #
    68340010PAYWAY@ABA0208104514230604A227Provide by ABA Bank
    9934Additional data use by Bakong
    00131759805345337Creation timestamp
    01131759805345337Expriry timestamp
    63049FBDCRC
    📌
    QR can be paid multiple times.

    Receiving Payment Notification via Webhook#

    Merchant have to provide the webhook url to PayWay to receive payment notification once the payment is successful paid by the customer. Below is the sample data that will be posted to the webhook.
    {
       "tran_id":"175980853350227",
       "merchant_ref":"MC-REF-KH-15000",
       "datetime":"2025-10-07 10:42:13",
       "bank_ref":"100FT30152694050",
       "status":"0",
       "description":"APPROVED",
       "apv":"140724",
       "original_amount":100,
       "original_currency":"KHR",
       "payment_amount":100.0,
       "payment_currency":"KHR",
       "payment_type":"ABA Pay",
       "payer_account":"*898",
       "payer_name":"KEO SIDARA",
       "bank_name":"ABA Bank"
    }
    NameDescription
    tran_idUnique transaction ID that generate by PayWay.
    merchant_refInformation from QR subtag 62.01.
    datetimeDate and time of the transaction.
    bank_refCore banking booking entry
    status0 represent the success payment
    descriptionPayment status description in word.
    apvApproval code. It has 6 digits length
    original_amountThe amount that merchant received
    original_currencyMerchant currency
    payment_amountPayer payment amount.
    payment_currencyPayer payment currency. It can be KHR or USD.
    payment_typeABA PAY or KHQR
    payer_accountMask account number of the payer.
    payer_namePayer name.
    bank_nameIssuer bank name
    Webhook must use POST method, HTTPS encryption.
    Previous
    Add a beneficiary to whitelist
    Next
    Get transactions