Skip to content

Payment Notification SNAP

Information

This API is requested from IFP to the Merchant during payment transactions.

Path/v1.0/qr/qr-mpm-notify
HTTP MethodPOST
Service Code52

Request

Details
ParameterData TypeMandatoryLengthDescription
originalReferenceNoStringM64Transaction identifier on service provider system
originalPartnerReferenceNoStringM64Transaction identifier on service consumer system
latestTransactionStatusStringM2Transaction Status Code. Only send payment notify to merchant for status 00 - Success
transactionStatusDescStringM50Description status transaction
amountObjectM
amount.valueStringM16,2Amount 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.currencyStringM3Currency (Format: ISO4217)
additionalInfoObjectMAdditional information
additionalInfo.merchantIdStringMIdentifier merchant
additionalInfo.merchantAccountNumberStringOMerchant PAN
additionalInfo.paymentChannelStringM
additionalInfo.issuerStringM
additionalInfo.retrievalReferenceNoStringM64Reference number generated by Issuer. The value will be returned for successful payment.
additionalInfo.invoiceNoStringMReference number if payment is successful.
additionalInfo.customerNameStringOCustomer name from Issuer
additionalInfo.customerNumberStringOCustomer PAN from Issuer
additionalInfo.paymentDetailObjectM
additionalInfo.paymentDetail.totalAmountObjectM
additionalInfo.paymentDetail.totalAmount.valueStringM16,2Total 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.currencyStringM3Currency
additionalInfo.paymentDetail.tipAmountObjectOFees charged by merchants to customers
additionalInfo.paymentDetail.tipAmount.valueStringO16,2Tip Amount
additionalInfo.paymentDetail.tipAmount.currencyStringO3Currency (IDR)
additionalInfo.itemDetailsArray of ObejctsOExplain the items purchased
additionalInfo.itemDetails.itemIdString(25)C25ID of product.
additionalInfo.itemDetails.nameString(150)C100Name of product.
additionalInfo.itemDetails.amountObjectC13
additionalInfo.itemDetails.amount.valueObjectCPrice per unit.
additionalInfo.itemDetails.amount.currencyStringC3
additionalInfo.itemDetails.qtyIntC10Number of product units.
additionalInfo.itemDetails.descriptionStringO255Description of product
additionalInfo.createdTimeStringMCreated time
additionalInfo.validityPeriodStringMValid time for payment
additionalInfo.paidTimeStringCThe value will be returned for successful payment.
additionalInfo.acquirerIssuerRelationStringO8
additionalInfo.callbackUrlStringMURL 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
ParameterData TypeMandatoryLengthDescription
responseCodeStringM7Response code
responseMessageStringM150Response description

Example Response

{
   "responseCode":"2005200",
   "responseMessage":"Request has been processed successfully"
}

iFortepay API Documentation