Get Transaction Status API

Fetching transaction status for GoPay and GoPay Tokenization (non Pre-Auth) transaction

This section will describe how a merchant can fetch transaction status for GoPay and GoPay Tokenization (non-Pre Auth) transactions.

Path/{version}/debit/status
HTTP MethodPOST
Versionv1.0
SNAP Service Code55

Request Header

Field Name Field Type Mandatory Field Description
Content-type String M Media type of the resource, i.e. application/json
X-TIMESTAMP String M Client’s current local time in ISO-8601 format
X-SIGNATURE String M Created using symmetric signature HMAC_SHA512 algorithm
Authorization String M Represents access_token of a request; string starts with keyword “Bearer ” followed by access_token. Can get this token from Access Token B2B API response.
X-PARTNER-ID String M Unique identifier for caller
X-EXTERNAL-ID String M Alphanumeric string. Reference number that should be unique in the same day or 1 day idempotency key
CHANNEL-ID String M Channel ID Device identification on which the API services are currently being accessed by the end user. Given by BI
Content-type:application/json
X-TIMESTAMP:2020-01-01T00:00:00+07:00
X-SIGNATURE: da1fa417c72d6b91c257e01e54fac824
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CupvIJbU1Mmu4a11MNDZ7Sg5u9a
X-PARTNER-ID: BMRI
X-EXTERNAL-ID:12345678901234567890
CHANNEL-ID:12345

Request Body

Field Name Field Type Mandatory Field Description
originalReferenceNo String(64) C Transaction identifier on service provider system. For e.g: GopayOrderId

Note: either originalExternalId or OriginalReferenceNo need to be passed. If both fields have value, we will use originalReferenceNo as the main identifier.

originalExternalId String (36) C If merchant got a timeout when calling charge API (POST /v1.0/debit/payment-host-to-host), merchant can pass the value of X-EXTERNAL-ID in the charge API request header as originalExternalId.

Note: Either originalExternalId or OriginalReferenceNo need to be passed in refund request.

serviceCode String (2) M Transaction type indicator (service code of the original transaction request). For e.g: 54
{
    "originalExternalId": "merchant-order-id",
    "originalReferenceNo": "Gopay OrderId",
    "serviceCode": "54"
}

Response Header

Field Name Field Type Mandatory Field Description
Content-type String M Media type of the resource, i.e. application/json
X-TIMESTAMP String M Client’s current local time in ISO-8601 format
Content-type: application/json
X-TIMESTAMP: 2020-01-01T00:00:00+07:00

Response Body

Field Name Field Type Mandatory Field Description
responseCode String (7) M Error code to specify the error returned.
responseMessage String (150) M Debug message to provide more information.
originalPartnerReferenceNo String (64) O Original transaction identifier on service consumer system. (Merchant’s orderId)
originalReferenceNo String (64) M Transaction identifier on service provider system. For e.g: GopayOrderId
serviceCode String (2) M Transaction type indicator (service code of the original transaction request). \ \ For e.g: 54 , 58 which are serviceCode of Charge and Refund API
latestTransactionStatus String (2) M Possible Values:
  • 00 - Success
  • 03 - Pending
  • 04 - Refunded
  • 05 - Canceled
  • 06 - Failed
  • 07 - Not found
transAmount Object O Transaction Amount
transAmount.value String M Transaction amount value
transAmount.currency String M Currency, e.g: IDR
paidTime String C Update time of the individual transaction. The value will be returned for successful payment. Using ISO-8601 timestamp format
refundHistory Array of refund Object C
refundHistory.refundNo String M Transaction Identifier on Service Provider System
refundHistory.partnerReferenceNo String M ReferenceNumber from merchant for the refund.
refundHistory.refundAmount Object M
refundHistory.refundAmount.value String M Net amount of the refund.
refundHistory.refundAmount.currency String M Currency
refundHistory.refundStatus String M Refund status

Possible values:

  • 00 - Success
  • 06 - Failed
