QRIS Payment Link - Apply OTT

Method and URL
POST [BASE_URL]/wallet-backend/snap/v1.0/qr/apply-ott
Purpose: Create QRIS payment link for users to scan QRIS and make payment using balance. Use this if you want to use Pivot’s webview.
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
{
"userResources":[
"OTT"
],
"additionalInfo":{
"partnerReferenceNo":"ref-20251125004",
"mode":"JIT",
"redirectUrl":"https://www.google.com",
"failedRedirectUrl":"https://www.google.com"
}
}Request Parameter Detail
userResources
Array of String
512
Mandatory
Mandatory value OTT
additionalInfo
Object
Optional
Additional information for custom use that are not provided by SNAP
partnerReferenceNo
String
64
Mandatory
Unique reference number generated by the merchant to identify and track the transaction.
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.eyJpc3MiOiJ3YWxsZXQtYmFja2VuZCIsInN1YiI6Ijk4NzI4MDgxLWZjZTgtNGNkYi04MmJmLTYxYWE2MjU5YzQxYyIsImV4cCI6MTc2NDA2MzIyNiwiaWRlbnRpZmllclZhbHVlIjoiOTg3MjgwODEtZmNlOC00Y2RiLTgyYmYtNjFhYTYyNTljNDFjIiwibWVyY2hhbnRJZCI6IjVmZmQ0NjQzLWQxMjktNDMzZi04NWNiLWNkNWViYjNmMTdhNiIsInNlc3Npb25JZCI6IjAxOWFiYTRlLWVkNzktNzc5NS1hMTZmLTgwZTNhZTBlNTBlMiJ9.R_0RArJTR0fF4WQB5LSVSo7NOaO1Z41bizWZgDze6Ak",
"urlExpiry": "2025-11-25T16:33:46.138844+07:00"
},
"responseCode": "2004900",
"responseMessage": "Successful",
"userResources": [
{
"resourceType": "OTT",
"value": "019aba4e-ed79-7795-a16f-80e3ae0e50e2"
}
]
}Response Parameter Detail
responseCode
String
7
Mandatory
Response code. 2005500 indicates success.
responseMessage
String
100
Mandatory
Description of the result, e.g., Successful.
serviceCode
String
5
Mandatory
Service code (54).
userResources
Object
Optional
resourceType
String
10
Mandatory
Default value, e.g., OTT
value
String
64
Mandatory
Service provider transaction id value
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