QRIS Payment H2H

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.
Authorization:
B2B Token
B2B2C Token
Request
Request Header
Content-Type
Mandatory
application/json
Authorization
Mandatory
Bearer {B2B_access_token}
Authorization-Customer
Mandatory
Bearer {B2B2C_access_token}
X-SIGNATURE
Mandatory
HMAC signature generated as per SNAP specification
HMAC_SHA512 (clientSecret, stringToSign)
stringToSign = HTTPMethod +”:“+ EndpointUrl +":"+ AccessToken +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody))))+ ":“ + TimeStamp
X-TIMESTAMP
Mandatory
Request timestamp in yyyy-MM-dd'T'HH:mm:ssXXX (ISO 8601 with offset)
X-PARTNER-ID
Mandatory
Partner ID assigned by Pivot
X-EXTERNAL-ID
Mandatory
Unique ID per request for idempotency / tracing
CHANNEL-ID
Mandatory
Channel identifier (e.g., 12345)
Request Body
{
"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
partnerReferenceNo
String
64
Mandatory
Unique reference number generated by the merchant to identify and track the transaction.
amount
Object
Mandatory
value
String
16,2
Mandatory
Net amount of the transaction.
If it's IDR then value includes 2 decimal digits.
e.g. IDR 10.000,- will be placed with 10000.00
currency
String
3
Mandatory
Currency (ISO4217)
feeAmount
Object
Optional
value
String
16,2
Mandatory
Net amount of the transaction.
If it's IDR then value includes 2 decimal digits.
e.g. IDR 10.000,- will be placed with 10000.00
currency
String
3
Mandatory
Currency (ISO4217)
additionalInfo
Object
Optional
Additional information for custom use that are not provided by SNAP
qrisId
String
32
Mandatory
QRIS Id from Decode endpoint additionalInfo.qrisId
redirectionUrl
String (URL)
255
Mandatory
URL to redirect the user after the transaction is successfully processed.
failedRedirectionUrl
String (URL)
255
Optional
URL to redirect the user if the transaction fails or is canceled.
mode
String
10
Optional
Transaction mode. "JIT" (Just-In-Time) means the wallet will be funded only at the moment of payment.
Response
Response Body
{
"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
responseCode
String
7
Mandatory
Response code. 2005500 indicates success.
responseMessage
String
100
Mandatory
Description of the result, e.g., Successful.
amount
Object
Mandatory
value
String
16,2
Mandatory
Net amount of the transaction.
If it's IDR then value includes 2 decimal digits.
e.g. IDR 10.000,- will be placed with 10000.00
currency
String
3
Mandatory
Currency (ISO4217)
feeAmount
Object
Optional
value
String
16,2
Mandatory
Net amount of the transaction.
If it's IDR then value includes 2 decimal digits.
e.g. IDR 10.000,- will be placed with 10000.00
currency
String
3
Mandatory
Currency (ISO4217)
partnerReferenceNo
String
64
Mandatory
Transaction identifier on service provider system. Must be filled upon successful transaction
additionalInfo
Object
Optional
Additional information for custom use that are not provided by SNAP
paymentUrl
String
512
Mandatory
Link to access webview to do QRIS payment
urlExpiry
String (ISO 8601)
25
Mandatory
Expiration date and time of the payment link.
Last updated