4. QR code payload data objects
@PayOn development group
As described in the EMV QRCPS, the content of the QR Code includes the following 5 groups of data objects: • QR Code Conventions (Table 4.1) • Merchant Account Information (Table 4.2) • Additional Merchant Information (Table 4.3) • Transaction Value (Table 4.4) • Additional Data Template (Table 4.5)
4.1 QR code conventions
The QR Code Conventions (Table 4.1) specify conventions used for the QR Code content, such as Payload Format indicator, which defines the version of the QR Code template and hence the conventions on the identifiers, lengths and values.
Table 4.1 QR code conventions
ID | Name | Length | Presence | Remarks |
"00" | Payload format indicator | "02" | M | A fixed value of "01"
|
"01" | Point of initiation method | "02" | O | "11" for static QR code "12" for dynamic QR code |
"63" | Cyclic redundancy check (CRC) | "04" | M | Checksum calculated over all the data objects included in the QR code |
The Payload Format Indicator (ID “00”) shall contain a value of "01". All other values are RFU. The Point of Initiation Method (ID “01”) shall contain a value of "11" or "12". All other values are RFU. The value of "11" should be used when the same QR Code is shown for more than one transaction and the value of “12” should be used when a new QR Code is shown for each transaction. The CRC (ID “63”) shall be calculated according to [ISO/IEC 13239] using the polynomial '1021' (hex) and initial value 'FFFF' (hex). The data over which the checksum is calculated shall cover all data objects, including their ID, Length and Value, to be included in the QR Code, in their respective order, as well as the ID and Length of the CRC itself (but excluding its Value). Following the calculation of the checksum, the resulting 2-byte hexadecimal value shall be encoded as a 4-character Alphanumeric Special value by converting each nibble to an Alphanumeric Special character. For example, a CRC with a two-byte hexadecimal value of '007B' is included in the QR Code as "6304007B".
4.2 Merchant account information
The Merchant Account Information specifies the identity of a merchant. Each payment operator may define its own format of the Merchant Account Information IDs. Table 4.2A shows the allocation of Merchant Account Information IDs among various payment operators.
Table 4.2A : Merchant Account Information
ID | Name | Length | Presence | Remarks |
"02"-"03" | Reserved for Visa | Var. up to "99" | M One or more data objects (ID "02" to "51") shall be included | |
"04"-"05" | Reserved for Mastercard | |||
"06"-"08" | Reserved by EMVCo | |||
"09"-"10" | Reserved for discover | |||
"11"-"12" | Reserved for Amex | |||
"13"-"14" | Reserved for JCB | |||
"15"-"16" | Reserved for UnionPay | |||
"17"-"25" | Reserved by EMVCo | ERROR | ||
"26" | Reserved for local debit card scheme-Bakong for use in KH | |||
"27"-"28" | Reserved by the WG for use in Cambodia | These IDs are reserved for future use | ||
"29"-"30" | Reserved for national payment for use in cambodia | "29" reserved for remittance "30" reserved for bill payment | ||
"31" | Reserved by the WG for payment innovation (API) | These IDs are reserved for future use | ||
"32"-"38" | Reserved for additional payment network for use in Cambodia | These IDs are reserved for future use | ||
"39"-"51" | Reserved for non-bank payment network for use in Cambodia | Dynamically used by non-bank payment operators for use in Cambodia
|
The IDs ”26” to “51” are Merchant Account Information templates, which may include primitive data objects and other templates that can be defined by individual payment operators.
The Merchant Account Information template shall contain a primitive Globally Unique Identifier data object with a data object ID "00" to identify the payment operator and the corresponding merchant account information specific to that payment operator (Table 4.2B).
Table 4.2B : Data object ID allocation in merchant account information template (IDs "26" to "51")
ID | Name | Format | Length | Presence | Remarks |
"00" | Globally unique identifier | ans | Var. up to "32" | M | An identifier to identify the payment operator which uses this template to define the Merchant Account Information The value is one of the following: • an Application Identifier (AID); • a [UUID] without the hyphen (-) separators; or • a reverse domain name. |
"01"-"99" | Payment network specific | S | O | Additional data objects to define the Merchant Account Information specific to the payment operator
|
The value of the Globally Unique Identifier field shall contain one of the following: • An Application Identifier (AID) consisting of a RID registered with ISO and, optionally, a PIX, as defined by [ISO 7816-4]. For example, "D840000000". • A [UUID] without the hyphen (-) separators. For example, “581b314e257f41bfbbdc6384daa31d16”. • A reverse domain name. For example, “com.merchant.name”. The value of the Globally Unique Identifier field sets the context for the remainder of the template and the meaning of the other data objects in the template are context specific and outside of the scope of this specification.
4.3 Additional merchant information The Additional Merchant Information (Table 4.3A) specifies the information about a merchant such as merchant name and business location.
Table 4.3A : Additional Merchant Information
ID | Name | Format | Length | Presence | Remarks |
"52" | Merchant Category Code | N | "04" | M | Put a dummy code of “0000” in this field if the payment operator does not use this information |
"58" | Country Code | ans | "02" | M | For Cambodia is “KH” |
"59" | Merchant Name | ans | var. up to "25" | M | |
"60" | Merchant City | ans | var. up to "15" | M | |
"61" | Postal Code | ans | var. up to "10" | O | |
"64" | Merchant Information - Language Template | S | var. up to "99" | O | A template with other primitive data objects (See EMV QRCPS for details) |
The Merchant Category Code (MCC) (ID “52”) shall contain an MCC as defined by [ISO
18245]. The MCC should indicate the Merchant Category Code of the merchant. Put a dummy code of “0000” in the MCC field if the payment operator does not use this information.
The Country Code (ID “58”) shall contain a value as defined by [ISO 3166-1 alpha 2]. The Country Code should indicate the country in which the merchant transacts. Put “KH” in the Country Code field if the merchant transacts in Cambodia.
The Merchant Name (ID “59”) shall be present. The Merchant Name should indicate the “doing business as” name for the merchant. If the QR code information supports only payment operators who supply merchant information via the payment operator’s centralized database, this field may be populated with a dummy code of “NA” in the Merchant Name field. In all other instances, the Merchant Name field must indicate the “doing business as” name for the merchant.
The Merchant City shall be present (ID “60”). The Merchant City should indicate the city of the merchant's physical location. Put “KH” in the Merchant City Code field if the merchant is located in Cambodia.
The Merchant Information – Language Template (ID “64”) is a template, which contains other data fields, which may be used by a mobile application to present the merchant information in an alternate language (Table 4.3B).
Table 4.3B: Data fields for merchant information - language template (ID "64")
ID | Name | Format | Length | Presence | Remarks |
"00" | Language Preference | ans | "02" | M | |
"01" | Merchant Name—Alternate Language | S | Var. up to “25 | M | |
"02" | Merchant City—Alternate Language | S | var. up to "15" | O | |
"03"- “99” | RFU for EMVCo | S | var. up to "99" | Data objects reserved for EMVCo |
If the Merchant Information – Language Template (ID “64”) is present, the template shall contain the Language Preference field (ID "00") and Merchant Name — Alternate Language field (ID "01"). It may contain the Merchant City — Alternate Language field (ID "02"). All other IDs within the Merchant Information—Language Template are RFU for EMVCo.
The data fields with IDs "01" and "02" are used as an addition to the merchant information under the root. While the equivalent data objects under the root are defined with a format of Alphanumeric Special, and as such can only contain the Common Character Set, the data fields with IDs “01” and “02”, if present, are defined with a format of String, so therefore may contain a different character set.
The Language Preference field (ID “00”) shall contain 2 alphabetical characters coded to a value defined by [ISO 639]. The value should represent the single language used to encode the Merchant Name—Alternate Language field (ID “01”) and the optional Merchant City—Alternate Language field (ID “02”).
4.4 Transaction Value
The Transaction Value data objects (Table 4.4) specify the currency and amount of a transaction. They also include tip or convenience indicators, which allow merchants or customers to specify the convenience fee in fixed value or percentage.
Table 4.4 : Transaction value
ID | Name | Format | Length | Presence | Remarks |
“53” | Transaction Currency | N | “03” | M | A numeric code based on [ISO 4217], e.g. put “116” for KHR. |
“54” | Transaction Amount | ans | Var. up to “13” | C | |
“55” | Tip or Convenience Indicator | N | “02” | O | |
“56” | Value of Convenience Fee Fixed | ans | Var. up to “13” | C | |
“57” | Value of Convenience Fee Percentage | ans | Var. up to “05” | C |
The Transaction Currency (ID “53”) shall conform to [ISO 4217] and shall contain the
3-digit numeric representation of the currency. For example, KHR is represented by the value "116". The value should indicate the transaction currency in which the merchant transacts.
The Transaction Amount (ID “54”), if present, shall be different from zero, shall only include (numeric) digits "0" to "9" and may contain a single "." character as the decimal mark. When the amount includes decimals, the "." character shall be used to separate the decimals from the integer value and the "." character may be present even if there are no decimals. The Transaction Amount shall not be included if the mobile application should prompt the consumer to enter the amount to be paid to the Merchant.
The payment system operators should follow the rules and format in accordance with the EMV QRCPS to process the Transaction Value IDs of the QR Code.
4.5 Additional data template and PayOn fields
The ID “62” is a template which includes common additional data objects such as Bill Number and Reference Label. It also allows payment operators to define their own additional data objects.
Table 4.5 : Additional Data and PayOn fields
ID | Sub- ID | Name | Format | Length | Pre- sence | Remarks |
“62” | “01” | Bill Number | ans | var. up to “25” | O | |
“02” | Mobile Number | ans | var. up to “25” | O | ||
“03” | Store Label | ans | var. up to “25” | O | ||
“04” | Loyalty Number | ans | var. up to “25” | O | ||
“05” | Reference Label | ans | var. up to “25” | O | ||
“06” | Customer Label | ans | var. up to “25” | O | Merchant Name for PayOn spec | |
“07” | Terminal Label | ans | var. up to “25” | O | ||
“08” | Purpose of Transaction | ans | var. up to “25” | O | ||
“09” | Additional Consumer Data Request | ans | var. up to “25” | O | ||
“10” – “49” | Reserved for EMVCo | S | O | |||
“50” | Reserved for FPS | S | O | |||
“51” – “55” | Reserved for the WG | S | O | |||
“81” | Transaction ID | S | Var. up to "16" | O | PayOn spec | |
"82" | Terminal ID | S | 10 | O | PayOn spec | |
"83" | QR TRT - Transaction Type (10: Payment, 30: Top Up, 50: Refund) | S | 2 | O | PayOn spec | |
"84" | API_MODE (1: Web Payment, 2: Merchant App, 3: POS - Telpo, 5: POS - Z90) | S | 1 | O | PayOn spec | |
"85" | REQ_DATE | S | 14 | O | PayOn spec | |
"86" | Merchant ID (payon) | S | 8 | O | PayOn spec | |
"87" | Product ID - GiftOn | S | 8 | O | PayOn spec | |
"88" | Pruchase Datetime - GiftOn | S | 14 | O | PayOn spec | |
"90" | Product Name - GiftOn | S | Var. up to 50 | O | PayOn spec | |
"91" | Product Image - GiftOn | S | Var. up to 50 | O | PayOn spec | |
"92" | Merchant ID - GiftOn | S | Var. up to 50 | O | PayOn spec | |
"93" | Quantity - GiftOn | S | O | PayOn spec |
The payment operators should follow the rules and format in accordance with the EMV QRCPS to process the Data Objects for Additional Data Field Template of the QR Code. As the maximum data size of this Additional Data Field Template (ID “62”) is only 99 characters, it is highly recommended that the operators make use of the pre-defined additional data objects (Sub-IDs “01” – “09”) and avoid defining their own additional data objects in this template so as to prevent data overflow when QR codes of several payment system operators are combined into one common QR Code.
Last updated