refundHistory.refundDate String M Refund trial date (ISO 8601)
additionalInfo Object O Additional Information if a merchant needs to use.
additionalInfo.fraudStatus String O Fraud status
additionalInfo.validUpTo String(25) O The time when the payment will be automatically expired. Using ISO 8601 format
additionalInfo.payOptionDetails Array of Object M Payment option detail
additionalInfo.payOptionDetails.payMethod String M Gopay
additionalInfo.payOptionDetails.payOptions String M Gopay payment option used
additionalInfo.metadata Object O Transaction metadata
{
   "responseCode":"2005500",
   "responseMessage":"Request has been processed successfully",
   "originalPartnerReferenceNo": "merchant-order-id",
   "originalReferenceNo":"2020102977770000000009",
   "serviceCode":"54",
   "latestTransactionStatus":"00",
   "transAmount":{
      "value":"112345678.00",
      "currency":"IDR"
   },
   "paidTime":"2023-05-15T14:56:11+07:00",
   "refundHistory":[
  	{
     	     	"refundNo":"96194816941239812",
     	     	"partnerReferenceNo":"239850918204981205970",
          		"refundAmount":{
          	   	     	"value":"12345678.00",
         	    	     	"currency":"IDR"
     	     	},
     	     	"refundStatus":"00",
     	     	"refundDate":"2020-12-23T07:44:16+07:00",
          		"reason":"Customer Complain"
  	}
   ],
   "additionalInfo":{ 
      "fraudStatus":"some-fraud-status"  ,
       "validUpTo":"2023-07-03T10:36:17+07:00",
      “payOptionDetails” : [{
          "payMethod":"Gopay",
            "payOption": "Coins"
        }], 
   “metadata” : {}
   }
}

List of Response code

Response Code HTTP Status Code Response Message
2005500 200 Success
4005502 400 Invalid Mandatory Field
4015500 401 Unauthorized.
4015501 401 Invalid Token (B2B)
5005501 500 Internal Server Error
5045500 504 Timeout

Fetching transaction status for GoPay QRIS transaction

This section will describe how a merchant can fetch transaction status for GoPay QRIS transactions.

Path/{version}/qr/qr-mpm-query
HTTP MethodPOST
Versionv1.0
SNAP Service Code51

Request Header

Field Name Field Type Mandatory Field Description
Content-type String M Media type of the resource, i.e. application/json
X-TIMESTAMP String M Client’s current local time in ISO-8601 format
X-SIGNATURE String M Created using symmetric signature HMAC_SHA512 algorithm
Authorization String M Represents access_token of a request; string starts with keyword “Bearer ” followed by access_token. Can get this token from Access Token B2B response.
X-PARTNER-ID String M Unique identifier for caller
X-EXTERNAL-ID String M Numeric string. Reference number that should be unique in the same day or 1 day idempotency key
CHANNEL-ID String M Channel id Device identification on which the API services are currently being accessed by the end

user. Given by BI

Content-type:application/json
X-TIMESTAMP:2020-01-01T00:00:00+07:00
X-SIGNATURE:da1fa417c72d6b91c257e01e54fac824
Authorization:Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CupvIJbU1Mmu4a11MNDZ7Sg5u9a
X-PARTNER-ID:BMRI
X-EXTERNAL-ID:12345678901234567890
CHANNEL-ID:12345

Request Body

Field Name Field Type Mandatory Field Description
originalReferenceNo String(64) O Transaction identifier on service provider system. For e.g: GopayOrderId

Note: either originalExternalId or OriginalReferenceNo need to be filled.

If both fields have value, will use originalReferenceNo as the main identifier.

originalPartnerReferenceNo String(64) O Transaction identifier on service consumer system. For e.g : MerchantOrderId
merchantId String(64) O Merchant id, we suggest to send this
serviceCode String (2) M Transaction type indicator (service code of the original transaction request). For e.g: 54
{
   "originalReferenceNo":"2020102977770000000009",
   "originalPartnerReferenceNo":"af11a2d1-0be9-458a-8e14-afc6cc343581",
   "merchantId":"00007100010926",
   "serviceCode":"47"
}

Response Header

Field Name Field Type Mandatory Field Description
Content-type String M Media type of the resource, i.e. application/json
X-TIMESTAMP String M Client’s current local time in ISO-8601 format
Content-type:application/json
X-TIMESTAMP:2020-01-01T00:00:00+07:00

Response Body

