API Payment Notification

Overview

Service to send a notification from Manjo to the Merchant system regarding the payment status of a transaction.

Direction: Manjo to Merchant
Version: 1.0
Service Code: 52
HTTP Method: POST
Path: ../v1.0/qr/qr-mpm-notify


Request Structure

HTTP Headers

Field Attribute Type Description Example
Content-Type M String Media type of resource application/json
Authorization C String Access token with Bearer format Bearer eyJhbGciOi...
X-TIMESTAMP M String Client's local timestamp (yyyy-MM-ddTHH:mm:ssTZD) 2020-01-15T17:01:11+07:00
X-SIGNATURE M String HMAC_SHA512 signature using clientSecret 85be817c55b2c13...
ORIGIN O String Merchant domain www.hostname.com
X-IP-ADDRESS M String IP Address of the sender 172.24.281.24
X-PARTNER-ID M String(36) Unique ID for a partner 821508239190406...
X-EXTERNAL-ID M String(36) Unique reference number per day 418075935899...
CHANNEL-ID M String(5) Device identification (Use "05") 95221

X-SIGNATURE Formula:

stringToSign = HTTPMethod + ":" + EndpointUrl + ":" + AccessToken + ":" + Lowercase(HexEncode(SHA256(minify(RequestBody)))) + ":" + TimeStamp
signature = HMAC_SHA512(clientSecret, stringToSign)

Request Body

{
	"referenceNo": "A0000001702",
	"originalPartnerReferenceNo": "DIRECT-API-NMS-6giumc6rde",
	"transactionStatus": "00",
	"transactionStatusDesc": "Success",
	"customerNumber": "08123456789",
	"accountType": "10",
	"destinationAccountNumber": "1234567890",
	"destinationAccountName": "Merchant Name",
	"amount": {
		"value": "10000.00",
		"currency": "IDR"
	},
	"externalStoreId": "STORE-001",
	"additionalInfo": {
		"trxAmount": "10000.00",
		"tips": "0.00"
	},
	"custName": "John Doe",
	"acqName": "Bank ABC",
	"issuerName": "Bank XYZ",
	"rrn": "000000123456",
	"TrxTime": "20250101123059"
}

Parameter Details

Parameter Attribute Type Description
referenceNo M String(64) Transaction identifier on service provider system
originalPartnerReferenceNo M String(64) Transaction identifier on merchant system (partner reference)
transactionStatus M String(2) Status of transaction code.
00 = Success
03 = Paid
04 = Pending
05 = Refunded
06 = Cancelled
01 = Failed
02 = Not Found
transactionStatusDesc O String(100) Description status transaction
customerNumber O String(64) Customer Account Number
accountType O String(2) Type of customer account (saving, current/giro, credit, wallet, unspecified)
destinationAccountNumber O String(25) Destination account number
destinationAccountName O String(25) Destination account name
amount O Object Amount Object
amount.value M String(16,2) Net amount of transaction (2 decimal digits)
amount.currency M String(3) Currency (ISO4217)
externalStoreId O String(25) External Store ID
additionalInfo O Object Additional Information Object
additionalInfo.trxAmount M String(16,2) Net amount of the transaction (2 decimal digits)
additionalInfo.tips M String(16,2) Tips amount (2 decimal digits)
custName M String(36) Customer/Issuer Name
acqName M String(36) Name Acquirer (Manjo)
issuerName M String(25) Issuer Name
rrn M String(25) Retrieval Reference Number
TrxTime M String(16) Transaction date time (yyyyMMddHHmmss)

Error Codes

HTTP Code Service Code Case Code Message Category Description
200 52 00 Success Successful Success
400 52 01 Invalid Field Format {field name} Message Invalid format
400 52 02 Invalid Mandatory Field {field name} Message Missing or invalid format of mandatory field headers or body
401 52 00 Unauthorized {reason} System General unauthorized error. Possible reasons: invalid signature, invalid client key
401 52 01 Invalid token System Token found in request is invalid (Access Token Not Exist, Access Token Expiry)
409 52 00 Conflict System Cannot use same X-EXTERNAL-ID in same day

Implementation Examples

Example Request (cURL)

curl -X POST \
  'https://api.manjo.com/v1.0/qr/qr-mpm-notify' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <ACCESS_TOKEN>' \
  -H 'X-TIMESTAMP: 2025-01-15T17:01:11+07:00' \
  -H 'X-SIGNATURE: <CALCULATED_SIGNATURE>' \
  -H 'X-PARTNER-ID: 821508239190...' \
  -H 'X-EXTERNAL-ID: 418075935899...' \
  -H 'CHANNEL-ID: 95221' \
  -d '{
    "referenceNo": "A0000001702",
    "originalPartnerReferenceNo": "ORD-12345",
    "transactionStatus": "00",
    "amount": {
        "value": "50000.00",
        "currency": "IDR"
    },
    "custName": "Budi Santoso",
    "acqName": "Manjo",
    "issuerName": "Bank BCA",
    "rrn": "123456789012",
    "TrxTime": "20250115170111",
    "additionalInfo": {
        "trxAmount": "50000.00",
        "tips": "0.00"
    }
}'

Important Notes

  1. Response Code Structure: httpcode(3) + servicecode(2) + casecode(2).
  2. Date Format: Timestamps in headers use ISO 8601 (yyyy-MM-ddTHH:mm:ssTZD), while TrxTime in body uses yyyyMMddHHmmss.
  3. Currency: Amounts for IDR must include 2 decimal places (e.g., 10000.00).