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

Header
Requirement
Description

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

Parameter
Data Type
Character Limit
Requirement
Description

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

Parameter
Data Type
Character Limit
Requirement
Description

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