QR MPM Query Payment
Overview
Service to query payment status of MPM (Merchant Presented Mode) QRIS transactions.
Direction: Merchant to Manjo
Version: 1.0
Service Code: 51
HTTP Method: POST
Path: ../v1.0/qr/qr-mpm-query
Request Structure
HTTP Headers
| Field | Attribute | Type | Description | Example |
|---|---|---|---|---|
Content-Type |
M | String | Media type of resource | application/json |
Authorization |
M | String | Access token with Bearer format | Bearer YWFlNTQ4NTEyZTE5ZjZi... |
X-TIMESTAMP |
M | String | Client's local timestamp (yyyy-MM-ddTHH:mm:ssTZD) | 2025-11-27T07:14:27.609+07:00 |
X-CLIENT-KEY |
M | String | Client's client_id (merchantcode+paymentid) | EP9613058999 |
X-SIGNATURE |
M | String | HMAC_SHA512 signature using clientSecret | 26200f8e8fcd11a7e881044a86213f8d... |
ORIGIN |
O | String | Merchant domain | www.hostname.com |
X-IP-ADDRESS |
O | String | Merchant IP address | 172.24.281.24 |
X-PARTNER-ID |
M | String(36) | Unique merchant ID | EP9613058999 |
X-EXTERNAL-ID |
M | String(36) | Unique reference number per day | XTIDQ-0u87ji0pjk |
CHANNEL-ID |
M | String(5) | Device identification | 05 |
X-SIGNATURE Formula:
stringToSign = HTTPMethod + ":" + EndpointUrl + ":" + AccessToken + ":" + Lowercase(HexEncode(SHA256(minify(RequestBody)))) + ":" + TimeStamp
signature = HMAC_SHA512(clientSecret, stringToSign)
Request Body
{
"originalReferenceNo": "A0000001703",
"originalPartnerReferenceNo": "DIRECT-API-NMS-12ajd1mir8",
"originalExternalId": "30443786930722726463280097920912",
"serviceCode": "99",
"merchantId": "EP96130589",
"additionalInfo": {
"currency": "IDR"
}
}
Parameter Details
| Parameter | Attribute | Type | Description | Example |
|---|---|---|---|---|
originalReferenceNo |
M | String(64) | Original transaction ID from service provider (QRIS generation) | A0000001703 |
originalPartnerReferenceNo |
M | String(64) | Original transaction ID from merchant (QRIS generation) | DIRECT-API-NMS-12ajd1mir8 |
originalExternalId |
O | String(32) | Original X-EXTERNAL-ID from header | 30443786930722726463280097920912 |
serviceCode |
M | String(2) | Transaction type indicator (payment id) | "99" |
merchantId |
M | String(64) | Unique merchant identifier | "EP96130589" |
subMerchantId |
O | String(32) | Sub merchant ID | - |
externalStoreId |
O | String(64) | External store ID | - |
additionalInfo.currency |
M | String(20) | Currency | "IDR" |
Note on serviceCode:
"99"for Manjo QRIS transactions
Response Structure
HTTP Headers Response
Content-Type: application/json
X-TIMESTAMP: 2020-12-23T08:43:16+07:00
Response Body
{
"responseCode": "2005100",
"responseMessage": "Successful",
"originalReferenceNo": "A0000001703",
"originalPartnerReferenceNo": "DIRECT-API-NMS-12ajd1mir8",
"originalExternalId": "30443786930722726463280097920912",
"serviceCode": "99",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"paidTime": "2025-11-27T14:13:54+07:00",
"amount": {
"value": "50000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "450.00",
"currency": "IDR"
},
"terminalId": "45",
"additionalInfo": {
"currency": "IDR"
}
}
Response Parameter Details
| Parameter | Attribute | Type | Description | Example |
|---|---|---|---|---|
responseCode |
M | String(7) | Response code | "2005100" |
responseMessage |
M | String(150) | Response description | "Successful" |
originalReferenceNo |
C | String(64) | Echo of originalReferenceNo from request | "A0000001703" |
originalPartnerReferenceNo |
M | String(64) | Echo of originalPartnerReferenceNo from request | "DIRECT-API-NMS-12ajd1mir8" |
originalExternalId |
O | String(32) | Echo of originalExternalId from request | "30443786930722726463280097920912" |
serviceCode |
M | String(2) | Transaction type indicator | "99" |
latestTransactionStatus |
M | String(2) | Latest transaction status code | "00" |
transactionStatusDesc |
O | String(50) | Transaction status description | "Success" |
paidTime |
C | String(25) | Payment timestamp (ISO8601) | "2025-11-27T14:13:54+07:00" |
amount.value |
M | String(16,2) | Payment amount (2 decimals) | "50000.00" |
amount.currency |
M | String(3) | Currency (ISO4217) | "IDR" |
feeAmount.value |
M | String(16,2) | Fee amount (2 decimals) | "450.00" |
feeAmount.currency |
M | String(3) | Currency (ISO4217) | "IDR" |
terminalId |
O | String(16) | Terminal ID | "45" |
additionalInfo.currency |
M | String(20) | Currency | "IDR" |
Transaction Status Codes
| Status Code | Description |
|---|---|
00 |
Success |
01 |
Initiated |
02 |
Paying |
03 |
Pending |
04 |
Refunded |
05 |
Canceled |
06 |
Failed |
07 |
Not found |
Error Codes
| HTTP Code | Service Code | Case Code | Message | Category | Description |
|---|---|---|---|---|---|
| 200 | 51 | 00 | Success | Successful | Transaction successful |
| 400 | 51 | 02 | Invalid Mandatory Field {field name} | Message | Missing/invalid mandatory field |
| 401 | 51 | 00 | Unauthorized. {reason} | System | Invalid signature or client key |
| 401 | 51 | 01 | Invalid token | System | Invalid/expired access token |
| 404 | 51 | 01 | Transaction Not Found | Business | Transaction not found |
| 409 | 51 | 00 | Conflict | System | X-EXTERNAL-ID already used today |
Response Code Format: httpcode(3) + servicecode(2) + casecode(2)
Implementation Examples
Example Request
curl -X POST \
'https://api.manjo.com/v1.0/qr/qr-mpm-query' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YWFlNTQ4NTEyZTE5ZjZi...' \
-H 'X-TIMESTAMP: 2025-11-27T07:14:27.609+07:00' \
-H 'X-CLIENT-KEY: EP9613058999' \
-H 'X-SIGNATURE: 26200f8e8fcd11a7e881044a86213f8d...' \
-H 'X-PARTNER-ID: EP9613058999' \
-H 'X-EXTERNAL-ID: XTIDQ-0u87ji0pjk' \
-H 'X-IP-ADDRESS: 172.24.281.24' \
-H 'CHANNEL-ID: 05' \
-d '{
"originalReferenceNo": "A0000001703",
"originalPartnerReferenceNo": "DIRECT-API-NMS-12ajd1mir8",
"originalExternalId": "30443786930722726463280097920912",
"serviceCode": "99",
"merchantId": "EP96130589",
"additionalInfo": {
"currency": "IDR"
}
}'
Example Success Response
{
"responseCode": "2005100",
"responseMessage": "Successful",
"originalReferenceNo": "A0000001703",
"originalPartnerReferenceNo": "DIRECT-API-NMS-12ajd1mir8",
"originalExternalId": "30443786930722726463280097920912",
"serviceCode": "99",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"paidTime": "2025-11-27T14:13:54+07:00",
"amount": {
"value": "50000.00",
"currency": "IDR"
},
"feeAmount": {
"value": "450.00",
"currency": "IDR"
},
"terminalId": "45",
"additionalInfo": {
"currency": "IDR"
}
}
Example Transaction Not Found Response
{
"responseCode": "4045101",
"responseMessage": "Transaction Not Found",
"originalReferenceNo": "A0000001703",
"originalPartnerReferenceNo": "DIRECT-API-NMS-12ajd1mir8",
"serviceCode": "99",
"latestTransactionStatus": "07",
"transactionStatusDesc": "Not found"
}
Important Notes
- X-EXTERNAL-ID must be unique per merchant per day
- X-CLIENT-KEY is mandatory and consists of
merchantcode + paymentid - originalReferenceNo is the reference number returned during QRIS generation (from
qr-mpm-generateresponse) - originalPartnerReferenceNo is the partner reference number used during QRIS generation
- paidTime field is only populated for successful transactions (status
00) - feeAmount represents the transaction fee charged by the payment provider
Version: 1.0
Last Updated: November 2024
Service Owner: Manjo QRIS Team