curl --request POST \
--url https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-PARTNER-ID: <api-key>' \
--data '
{
"reference_number": "INV-20231130-001",
"scope": "issuer",
"type": "mpm-dynamic"
}
'import requests
url = "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id}"
payload = {
"reference_number": "INV-20231130-001",
"scope": "issuer",
"type": "mpm-dynamic"
}
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({reference_number: 'INV-20231130-001', scope: 'issuer', type: 'mpm-dynamic'})
};
fetch('https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id}', 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/status/{account_id}",
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([
'reference_number' => 'INV-20231130-001',
'scope' => 'issuer',
'type' => 'mpm-dynamic'
]),
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/status/{account_id}"
payload := strings.NewReader("{\n \"reference_number\": \"INV-20231130-001\",\n \"scope\": \"issuer\",\n \"type\": \"mpm-dynamic\"\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/status/{account_id}")
.header("Authorization", "Bearer <token>")
.header("X-PARTNER-ID", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reference_number\": \"INV-20231130-001\",\n \"scope\": \"issuer\",\n \"type\": \"mpm-dynamic\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id}")
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 \"reference_number\": \"INV-20231130-001\",\n \"scope\": \"issuer\",\n \"type\": \"mpm-dynamic\"\n}"
response = http.request(request)
puts response.read_body{
"response_code": "SP000",
"response_message": "Successful",
"data": {
"transaction_id": "112220251111135424691",
"transaction_status": {
"code": "03",
"desc": "Pending"
},
"qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002021035224094080303UME51440014ID.CO.QRIS.WWW02153559174130477690303UME5204601153033605405110005802ID5903eos6005DEPOK6105746786221051017730486640703C0163044D76",
"type": "mpm-dynamic",
"scope": "issuer",
"reference_number": "INV-20231130-001",
"post_timestamp": "2023-11-30T12:34:56Z",
"processed_timestamp": "2023-11-30T12:45:00Z",
"balance_after": {
"value": "100000.00",
"currency": "IDR"
},
"net_amount": {
"value": "95000.00",
"currency": "IDR"
},
"fee": {
"value": "5000.00",
"currency": "IDR"
},
"gross_amount": {
"value": "100000.00",
"currency": "IDR"
},
"rrn": "112220251111135424"
}
}{
"response_code": "SP018",
"response_message": "Validation error",
"data": {
"reference_number": null,
"scope": "issuer",
"message": "Validation error 'reference_number': 'The reference number field is required.'"
}
}{
"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 Status
Retrieve the current status of a QRIS transaction for the specified account using reference_number, type, and scope. See Response Code for the full SP000–SP020 reference.
curl --request POST \
--url https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-PARTNER-ID: <api-key>' \
--data '
{
"reference_number": "INV-20231130-001",
"scope": "issuer",
"type": "mpm-dynamic"
}
'import requests
url = "https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id}"
payload = {
"reference_number": "INV-20231130-001",
"scope": "issuer",
"type": "mpm-dynamic"
}
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({reference_number: 'INV-20231130-001', scope: 'issuer', type: 'mpm-dynamic'})
};
fetch('https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id}', 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/status/{account_id}",
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([
'reference_number' => 'INV-20231130-001',
'scope' => 'issuer',
'type' => 'mpm-dynamic'
]),
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/status/{account_id}"
payload := strings.NewReader("{\n \"reference_number\": \"INV-20231130-001\",\n \"scope\": \"issuer\",\n \"type\": \"mpm-dynamic\"\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/status/{account_id}")
.header("Authorization", "Bearer <token>")
.header("X-PARTNER-ID", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reference_number\": \"INV-20231130-001\",\n \"scope\": \"issuer\",\n \"type\": \"mpm-dynamic\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox-payment-b2b.singapay.id/api/v2.0/qris/status/{account_id}")
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 \"reference_number\": \"INV-20231130-001\",\n \"scope\": \"issuer\",\n \"type\": \"mpm-dynamic\"\n}"
response = http.request(request)
puts response.read_body{
"response_code": "SP000",
"response_message": "Successful",
"data": {
"transaction_id": "112220251111135424691",
"transaction_status": {
"code": "03",
"desc": "Pending"
},
"qr_data": "00020101021226620015ID.SINGAPAY.WWW0118936012070412260002021035224094080303UME51440014ID.CO.QRIS.WWW02153559174130477690303UME5204601153033605405110005802ID5903eos6005DEPOK6105746786221051017730486640703C0163044D76",
"type": "mpm-dynamic",
"scope": "issuer",
"reference_number": "INV-20231130-001",
"post_timestamp": "2023-11-30T12:34:56Z",
"processed_timestamp": "2023-11-30T12:45:00Z",
"balance_after": {
"value": "100000.00",
"currency": "IDR"
},
"net_amount": {
"value": "95000.00",
"currency": "IDR"
},
"fee": {
"value": "5000.00",
"currency": "IDR"
},
"gross_amount": {
"value": "100000.00",
"currency": "IDR"
},
"rrn": "112220251111135424"
}
}{
"response_code": "SP018",
"response_message": "Validation error",
"data": {
"reference_number": null,
"scope": "issuer",
"message": "Validation error 'reference_number': 'The reference number field is required.'"
}
}{
"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.
Path Parameters
Account identifier (ULID) for which to perform the lookup.
Body
64"INV-20231130-001"
issuer, acquirer "issuer"
Deprecated/unused — not required and not read by the endpoint.
mpm-static, mpm-dynamic, cpm "mpm-dynamic"
Response
Success — transaction found. data contains the transaction snapshot (QrisMoneyOutTransactionData).
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"
Inquiry status response data structure. Similar to QrisMoneyOutTransactionData but may be extended with additional fields relevant to status checks.
Show child attributes
Show child attributes