Field Name Field Type Mandatory Field Description
responseCode String(7) M Response code
responseMessage String(150) M Response description
originalPartnerReferenceNo String(64) O Original transaction identifier on service consumer system.
originalReferenceNo String(64) C Transaction identifier in GoPay system. \ \ The value will be returned for successful payment.
serviceCode String(2) M Transaction type indicator (service code of the original transaction request). \ \ For e.g: 47 , 77, 78 which are serviceCode of Payment, Cancel and Refund APIs
latestTransactionStatus String (2) M Status of the transaction.

\ Possible Values: \ 00 - Success

03 - Pending, \ 04 - Refunded \ 05 - Canceled \ 06 - Failed

07 - Not found

transactionStatusDesc String(50) O Transaction status description
paidTime DateTime String O Transaction time
amount Object O Amount object
amount.value String(16,2) M Transaction amount
amount.currency String(3) M Transaction currency
feeAmount Object O Fee amount object
feeAmount.value String(16,2) M Fee transaction amount
feeAmount.currency String(3) M Fee transaction currency
terminalId String(16) O Merchant terminal id
additionalInfo Object O Additional information
{
  "responseCode": "2005100",
  "responseMessage": "Request has been processed successfully",
  "originalReferenceNo": "2020102977770000000009",
  "originalPartnerReferenceNo": "2020102900000000000001",
  "serviceCode": "17",
  "latestTransactionStatus": "00",
  "transactionStatusDesc": "success",
  "paidTime": "2020-10-20T17:56:57",
  "amount": {
    "value": "12345678.00",
    "currency": "IDR"
  },
  "feeAmount": {
    "value": "12345678.00",
    "currency": "IDR"
  },
  "terminalId": "213141251124",
  "additionalInfo": {
    "paymentType": "qris",
    "transactionType": "MERCHANT_TRANSACTION",
    "cancellationReason": "",
    "expiryTime": "2023-07-10T07:57:30Z",
    "channelType": "DYNAMIC_QR",
    "metadata": {
      "kuy": "this is metadata",
      "Main": {
        "Main2": "value of metadata",
        "Main3": "value of metadata"
      }
    }
  }
}

List of response code

Response Code HTTP Status Code Response Message
2005100 200 Success
4005102 400 Invalid Mandatory Field
4015100 401 Unauthorized.
5005101 500 Internal Server Error
5045100 504 Timeout


Fetching transaction status for GoPay Tokenization (Pre Auth) transaction

This section will describe how a merchant can fetch transaction status for GoPay Tokenization (Pre Auth) transactions.

Path/{version}/auth/query
HTTP MethodPOST
Versionv1.0
SNAP Service Code64

Request Header

Field Name Field Type Mandatory Field Description
Content-type String M Media type of the resource, i.e. application/json
X-TIMESTAMP String M Client’s current local time in ISO-8601 format
X-SIGNATURE String M Created using symmetric signature HMAC_SHA512 algorithm
Authorization String M Represents access_token of a request; string starts with keyword “Bearer ” followed by access_token. Can get this token from Access Token B2B API response.
X-PARTNER-ID String M Unique identifier for caller (client_id)
X-EXTERNAL-ID String M Numeric string. Preferably UUID. Reference number that should be unique in the same day or 1 day idempotency key
CHANNEL-ID String M Channel id Device identification on which the API services are currently being accessed by the end user. Given by BI
Content-type:application/json
X-TIMESTAMP:2020-01-01T00:00:00+07:00
X-SIGNATURE: da1fa417c72d6b91c257e01e54fac824
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CupvIJbU1Mmu4a11MNDZ7Sg5u9a
X-PARTNER-ID: BMRI
X-EXTERNAL-ID:12345678901234567890
CHANNEL-ID:12345

Request Body

Field Name Field Type Mandatory Field Description
originalReferenceNo String(64) C Transaction identifier on service provider system. For e.g: GopayOrderId

Note: either originalExternalId or OriginalReferenceNo need to be filled

If both fields have value, will use originalReferenceNo as the main identifier.

originalPartnerReferenceNo String (64) M Merchant order-id
additionalInfo
additionalInfo.originalExternalId String (36) C If merchant got a timeout from the auth endpoint, merchant can use this field using the X-EXTERNAL-ID value in the direct debit request header.

Note: either originalExternalId or OriginalReferenceNo need to be filled

