# QRIS Payment H2H

<figure><img src="https://627965603-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FImVr2HJay0snj5ukhBJK%2Fuploads%2FtXaMv75O32z1soKvXqnc%2Funknown.png?alt=media&#x26;token=0cbcf8c7-9bb5-424f-8e89-43ce859e9c5d" alt=""><figcaption></figcaption></figure>

## **Method and URL**

`POST` \[BASE\_URL]/wallet-backend/snap/v1.0/qr/qr-mpm-payment

Purpose:  Create QRIS payment link for users to scan QRIS and make payment using balance. Use this if you want to use your own UI.<br>

Authorization:

* B2B Token&#x20;
* B2B2C Token

## **Request**

**Request Header**

<table><thead><tr><th>Header</th><th width="140.62109375">Requirement</th><th>Description</th></tr></thead><tbody><tr><td>Content-Type</td><td>Mandatory</td><td>application/json</td></tr><tr><td>Authorization</td><td>Mandatory</td><td>Bearer {B2B_access_token}</td></tr><tr><td>Authorization-Customer</td><td>Mandatory</td><td>Bearer {B2B2C_access_token}</td></tr><tr><td>X-SIGNATURE</td><td>Mandatory</td><td><p>HMAC signature generated as per SNAP specification</p><p><br></p><p>HMAC_SHA512 (clientSecret, stringToSign) </p><p>stringToSign = HTTPMethod +”:“+ EndpointUrl +":"+ AccessToken +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody))))+ ":“ + TimeStamp</p></td></tr><tr><td>X-TIMESTAMP</td><td>Mandatory</td><td>Request timestamp in yyyy-MM-dd'T'HH:mm:ssXXX (ISO 8601 with offset)</td></tr><tr><td>X-PARTNER-ID</td><td>Mandatory</td><td>Partner ID assigned by Pivot</td></tr><tr><td>X-EXTERNAL-ID</td><td>Mandatory</td><td>Unique ID per request for idempotency / tracing</td></tr><tr><td>CHANNEL-ID</td><td>Mandatory</td><td>Channel identifier (e.g., 12345)</td></tr></tbody></table>

**Request Body**

```json
{
  "partnerReferenceNo": "ref-20251125002",
  "amount": {
    "value": "36000",
    "currency": "IDR"
  },
  "feeAmount": {
    "value": "",
    "currency": ""
  },
  "additionalInfo": {
    "qrisId": "028e52ff-4427-42be-9b91-f0b9d0ad9a23",
    "mode": "JIT",
    "redirectUrl": "https://www.google.com",
    "failedRedirectUrl": "https://www.google.com"
  }
}
```

**Request Parameter Detail**&#x20;

<table><thead><tr><th>Parameter</th><th width="105.2109375">Data Type</th><th width="112.7490234375">Character Limit</th><th width="130.052734375">Requirement</th><th>Description</th></tr></thead><tbody><tr><td>partnerReferenceNo</td><td>String</td><td>64</td><td>Mandatory</td><td>Unique reference number generated by the merchant to identify and track the transaction.</td></tr><tr><td>amount</td><td>Object</td><td><br></td><td>Mandatory</td><td><br></td></tr><tr><td>value</td><td>String</td><td>16,2</td><td>Mandatory</td><td><p>Net amount of the transaction.</p><p>If it's IDR then value includes 2 decimal digits.</p><p>e.g. IDR 10.000,- will be placed with 10000.00</p></td></tr><tr><td>currency</td><td>String</td><td>3</td><td>Mandatory</td><td>Currency (ISO4217)</td></tr><tr><td>feeAmount</td><td>Object</td><td><br></td><td>Optional</td><td><br></td></tr><tr><td>value</td><td>String</td><td>16,2</td><td>Mandatory</td><td><p>Net amount of the transaction.</p><p>If it's IDR then value includes 2 decimal digits.</p><p>e.g. IDR 10.000,- will be placed with 10000.00</p></td></tr><tr><td>currency</td><td>String</td><td>3</td><td>Mandatory</td><td>Currency (ISO4217)</td></tr><tr><td>additionalInfo</td><td>Object</td><td><br></td><td>Optional</td><td>Additional information for custom use that are not provided by SNAP</td></tr><tr><td>qrisId</td><td>String</td><td>32</td><td>Mandatory</td><td>QRIS Id from Decode endpoint additionalInfo.qrisId</td></tr><tr><td>redirectionUrl</td><td>String (URL)</td><td>255</td><td>Mandatory</td><td>URL to redirect the user after the transaction is successfully processed.</td></tr><tr><td>failedRedirectionUrl</td><td>String (URL)</td><td>255</td><td>Optional</td><td>URL to redirect the user if the transaction fails or is canceled.</td></tr><tr><td>mode</td><td>String</td><td>10</td><td>Optional</td><td>Transaction mode. "JIT" (Just-In-Time) means the wallet will be funded only at the moment of payment.</td></tr></tbody></table>

