
QRIS (Money Out)
This endpoint is used to retrieve detailed merchant (MPM) information based on the scanned QR Code data. It is the first step required before triggering a payment.
Here are the details of the API endpoint for inquiring merchant information based on the scanned QR Code data:
| Method | Path | Format | Authentication |
|---|---|---|---|
| POST | /api/v2.0/qris/issuer/mpm/inquiry-merchant | json | OAuth 2.0 with Access Token |
| Field | Value | Type | Mandatory | Length | Description | Example |
|---|---|---|---|---|---|---|
| X-PARTNER-ID | api_key | Alphanumeric | Mandatory | API key obtained from the merchant dashboard. | b3ed7d4b-a96c-6c08-b3c7-12c3124242d9 | |
| Accept | application/json | Alphabetic | Mandatory | Specifies JSON as the expected response format. | application/json | |
| Authorization | Bearer {bearerToken} | Alphanumeric | Mandatory | Bearer token obtained from the get access token endpoint. | Bearer eyJ0eXAiOiJKV1{…} |
| Key | Data Type | Mandatory | Description |
|---|---|---|---|
| qr_data | String | Yes | The QR code data scanned by the user. |
{
"qr_data": "00020101021126580014ID.SINGAPAY.WWW01189360091601760009ID.SINGAPAY0208QRISPAY5204000053037645406100005802ID5913PT. SINGAPAY6009JAKARTA610800005802ID62290525D1B5E9F1B0C9A7F4BFEF8C3D8A1B03D6304B0C6"
}
| Key | Data Type | Mandatory | Description |
|---|---|---|---|
| response_code | String | Yes | Response code (see Response Code appendix) |
| response_message | String | Yes | Response description (see Response Code appendix) |
| data | Object | No | Conditional parameter (present on success) |
| > payload_format_indicator | String | Yes | Format version of payload indicator |
| > point_of_initiation_method | String | Yes | Indicates how the QR is generated. DYNAMIC means the QR code is unique to this transaction and includes the specific amount. |
| > merchant_information_26 | Object | No | |
| >> global_unique_identifier | String | Yes | This Field contains a unique identifier for the merchant. |
| >> merchant_pan | String | Yes | The Merchant’s Primary Account Number used for routing funds. |
| >> merchant_id | String | Yes | The unique identification number assigned to the merchant by the provider. |
| >> merchant_criteria | String | Yes | The business scale classification. UMI stands for Usaha Mikro (Micro Business). |
| > merchant_information_51 | Object | No | |
| >> global_unique_identifier | String | Yes | The ID of the payment scheme or provider (e.g., ID.CO.QRIS.WWW). |
| >> merchant_id | String | Yes | The unique identification number assigned to the merchant by the provider. |
| >> merchant_criteria | String | Yes | The business scale classification. UMI stands for Usaha Mikro (Micro Business). |
| > mcc | String | Yes | Merchant Category Code. A 4-digit code identifying the type of business (e.g., 7231 for personal services). |
| > transaction_currency | String | Yes | The currency used for the transaction (e.g., RUPIAH). |
| > transaction_amount | String | Yes | The String value of the transaction to be paid by the customer. |
| > country_code | String | Yes | The ISO country code where the merchant is located (ID for Indonesia). |
| > merchant_name | String | Yes | The legal or trading name of the shop/merchant. |
| > merchant_city | String | Yes | The city where the merchant is registered. |
| > merchant_postal_code | String | Yes | The postal/zip code of the merchant’s location. |
| > additional_data | Object | Yes | |
| >> reference_label | String | Yes | A unique string used to track the specific transaction in the back-end system. |
| >> terminal_label | String | Yes | Identifies which specific terminal or cashier point generated the QR (e.g., “C01”). |
| >> purpose_of_transaction | String | Yes | Internal notes or codes used to describe the reason for the payment. |
| > crc | String | Yes | Cyclic Redundancy Check. A checksum used to verify the integrity of the QR data to prevent tampering. |
Success: Here’s an example of a successful response.
{
"response_code": "SP000",
"response_message": "Successful",
"data": {
"payload_format_indicator": "01",
"point_of_initiation_method": "DYNAMIC",
"merchant_information_26": {
"global_unique_identifier": "ID.SINGAPAY.WWW",
"merchant_pan": "936012070508140001",
"merchant_id": "218309810239",
"merchant_criteria": "UMI"
},
"merchant_information_51": {
"global_unique_identifier": "ID.CO.QRIS.WWW",
"merchant_id": "743444174737198",
"merchant_criteria": "UMI"
},
"mcc": "7231",
"transaction_currency": "RUPIAH",
"transaction_amount": 12000,
"country_code": "ID",
"merchant_name": "Singapay Testing",
"merchant_city": "Tangerang",
"merchant_postal_code": "54478",
"additional_data": {
"reference_label": "1774865927",
"terminal_label": "C01",
"purpose_of_transaction": "B4U5bV"
},
"crc": "4535"
}
}
Error: Here’s an example of a validation error response.
{
"response_code": "SP117",
"response_message": "Beneficiary Account Not Found",
"data": {
"qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002021035224094080303UME51440014ID.CO.QRIS.WWW02153559174130477690303UME5204601153033605405110005802ID5903eos6005DEPOK6105746786221051017730486640703C0163044D76"
}
}