{
    "originalReferenceNo": "Gopay OrderId",
    "originalPartnerReferenceNo": "Merchant OrderId",
    "additionalInfo": {
           "originalExternalId": "external-id"
 }
}

Response Header

Field Name Field Type Mandatory Field Description
Content-type String M Media type of the resource, i.e. application/json
X-TIMESTAMP String M Client’s current local time in ISO-8601 format
Content-type: application/json
X-TIMESTAMP: 2020-01-01T00:00:00+07:00

Response Body

Field Name Field Type Mandatory Field Description
responseCode String (7) M Error code to specify the error returned.
responseMessage String (150) M Debug message to provide more information.
originalReferenceNo String (256) O Transaction identifier on service provider system. For e.g: GopayOrderId
originalPartnerReferenceNo String (32) O Transaction identifier on service consumer system
paidTime String(25) C Transaction paid time. (Will appear only if transaction in success state)
latestTransactionStatus String (2) C 00 - Success

01 - Initiated

04 - Refunded

05 - Canceled

06 - Failed

07 - Not found

amount O
amount.value String (16,2) O Transaction amount that will be paid using this payment method If it's IDR then value includes 2 decimal digits.

e.g. IDR 10.000,- will be placed with 10000.00

amount.currency String O Currency. For e.g: IDR
additionalData
additionalInfo.fraudStatus String O Fraud status
additionalInfo.validUpTo String(25) O The time when the payment will be automatically expired. Using ISO 8601 format
additionalInfo Object M Additional information
additionalInfo.payOptionDetails.payOption String (64) M Payment option which shows the provider of this payment

e.g. E-Money, Gopay Coins , CICIL_MAB , PayLater

additionalInfo.payOptionDetails.payMethod String (64) M Payment Method. e.g. CREDIT_CARD , GOPAY
additionalData.refundHistory.partnerRefundNo String M ReferenceNumber from PJP AIS for the refund.
additionalData.refundHistory.refundAmount Object M Refund amount
additionalData.refundHistory.refundAmount.value String M Net amount of the refund.
additionalData.refundHistory.refundAmount.currency String M Currency
additionalData.refundHistory.refundStatus String M Refund status

Possible values:

  • 00 - Success
  • 03 - Pending
  • 06 - Failed
additionalData.refundHistory.refundDate String M Refund trial date (ISO 8601)
additionalInfo.metadata Object O Transaction metadata
{
   "responseCode":"2006400",
   "responseMessage":"Request has been processed successfully",
   "originalPartnerReferenceNo": "merchant-order-id",
   "originalReferenceNo":"2020102977770000000009",
   "latestTransactionStatus":"00",
   "paidTime":"2023-05-15T14:56:11+07:00",
   "additionalInfo":{ 
          "fraudStatus":"some-fraud-status"  ,
          "validUpTo":"2023-07-03T10:36:17+07:00",
          "refundHistory":[
  	      {
     	     	"refundNo":"96194816941239812",
     	     	"partnerReferenceNo":"239850918204981205970",
          		"refundAmount":{
          	   	     	"value":"12345678.00",
         	    	     	"currency":"IDR"
     	     	},
     	     	"refundStatus":"00",
     	     	"refundDate":"2020-12-23T07:44:16+07:00",
          		"reason":"Customer Complain"
  	}
         ],
         “payOptionDetails” : [{
                "payMethod":"Gopay",
                  "payOption": "Coins"
        }], 
   },
   “metadata” : {}
}
{
   "responseCode":"4006401",
   "responseMessage":"There is some issue with the transaction request"
}

List of response code

Response Code HTTP Status Code Response Message
2006400 200 Success
4006402 400 Invalid Mandatory Field {Field Name}
4016400 401 Unauthorized. Auth token required
4016401 401 Invalid Token (B2B)
5006401 500 Internal Server Error
5046400 504 Timeout

Fetching transaction status for bank transfer (virtual account) transaction

This section describe how a merchant can fetch transaction status of bank trasnfer

Path/{version}/transfer-va/status
HTTP MethodPOST
Versionv1.0
SNAP service code26

Request Header

Field Name Field Type Mandatory Field Description
Content-Type String M Represent media type of request e.g “application/json”
X-TIMESTAMP String M Client's current local time in “yyyy-MM-