## **Response**

**Response Body**

```json
{
  "additionalInfo": {
    "paymentUrl": "http://localhost:3004/whitelabel/qris-payment?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ3YWxsZXQtYmFja2VuZCIsInN1YiI6Ijk4NzI4MDgxLWZjZTgtNGNkYi04MmJmLTYxYWE2MjU5YzQxYyIsImV4cCI6MTc2NDA0NjExMSwiaWRlbnRpZmllclZhbHVlIjoiOTg3MjgwODEtZmNlOC00Y2RiLTgyYmYtNjFhYTYyNTljNDFjIiwibWVyY2hhbnRJZCI6IjVmZmQ0NjQzLWQxMjktNDMzZi04NWNiLWNkNWViYjNmMTdhNiIsInNlc3Npb25JZCI6IjAxOWFiOTQ5LWM2M2MtNzM1Zi1iMGU5LTc2OTIyNmZjNDkwOCJ9.cNzyZafajq_A2GY0ALEJ9mFXlCo10nIorg7hPxr9uCo",
    "urlExpiry": "2025-11-25T11:48:31.198284+07:00"
  },
  "amount": {
    "currency": "IDR",
    "value": "36000.00"
  },
  "feeAmount": {
    "currency": "IDR",
    "value": "0.00"
  },
  "partnerReferenceNo": "ref-20251125002",
  "referenceNo": "019ab949-c63c-735f-b0e9-769226fc4908",
  "responseCode": "2005000",
  "responseMessage": "Successful"
}
```

**Response Parameter Detail**

<table><thead><tr><th>Parameter</th><th width="108.775390625">Data Type</th><th width="122.4326171875">Character Limit</th><th width="125.2763671875">Requirement</th><th>Description</th></tr></thead><tbody><tr><td>responseCode</td><td>String</td><td>7</td><td>Mandatory</td><td>Response code. 2005500 indicates success.</td></tr><tr><td>responseMessage</td><td>String</td><td>100</td><td>Mandatory</td><td>Description of the result, e.g., Successful.</td></tr><tr><td>amount</td><td>Object</td><td><br></td><td>Mandatory</td><td><br></td></tr><tr><td>value</td><td>String</td><td>16,2</td><td>Mandatory</td><td><p>Net amount of the transaction.</p><p>If it's IDR then value includes 2 decimal digits.</p><p>e.g. IDR 10.000,- will be placed with 10000.00</p></td></tr><tr><td>currency</td><td>String</td><td>3</td><td>Mandatory</td><td>Currency (ISO4217)</td></tr><tr><td>feeAmount</td><td>Object</td><td><br></td><td>Optional</td><td><br></td></tr><tr><td>value</td><td>String</td><td>16,2</td><td>Mandatory</td><td><p>Net amount of the transaction.</p><p>If it's IDR then value includes 2 decimal digits.</p><p>e.g. IDR 10.000,- will be placed with 10000.00</p></td></tr><tr><td>currency</td><td>String</td><td>3</td><td>Mandatory</td><td>Currency (ISO4217)</td></tr><tr><td>partnerReferenceNo</td><td>String</td><td>64</td><td>Mandatory</td><td>Transaction identifier on service provider system. Must be filled upon successful transaction</td></tr><tr><td>additionalInfo</td><td>Object</td><td><br></td><td>Optional</td><td>Additional information for custom use that are not provided by SNAP</td></tr><tr><td>paymentUrl</td><td>String</td><td>512</td><td>Mandatory</td><td>Link to access webview to do QRIS payment</td></tr><tr><td>urlExpiry</td><td>String (ISO 8601)</td><td>25</td><td>Mandatory</td><td>Expiration date and time of the payment link.</td></tr></tbody></table>

\ <br>
