> For the complete documentation index, see [llms.txt](https://docs.finpay.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.finpay.id/api-reference/finpay-money/linkage/qris-mpm/payment-notification.md).

# Payment Notification

This API is used by PJP AIS to send the final status of a QRIS MPM transaction (success or failure) to the party that initiated the transaction, ensuring accurate and timely completion updates.

### Technical Specification <a href="#technical-specification" id="technical-specification"></a>

```
Service Code: 52
```

| Environment | Method | URL                                                   |
| ----------- | ------ | ----------------------------------------------------- |
| Development | POST   | <https://snapstag.finnet.co.id/v1.0/qr/qr-mpm-notify> |
| Production  | POST   | <https://snap.finnet.co.id/v1.0/qr/qr-mpm-notify>     |

### Required Headers <a href="#required-headers" id="required-headers"></a>

Use the standard Linkage authentication headers, signature, and device context on every request.

<table><thead><tr><th width="69.83335876464844">No</th><th width="209.83331298828125">Name</th><th width="110.16668701171875">Type</th><th width="109.83331298828125">Mandatory</th><th width="279.9999542236328">Description</th></tr></thead><tbody><tr><td>1</td><td>Content-Type</td><td>String</td><td>M</td><td>Fill with <code>application/json</code></td></tr><tr><td>2</td><td>Authorization</td><td>String</td><td>M</td><td>Access token B2B</td></tr><tr><td>3</td><td>Authorization-Customer</td><td>String</td><td>M</td><td>Access token B2B2C</td></tr><tr><td>4</td><td>X-TIMESTAMP</td><td>String</td><td>M</td><td>Timestamp in RFC3339 format: <code>yyyy-MM-ddTHH:mm:ssTZD</code></td></tr><tr><td>5</td><td>X-PARTNER-ID</td><td>String</td><td>M</td><td>Client ID provided by Finnet</td></tr><tr><td>6</td><td>X-SIGNATURE</td><td>String</td><td>M</td><td>BI SNAP symmetric signature. See <a href="/spaces/0e6BKtpYpb5u7FWksQC3/pages/BTR47insrKZNYAJfX8Mf">Signature</a> for details.</td></tr><tr><td>7</td><td>X-EXTERNAL-ID</td><td>String</td><td>M</td><td>Random string that must be unique within a day for each partner with max <code>36</code> characters</td></tr><tr><td>8</td><td>CHANNEL-ID</td><td>String</td><td>M</td><td>Device identification on which the API services is currently being accessed by the End User (Customer)</td></tr><tr><td>9</td><td>ORIGIN</td><td>String</td><td>M</td><td>The domain of the calling application</td></tr><tr><td>10</td><td>X-IP-ADDRESS</td><td>String</td><td>M</td><td>The IP address of the device</td></tr><tr><td>11</td><td>X-DEVICE-ID</td><td>String</td><td>M</td><td>The unique identifier of the device</td></tr><tr><td>12</td><td>X-LATITUDE</td><td>String</td><td>M</td><td>The latitude coordinate from the device’s GPS</td></tr><tr><td>13</td><td>X-LONGITUDE</td><td>String</td><td>M</td><td>The longitude coordinate from the device’s GPS</td></tr></tbody></table>

### Body Request <a href="#body-request" id="body-request"></a>

<table><thead><tr><th width="69.66665649414062">No</th><th width="149.66671752929688">Name</th><th width="109.66665649414062">Type</th><th width="109.66668701171875">Mandatory</th><th width="109.66668701171875">Min Length</th><th width="109.6666259765625">Max Length</th><th width="169.6666259765625">Description</th></tr></thead><tbody><tr><td>1</td><td>originalReferenceNo</td><td>String</td><td>M</td><td>1</td><td>64</td><td>Original transaction identifier on service provider system</td></tr><tr><td>2</td><td>originalPartnerReferenceNo</td><td>String</td><td>M</td><td>1</td><td>64</td><td>Transaction identifier number from partner</td></tr><tr><td>3</td><td>latestTransactionStatus</td><td>String</td><td>M</td><td>1</td><td>64</td><td>Latest transaction status labelled with constants</td></tr><tr><td>4</td><td>transactionStatusDesc</td><td>String</td><td>O</td><td>1</td><td>50</td><td>Transaction status description</td></tr><tr><td>5</td><td>amount</td><td>Object</td><td>M</td><td>1</td><td>2</td><td>Transaction amount</td></tr><tr><td>6</td><td>amount.value</td><td>String</td><td>M</td><td>1</td><td>16,2</td><td>Filled with transaction amount value.<br>2 decimal digits format</td></tr><tr><td>7</td><td>amount.currency</td><td>String</td><td>M</td><td>3</td><td>3</td><td>Filled with <code>IDR</code></td></tr><tr><td>8</td><td>feeAmount</td><td>Object</td><td>M</td><td>1</td><td>2</td><td>Transaction fee amount</td></tr><tr><td>9</td><td>feeAmount.value</td><td>String</td><td>M</td><td>1</td><td>16,2</td><td>Filled with transaction fee amount value.<br>2 decimal digits format</td></tr><tr><td>10</td><td>feeAmount.currency</td><td>String</td><td>M</td><td>3</td><td>3</td><td>Filled with <code>IDR</code></td></tr><tr><td>11</td><td>additionalInfo</td><td>Object</td><td>O</td><td>1</td><td>6</td><td>Additional information for custom use that are not provided by SNAP</td></tr><tr><td>12</td><td>additionalInfo.merchantName</td><td>Numeric</td><td>M</td><td>1</td><td>19</td><td>Merchant Name, Mandatory if using H2H mode for transaction</td></tr><tr><td>13</td><td>additionalInfo.acquirerName</td><td>String</td><td>M</td><td>1</td><td>50</td><td>Acquirer Name, Mandatory if using H2H mode for transaction</td></tr><tr><td>14</td><td>additionalInfo.merchantLocation</td><td>String</td><td>C</td><td>1</td><td>25</td><td>Merchant location. Mandatory if using H2H mode</td></tr><tr><td>15</td><td>additionalInfo.merchantPAN</td><td>Numeric</td><td>M</td><td>1</td><td>19</td><td>Merchant PAN, Mandatory if using H2H mode for transaction</td></tr><tr><td>16</td><td>additionalInfo.customerPAN</td><td>Numeric</td><td>M</td><td>1</td><td>19</td><td>Customer PAN, Mandatory if using H2H mode for transaction</td></tr><tr><td>17</td><td>additionalInfo.terminalId</td><td>String</td><td>O</td><td>1</td><td>16</td><td>Terminal identification</td></tr><tr><td>18</td><td>additionalInfo.transactionDate</td><td>String</td><td>M</td><td>1</td><td>25</td><td>Transaction date and time in ISO 8601 format.<br><code>YYYY-MM-DDThh:mm:ssZ</code></td></tr></tbody></table>

#### Sample Request <a href="#sample-request" id="sample-request"></a>

```http
POST .../v1.0/qr/qr-mpm- notify HTTP/1.2
Content-type: application/json
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a"
Authorization-Customer: Bearer fa8sjjEj813Y9JGoqwOeOPWbnt4CUpvIJbU1mMU4a11MNDZ7Sg5u9a"
X-TIMESTAMP: 2020-12-23T08:43:11+07:00
X-SIGNATURE: 85be817c55b2c135157c7e89f52499bf0c25ad6eeebe04a986e8c862561b19a5
ORIGIN: www.hostname.com
X-PARTNER-ID: 82150823919040624621823174737537
X-EXTERNAL-ID: 41807553358950093184162180797837
X-IP-ADDRESS: 172.24.281.24
X-DEVICE-ID: 09864ADCASA
X-LATITUDE: -6.108841
X-LONGITUDE: 106.7782137
CHANNEL-ID: 95221
 
{
  "originalReferenceNo": "2020102977770000000009",
  "originalPartnerReferenceNo": "2020102900000000000001",
  "latestTransactionStatus": "00",
  "transactionStatusDesc": "success",
  "amount": {
    "value": "12345678.00",
    "currency": "IDR"
  },
  "feeAmount": {
    "value": "12345678.00",
    "currency": "IDR"
  },
  "additionalInfo": {
    "merchantName": "RT06 BSI",
    "acquirerName": "Finpay Money",
    "merchantLocation": "BOGOR",
    "merchantPAN": "936007773230807002",
    "terminalID": "A01",
    "customerPAN": "9360077731016175562",
    "transactionDate": "2020-12-23T08:37:11+07:00"
  }
}
```

### Body Response <a href="#body-response" id="body-response"></a>

<table><thead><tr><th width="70.49996185302734">No</th><th width="149.66665649414062">Name</th><th width="109.66668701171875">Type</th><th width="109.6666259765625">Mandatory</th><th width="109.66668701171875">Min Length</th><th width="109.66668701171875">Max Length</th><th width="169.6666259765625">Description</th></tr></thead><tbody><tr><td>1</td><td>responseCode</td><td>String</td><td>M</td><td>1</td><td>7</td><td>Response code</td></tr><tr><td>2</td><td>responseMessage</td><td>String</td><td>M</td><td>1</td><td>150</td><td>Response description</td></tr></tbody></table>

#### Sample Response <a href="#sample-response" id="sample-response"></a>

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

### Response Code & Message <a href="#response-code-message" id="response-code-message"></a>

<table><thead><tr><th width="70.33334350585938">No</th><th width="149.99996948242188">HTTP Code</th><th width="150.00003051757812">Code</th><th>Message</th></tr></thead><tbody><tr><td>1</td><td>200</td><td>2005200</td><td>Successful</td></tr><tr><td>2</td><td>400</td><td>4005200</td><td>Bad request</td></tr><tr><td>3</td><td>400</td><td>4005201</td><td>Invalid field format <code>{field}</code></td></tr><tr><td>4</td><td>400</td><td>4005202</td><td>Invalid mandatory field <code>{field}</code></td></tr><tr><td>5</td><td>401</td><td>4015201</td><td>Invalid token (B2B)</td></tr><tr><td>6</td><td>401</td><td>4015200</td><td>Unauthorised. <code>[Reason]</code></td></tr><tr><td>7</td><td>401</td><td>4015202</td><td>Invalid Customer Token</td></tr><tr><td>8</td><td>401</td><td>4015203</td><td>Token Not Found (B2B)</td></tr><tr><td>9</td><td>401</td><td>4015204</td><td>Customer Token Not Found</td></tr><tr><td>10</td><td>403</td><td>4035201</td><td>Feature not allowed</td></tr><tr><td>11</td><td>403</td><td>4035204</td><td>Activity count limit exceeded</td></tr><tr><td>12</td><td>403</td><td>4035214</td><td>Insufficient Funds</td></tr><tr><td>13</td><td>404</td><td>4045208</td><td>Invalid merchant</td></tr><tr><td>14</td><td>500</td><td>5005200</td><td>General error</td></tr><tr><td>15</td><td>500</td><td>5005201</td><td>Internal Server Error</td></tr><tr><td>16</td><td>500</td><td>5005202</td><td>External Server Error</td></tr><tr><td>17</td><td>504</td><td>5045200</td><td>Timeout</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.finpay.id/api-reference/finpay-money/linkage/qris-mpm/payment-notification.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