ddTHH:mm:ssZ” format

Authorization String M Bearer token obtained from Access Token API in the format Bearer <AccessToken>
X-SIGNATURE String M StringToSign: <ClientKey>|<X-TIMESTAMP:yyyy-mm-dd HH:mm:ssZ>

Signature Generation: SHA256withRSA(PrivateKey, StringToSign)

Encoded Signature: BASE64(Signature)

X-PARTNER-ID String M Unique ID for a partner.
CHANNEL-ID String M PJP’s channel id

Using 95221

X-EXTERNAL-ID String M Transaction ID in Partner system. Numeric String. Same value with trxId.
X-TIMESTAMP 2022-03-04T08:02:09+07:00
X-SIGNATURE yqmBXZ3yV6NPG1LtwXMm3quXzJMRX5Ms+r9ebc5xWIZGSKbZL3Oy871GHb7WQUucLa5nxN/HcnZYoNHc+KkWTQ==
X-PARTNER-ID 668052e34f194aa8be79e15a21e4fc2f
X-EXTERNAL-ID 91919644194391346361915387229113
CHANNEL-ID 95221
Authorization Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxMmUzODE4Mi00YjIxLTQ0YWMtOTVkNi1mMjFhMjEwZmIxZTAiLCJjbGllbnRJZCI6IjY2ODA1MmUzNGYxOTRhYThiZTc5ZTE1YTIxZTRmYzJmIiwibmJmIjoxNjYzODQwNTU5LCJleHAiOjE2NjM4NDE0NTksImlhdCI6MTY2Mzg0MDU1OX0.fEr0vIbB2kY8alZ-SROl3ftAFbfRd0uU-lGq9XuFi8M
Content-Type application/json

Request Body

Field Name Field Type Mandatory Field Description
partnerServiceId String(8) M Derivative of X- PARTNER- ID, similar to company code, 8 digit left padding space. The first 5 digits from virtualAccountNo.
customerNo String(20) M Unique number (up to 20 digits). The sixth digit until end from virtualAccountNo.
virtualAccountNo String(28) M partnerServiceId + customerNo (up to 20 digits). From response charge.
inquiryRequestId String(128) M Unique identifier from Inquiry
paymentRequestId String(128) O Unique identifier from Payment
additionalInfo Object O
additionalInfo.merchantId String M Merchant ID
{
   "partnerServiceId":" 12345",
   "customerNo":123456789012345678,
   "virtualAccountNo":" 12345123456789012345678",
   "inquiryRequestId":"202202111031031234500001136962",
   "paymentRequestId":"202202111031031234500001136962",
   "additionalInfo":{
      "merchant_id": "G12345463"
   }
}

Response Header

Field NameField TypeMandatoryField Description
Content-TypeStringMMedia type of the resource, i.e application/json
X-TIMESTAMPStringMClient's current local time in ISO-8601
Content-type:application/json
X-TIMESTAMP:2020-01-01T00:00:00+07:00

Response Body

Field Name Field Type Mandatory Field Description
responseCode String(7) M Response code
responseMessage String(150) M Response description
virtualAccountData Object M
virtualAccountData.paymentFlagReason Object O
virtualAccountData.paymentFlagReason.english String(200) O Reason for Payment Status in English
virtualAccountData.paymentFlagReason.indonesia String(200) O Reason for Payment Status in English
virtualAccountData.partnerServiceId String(8) M Derivative of X- PARTNER- ID, similar to company code, 8 digit left padding space.
virtualAccountData.customerNo String(20) M Unique number (up to 20 digits).
virtualAccountData.virtualAccountNo String(28) M partnerServiceId (8 digit left padding 0) + customerNo (up to 20 digits).
virtualAccountData.inquiryRequestId String(128) M Unique identifier from Inquiry
virtualAccountData.paymentRequestId String(128) C Unique identifier for this Payment from PJP. Mandatory if Payment happened.
virtualAccountData.paidAmount Object O
virtualAccountData.paidAmount.Value String(ISO 4217)(16,2) M Paid Amount with 2 decimal
virtualAccountData.paidAmount.Currency String(3) M Currency

Currency of amount based on ISO 4217

