Appearance
Payment Notification SNAP
Information
This API is requested from IFP to the Merchant during payment transactions.
Path | /v1.0/qr/qr-mpm-notify |
---|---|
HTTP Method | POST |
Service Code | 52 |
Request
Details
Parameter | Data Type | Mandatory | Length | Description |
---|---|---|---|---|
originalReferenceNo | String | M | 64 | Transaction identifier on service provider system |
originalPartnerReferenceNo | String | M | 64 | Transaction identifier on service consumer system |
latestTransactionStatus | String | M | 2 | Transaction Status Code. Only send payment notify to merchant for status 00 - Success |
transactionStatusDesc | String | M | 50 | Description status transaction |
amount | Object | M | ||
amount.value | String | M | 16,2 | Amount of the transaction. If it's IDR then the value includes 2 decimal digits. e.g. IDR 10.000,- will be placed with 10000.00 |
amount.currency | String | M | 3 | Currency (Format: ISO4217) |
additionalInfo | Object | M | Additional information | |
additionalInfo.merchantId | String | M | Identifier merchant | |
additionalInfo.merchantAccountNumber | String | O | Merchant PAN | |
additionalInfo.paymentChannel | String | M | ||
additionalInfo.issuer | String | M | ||
additionalInfo.retrievalReferenceNo | String | M | 64 | Reference number generated by Issuer. The value will be returned for successful payment. |
additionalInfo.invoiceNo | String | M | Reference number if payment is successful. | |
additionalInfo.customerName | String | O | Customer name from Issuer | |
additionalInfo.customerNumber | String | O | Customer PAN from Issuer | |
additionalInfo.paymentDetail | Object | M | ||
additionalInfo.paymentDetail.totalAmount | Object | M | ||
additionalInfo.paymentDetail.totalAmount.value | String | M | 16,2 | Total amount of the transaction. If it's IDR then the value includes 2 decimal digits. e.g. IDR 10.000,- will be placed with 10000.00 with 2 decimal |
additionalInfo.paymentDetail.totalAmount.currency | String | M | 3 | Currency |
additionalInfo.paymentDetail.tipAmount | Object | O | Fees charged by merchants to customers | |
additionalInfo.paymentDetail.tipAmount.value | String | O | 16,2 | Tip Amount |
additionalInfo.paymentDetail.tipAmount.currency | String | O | 3 | Currency (IDR) |
additionalInfo.itemDetails | Array of Obejcts | O | Explain the items purchased | |
additionalInfo.itemDetails.itemId | String(25) | C | 25 | ID of product. |
additionalInfo.itemDetails.name | String(150) | C | 100 | Name of product. |
additionalInfo.itemDetails.amount | Object | C | 13 | |
additionalInfo.itemDetails.amount.value | Object | C | Price per unit. | |
additionalInfo.itemDetails.amount.currency | String | C | 3 | |
additionalInfo.itemDetails.qty | Int | C | 10 | Number of product units. |
additionalInfo.itemDetails.description | String | O | 255 | Description of product |
additionalInfo.createdTime | String | M | Created time | |
additionalInfo.validityPeriod | String | M | Valid time for payment | |
additionalInfo.paidTime | String | C | The value will be returned for successful payment. | |
additionalInfo.acquirerIssuerRelation | String | O | 8 | |
additionalInfo.callbackUrl | String | M | URL Notify payment |
Example Request
sh
curl --location '.../v1.0/qr/qr-mpm-notify' \
--header 'Content-Type: application/json' \
--header 'X-TIMESTAMP: 2020-12-23T08:46:11+07:00' \
--header 'X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5' \
--header 'X-PARTNER-ID: MC2025024500' \
--header 'X-EXTERNAL-ID: 41807553358950093184162180797837' \
--header 'CHANNEL-ID: QR004' \
--data '{
"originalReferenceNo": "0196b437-86ab-7529-93ac-b6c1d92fefbf",
"originalPartnerReferenceNo": "69003543869326",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "100000.00",
"currency": "IDR"
},
"additionalInfo": {
"issuer": "BCA",
"retrievalReferenceNo": "697350261088",
"paymentChannel": "IFORTEPAY",
"paymentDetail": {
"totalAmount": {
"value": "100000.00",
"currency": "IDR"
}
},
"createdTime": "2025-05-09T15:44:20+07:00",
"validityPeriod": "2025-05-09T15:59:20+07:00",
"paidTime": "2025-05-09T15:44:37+07:00",
"acquirerIssuerRelation": "off_us",
"callbackUrl": "https://testcallback.free.beeceptor.com",
"invoiceNo": "01746780277897819043",
"merchantId": "MC2025024500",
"merchantAccountNumber": "9360088802024078316",
"customerName": "Dummy Name",
"customerNumber": "9360002319993788396",
"issuerCode": "93600014",
"itemDetails": [
{
"itemId": "12345",
"name": "pulsa",
"amount": {
"value": "20000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian pulsa"
},
{
"itemId": "jbl789",
"name": "kuota internet",
"amount": {
"value": "80000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian kuota internet"
}
],
"customerDetail": {
"email": "test@gmail.com",
"fullName": "Customer name",
"phone": "08888888888"
}
}
}'
go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := ".../v1.0/qr/qr-mpm-notify"
method := "POST"
payload := strings.NewReader(`{
"originalReferenceNo": "0196b437-86ab-7529-93ac-b6c1d92fefbf",
"originalPartnerReferenceNo": "69003543869326",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "100000.00",
"currency": "IDR"
},
"additionalInfo": {
"issuer": "BCA",
"retrievalReferenceNo": "697350261088",
"paymentChannel": "IFORTEPAY",
"paymentDetail": {
"totalAmount": {
"value": "100000.00",
"currency": "IDR"
}
},
"createdTime": "2025-05-09T15:44:20+07:00",
"validityPeriod": "2025-05-09T15:59:20+07:00",
"paidTime": "2025-05-09T15:44:37+07:00",
"acquirerIssuerRelation": "off_us",
"callbackUrl": "https://testcallback.free.beeceptor.com",
"invoiceNo": "01746780277897819043",
"merchantId": "MC2025024500",
"merchantAccountNumber": "9360088802024078316",
"customerName": "Dummy Name",
"customerNumber": "9360002319993788396",
"issuerCode": "93600014",
"itemDetails": [
{
"itemId": "12345",
"name": "pulsa",
"amount": {
"value": "20000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian pulsa"
},
{
"itemId": "6789",
"name": "kuota internet",
"amount": {
"value": "80000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian kuota internet"
}
],
"customerDetail": {
"email": "test@gmail.com",
"fullName": "Customer name",
"phone": "08888888888"
}
}
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("X-TIMESTAMP", "2020-12-23T08:46:11+07:00")
req.Header.Add("X-SIGNATURE", "85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5")
req.Header.Add("X-PARTNER-ID", "IFP2024067944")
req.Header.Add("X-EXTERNAL-ID", "41807553358950093184162180797837")
req.Header.Add("CHANNEL-ID", "QR004")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
js
const axios = require('axios');
let data = JSON.stringify({
"originalReferenceNo": "0196b437-86ab-7529-93ac-b6c1d92fefbf",
"originalPartnerReferenceNo": "69003543869326",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "100000.00",
"currency": "IDR"
},
"additionalInfo": {
"issuer": "BCA",
"retrievalReferenceNo": "697350261088",
"paymentChannel": "IFORTEPAY",
"paymentDetail": {
"totalAmount": {
"value": "100000.00",
"currency": "IDR"
}
},
"createdTime": "2025-05-09T15:44:20+07:00",
"validityPeriod": "2025-05-09T15:59:20+07:00",
"paidTime": "2025-05-09T15:44:37+07:00",
"acquirerIssuerRelation": "off_us",
"callbackUrl": "https://testcallback.free.beeceptor.com",
"invoiceNo": "01746780277897819043",
"merchantId": "MC2025024500",
"merchantAccountNumber": "9360088802024078316",
"customerName": "Dummy Name",
"customerNumber": "9360002319993788396",
"issuerCode": "93600014",
"itemDetails": [
{
"itemId": "12345",
"name": "pulsa",
"amount": {
"value": "20000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian pulsa"
},
{
"itemId": "6789",
"name": "kuota internet",
"amount": {
"value": "80000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian kuota internet"
}
],
"customerDetail": {
"email": "test@gmail.com",
"fullName": "Customer name",
"phone": "08888888888"
}
}
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '.../v1.0/qr/qr-mpm-notify',
headers: {
'Content-Type': 'application/json',
'X-TIMESTAMP': '2020-12-23T08:46:11+07:00',
'X-SIGNATURE': '85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5',
'X-PARTNER-ID': 'IFP2024067944',
'X-EXTERNAL-ID': '41807553358950093184162180797837',
'CHANNEL-ID': 'QR004'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
rust
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::builder()
.build()?;
let mut headers = reqwest::header::HeaderMap::new();
headers.insert("Content-Type", "application/json".parse()?);
headers.insert("X-TIMESTAMP", "2020-12-23T08:46:11+07:00".parse()?);
headers.insert("X-SIGNATURE", "85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5".parse()?);
headers.insert("X-PARTNER-ID", "IFP2024067944".parse()?);
headers.insert("X-EXTERNAL-ID", "41807553358950093184162180797837".parse()?);
headers.insert("CHANNEL-ID", "QR004".parse()?);
let data = r#"{
"originalReferenceNo": "0196b437-86ab-7529-93ac-b6c1d92fefbf",
"originalPartnerReferenceNo": "69003543869326",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "100000.00",
"currency": "IDR"
},
"additionalInfo": {
"issuer": "BCA",
"retrievalReferenceNo": "697350261088",
"paymentChannel": "IFORTEPAY",
"paymentDetail": {
"totalAmount": {
"value": "100000.00",
"currency": "IDR"
}
},
"createdTime": "2025-05-09T15:44:20+07:00",
"validityPeriod": "2025-05-09T15:59:20+07:00",
"paidTime": "2025-05-09T15:44:37+07:00",
"acquirerIssuerRelation": "off_us",
"callbackUrl": "https://testcallback.free.beeceptor.com",
"invoiceNo": "01746780277897819043",
"merchantId": "MC2025024500",
"merchantAccountNumber": "9360088802024078316",
"customerName": "Dummy Name",
"customerNumber": "9360002319993788396",
"issuerCode": "93600014",
"itemDetails": [
{
"itemId": "12345",
"name": "pulsa",
"amount": {
"value": "20000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian pulsa"
},
{
"itemId": "6789",
"name": "kuota internet",
"amount": {
"value": "80000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian kuota internet"
}
],
"customerDetail": {
"email": "test@gmail.com",
"fullName": "Customer name",
"phone": "08888888888"
}
}
}"#;
let json: serde_json::Value = serde_json::from_str(&data)?;
let request = client.request(reqwest::Method::POST, ".../v1.0/qr/qr-mpm-notify")
.headers(headers)
.json(&json);
let response = request.send().await?;
let body = response.text().await?;
println!("{}", body);
Ok(())
}
php
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '.../v1.0/qr/qr-mpm-notify',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"originalReferenceNo": "0196b437-86ab-7529-93ac-b6c1d92fefbf",
"originalPartnerReferenceNo": "69003543869326",
"latestTransactionStatus": "00",
"transactionStatusDesc": "Success",
"amount": {
"value": "100000.00",
"currency": "IDR"
},
"additionalInfo": {
"issuer": "BCA",
"retrievalReferenceNo": "697350261088",
"paymentChannel": "IFORTEPAY",
"paymentDetail": {
"totalAmount": {
"value": "100000.00",
"currency": "IDR"
}
},
"createdTime": "2025-05-09T15:44:20+07:00",
"validityPeriod": "2025-05-09T15:59:20+07:00",
"paidTime": "2025-05-09T15:44:37+07:00",
"acquirerIssuerRelation": "off_us",
"callbackUrl": "https://testcallback.free.beeceptor.com",
"invoiceNo": "01746780277897819043",
"merchantId": "MC2025024500",
"merchantAccountNumber": "9360088802024078316",
"customerName": "Dummy Name",
"customerNumber": "9360002319993788396",
"issuerCode": "93600014",
"itemDetails": [
{
"itemId": "12345",
"name": "pulsa",
"amount": {
"value": "20000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian pulsa"
},
{
"itemId": "jbl789",
"name": "kuota internet",
"amount": {
"value": "80000.00",
"currency": "IDR"
},
"qty": 1,
"description": "pembelian kuota internet"
}
],
"customerDetail": {
"email": "test@gmail.com",
"fullName": "Customer name",
"phone": "08888888888"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'X-TIMESTAMP: 2020-12-23T08:46:11+07:00',
'X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5',
'X-PARTNER-ID: IFP2024067944',
'X-EXTERNAL-ID: 41807553358950093184162180797837',
'CHANNEL-ID: QR004'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Response
Details
Parameter | Data Type | Mandatory | Length | Description |
---|---|---|---|---|
responseCode | String | M | 7 | Response code |
responseMessage | String | M | 150 | Response description |
Example Response
{
"responseCode":"2005200",
"responseMessage":"Request has been processed successfully"
}