curl --request POST \
--url https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-PARTNER-ID: <api-key>' \
--data '
{
"qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002..."
}
'import requests
url = "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant"
payload = { "qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002..." }
headers = {
"Authorization": "Bearer <token>",
"X-PARTNER-ID": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-PARTNER-ID': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({qr_data: '00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...'})
};
fetch('https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'qr_data' => '00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-PARTNER-ID: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant"
payload := strings.NewReader("{\n \"qr_data\": \"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-PARTNER-ID", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant")
.header("Authorization", "Bearer <token>")
.header("X-PARTNER-ID", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"qr_data\": \"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-PARTNER-ID"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"qr_data\": \"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...\"\n}"
response = http.request(request)
puts response.read_body{
"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": "1234567890123456",
"merchant_id": "1234567890",
"merchant_criteria": "UMI"
},
"merchant_information_51": {
"global_unique_identifier": "ID.SINGAPAY.WWW",
"merchant_id": "1234567890",
"merchant_criteria": "UMI"
},
"mcc": "5812",
"transaction_currency": "RUPIAH",
"transaction_amount": "100000.00",
"country_code": "ID",
"merchant_name": "Toko ABC",
"merchant_city": "Jakarta",
"merchant_postal_code": "12345",
"additional_data": {
"reference_label": "REF1234567890",
"terminal_label": "C01",
"purpose_of_transaction": "B4U5bV"
},
"crc": "4535"
}
}{
"response_code": "SP002",
"response_message": "Internal Server Error",
"data": {
"reference_number": "INV-20231130-001",
"type": "mpm-dynamic",
"scope": "issuer"
}
}{
"response_code": "SP005",
"response_message": "Timeout",
"data": {
"reference_number": "INV-20231130-001",
"type": "mpm-dynamic",
"scope": "issuer"
}
}Inquiry Merchant
Decodes the provided MPM qr_data. If merchant information (tag 26) is absent, the endpoint will query the configured issuer vendor to resolve merchant/payment criteria. See Response Code for the full SP000–SP020 reference.
curl --request POST \
--url https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-PARTNER-ID: <api-key>' \
--data '
{
"qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002..."
}
'import requests
url = "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant"
payload = { "qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002..." }
headers = {
"Authorization": "Bearer <token>",
"X-PARTNER-ID": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-PARTNER-ID': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({qr_data: '00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...'})
};
fetch('https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'qr_data' => '00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-PARTNER-ID: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant"
payload := strings.NewReader("{\n \"qr_data\": \"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("X-PARTNER-ID", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant")
.header("Authorization", "Bearer <token>")
.header("X-PARTNER-ID", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"qr_data\": \"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/issuer/mpm/inquiry-merchant")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-PARTNER-ID"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"qr_data\": \"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002...\"\n}"
response = http.request(request)
puts response.read_body{
"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": "1234567890123456",
"merchant_id": "1234567890",
"merchant_criteria": "UMI"
},
"merchant_information_51": {
"global_unique_identifier": "ID.SINGAPAY.WWW",
"merchant_id": "1234567890",
"merchant_criteria": "UMI"
},
"mcc": "5812",
"transaction_currency": "RUPIAH",
"transaction_amount": "100000.00",
"country_code": "ID",
"merchant_name": "Toko ABC",
"merchant_city": "Jakarta",
"merchant_postal_code": "12345",
"additional_data": {
"reference_label": "REF1234567890",
"terminal_label": "C01",
"purpose_of_transaction": "B4U5bV"
},
"crc": "4535"
}
}{
"response_code": "SP002",
"response_message": "Internal Server Error",
"data": {
"reference_number": "INV-20231130-001",
"type": "mpm-dynamic",
"scope": "issuer"
}
}{
"response_code": "SP005",
"response_message": "Timeout",
"data": {
"reference_number": "INV-20231130-001",
"type": "mpm-dynamic",
"scope": "issuer"
}
}Authorizations
JWT issued by POST /api/v1.1/access-token/b2b. Send Authorization: Bearer <token>.
Merchant API key (Credential.api_key). Required on every request.
Body
Raw QRIS MPM payload string to decode.
500"00020101021226620015ID.SINGAPAY.WWW0118936012070412260002..."
Response
Success — data contains the decoded QRIS payload or vendor-resolved merchant metadata (QrisIssuerMpmDecodedMerchantData).
API response envelope for successful QRIS money-out status inquiries. Conforms to the standard MerchantV2ApiEnvelope structure, with data containing a QrisMoneyOutTransactionData object representing the current state of the transaction.
Response code (see Response Code appendix) indicating the result of the inquiry. For successful inquiries, this is typically a code such as "00" or "SP000".
"SP000"
Human-readable message providing additional context about the response.
"Successful"
Decoded merchant information from MPM QR data or vendor resolution. Contains fields commonly found in tag 26 of QRIS payloads, as well as any additional metadata resolved from the issuer vendor.
Show child attributes
Show child attributes