virtualAccountData.paidBills String(6) O Hexadecimal format of binary of flag of paid bills. If have 24 bills, and paid bills number 1, 4, 6, and 8, will be written in binary 1001010100 0000000000 0000 and converted in Hexa 95000
virtualAccountData.totalAmount Object O
virtualAccountData.totalAmount.value String(ISO 4217)(16,2) M Total Amount with 2 decimal
virtualAccountData.paidAmount.currency String(3) M Currency

Currency of amount based on ISO 4217

virtualAccountData.trxDateTime Date(25) O
virtualAccountData.transactionDate Date(25) O Payment datetime when the payment happened
virtualAccountData.referenceNo String(15) O Payment auth code generated by PJP
virtualAccountData.paymentType String(1) O Type of payment
virtualAccountData.flagAdvise String(1) O Status is this a retry notification
virtualAccountData.paymentFlagStatus String(2) O Status for Payment Flag

00 - Success

01 - Initiated

02 - Paying

03 - Pending

04 - Refunded

05 - Canceled

06 - Failed

07 - Not found

virtualAccountData.billDetails Array of Objects O
virtualAccountData.billDetails.billCode String(2) O Bill code for Customer choose
virtualAccountData.billDetails.billNo String(18) O Bill number from Partner
virtualAccountData.billDetails.billname String(20) O Bill Name
virtualAccountData.billDetails.billShortName String(10) O Bill Name to shown to
virtualAccountData.billDetails.billDescription.english String(18) O Bill Description in English
virtualAccountData.billDetails.billDescription.indonesia String(18) O Bill Description in Bahasa
virtualAccountData.billDetails.billSubCompany String(5) O Partner’s product code
virtualAccountData.billDetails.billAmount.Value String(ISO 4217)(16,2) M Transaction Amount.

Nominal inputted by Customer with 2 decimal

virtualAccountData.billDetails.billAmount Objects O
virtualAccountData.billDetails.billAmount.Currency String(3) M
virtualAccountData.billDetails.billReferenceNo Number(15) O Bill auth code generated by PJP
virtualAccountData.billDetails.status String(2) O Payment status for specific Bill
virtualAccountData.reason.english String(64) O Reason for Payment Status for specific Bill in English
virtualAccountData.reason.indonesia String(64) O Reason for Payment Status for specific Bill in Bahasa
virtualAccountData.freeTexts Array of Objects O
virtualAccountData.freeTexts.english String(32) O Will be shown in Channel
virtualAccountData.freeTexts.indonesia String(32) O
virtualAccountData.additionalInfo Object O
{
   "responseCode": "2002600",
  "responseMessage": "Success",
  "virtualAccountData": {
    "paymentFlagStatus": "00",
    "paymentFlagReason": {
      "indonesia": "BERHASIL",
      "english": "SUCCESS"
    },
    "partnerServiceId": " 12345",
    "customerNo": "123456789012345678",
    "virtualAccountNo": " 12345123456789012345678",
    "inquiryRequestId": "202202111031031234500001136962",
    "paymentRequestId": "202202111031031234500001136962",
    "paidAmount": {
      "value": "100000.00",
      "currency": "IDR"
    },
    "paidBills": "",
    "totalAmount": {
      "value": "100000.00",
      "currency": "IDR"
    },
    "trxDateTime": "2022-02-12T17:29:57+07:00",
    "transactionDate": "2022-02-11T10:16:04+07:00",
    "referenceNo": "00113696201",
    "paymentType": "",
    "flagAdvise": "",
    "billDetails": [
      {
        "billCode": "",
        "billNo": "123456789012345678",
        "billName": "",
        "billShortName": "",
        "billDescription": {
          "english": "Maintenance",
          "indonesia": "Pemeliharaan"
        },
        "billSubCompany": "00000",
        "billAmount": {
          "value": "100000.00",
          "currency": "IDR"
        },
        "additionalInfo": {
          "value": ""
        },
        "billReferenceNo": "00113696201",
        "status": "00",
        "reason": {
          "english": "Success",
          "indonesia": "Sukses"
        }
      }
    ],
    "freeTexts": [
      {
        "english": "Free text",
        "indonesia": "Tulisan bebas"
      }
    ]
  },
  "additionalInfo": {
    
  }
}