| Integration Needed | Details |
|---|---|
| Mini App Frontend | Opens the redirection url provided by backend. SDK integration will be available in upcoming version. |
| Mini App Backend | Calls GoPay backend to obtain redirection url. |
Sequence Diagram:
Mini app payments Flow diagram
1. User Initiate Order
- The user decides to place an order in the mini app front end process for order.
2.[Merchant owned]
- Merchant mini app frontend to call their own backend to initiate the payment
Step 3:[BI-SNAP Core API] Fetch Merchant Access Token
- In order to initiate order with Super App Backend Merchant access token is needed for verification purposes. This access token can be fetched by v1.0/access-token/b2b [BI-SNAP Core API]
- The Api returns the access token which can be used for all other payment oriented APIs.
- The contract of the API can be found here
Step 4:[Merchant owned]
- Merchant mini app frontend to call their backend to initiate the payment
Step 5:[BI-SNAP Core API] Payment Host to Host
- Using Merchant Access token from step 3, Payment Creation with Super App backend can be initiated by V1.0/debit/payment-host-to-host [BI-SNAP Core API]
- The contract of the API can be found here
- The merchant payment can be Guest Checkout Payment with Payer information unknown at the point.
- The merchant guest payment should have additionalInfo.pointOfPurchaseId which is shared by GoPay upfront.
Step 6: Super App Payment creation response
- Super App Backend returns response to the merchant backend with necessary info for payments
- webRedirectUrl -> Payment deeplink
- ReferenceNo -> GoPay Order Id
Step 7: Merchant payment creation response
- Merchant Backend returns response to Merchant Frontend with contract owned by Merchant team.
Step 8: FE Pay
- The Mini App front end can open the Super App Payment page using the launchPayment from step 5.
SDK:MiniAppSDK version: 0.3.19
Gopay App Version - 1.45.0 - Once the payment is completed, the Super App front end automatically redirects to the merchant page with payment status.
Step 9:[BI-SNAP Core API] Notify
- Once the payment is complete. Super App backend will notify the Mini App Backend by v1.0/debit/notify [BI-SNAP Core API]
- The contract for the api can be found here.
New GoPay Merchants:
If you have not integrated with GoPay or have integrated without following the BI-SNAP Core API convention, the following points apply :
- You must first onboard BI-SNAP Core API convention first using this section Onboard to BI-SNAP Core API.
- Once the BI-SNAP Core API onboarding is complete, you can follow Existing GoPay Merchant.
Existing GoPay Merchants:
If you have already integrated with GoPay and follow the BI-SNAP Core API convention, the following points apply :
- There is no change in the already integrated v1.0/access-token/b2b BI-SNAP Core API.
- For v1.0/debit/payment-host-to-host api, the new field in the existing contract needs to be added under additionalInfo.pointOfPurchaseId. The value for this is shared by the GoPay Team.
- There is no change in the already integrated v1.0/debit/notify BI-SNAP Core API.
1. Access Token B2B
| Path | /{version}/access-token/b2b |
|---|---|
| SNAP service code | 73 |
| HTTP Method | POST |
| Version | v1.0 |
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 asymmetric signature SHA256withRSA algorithm | |
| X-CLIENT-KEY | String | M | Client’s client_id (PJP Name) (given at completion registration process). | |
Content-type: application/json
X-TIMESTAMP: 2024-03-19T14:30:00+07:00
X-SIGNATURE: da1fa417c72d6b91c257e01e54fac824
X-CLIENT-KEY:962489e9-de5d-4eb7-92a4-b07d44d64bf4
Request Body
| Field Name | Field Type | Mandatory | Field Description | |
| grantType | String(64) | M | client_credentials: The client can request an access token using only its client credentials (or other supported means of authentication) when the client is requesting access to the protected resources under its control (OAuth 2.0: RFC 6749 & 6750) | |
{
"grantType":"client_credentials"
}
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:2024-03-19T14:30: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. | |
| accessToken | String(2048) | C | A string representing an authorization issued to the client that used to access protected resources | |
| tokenType | String | O | The access token type provides the client with the information required to successfully utilize the access token to make a protected resource request | |
| expiresIn | String | O | Time duration when the accessToken will be expired. (default in second). | |
{
"responseCode":"2007400",
"responseMessage":"Successful",
"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyMTFlZThiMi1hN2FlLTRhZGUtYmJlYS1mNzI3MDk3ZmQ0NmEiLCJjbGllbnRJZCI6IjZhZTk1N2M0LTI4NjMtNDcxMy1hY2NlLWJhMTJkZTYzNmNmYyIsIm5iZiI6MTYxMTQ2ODk3OCwiZXhwIjoxNjExNDY5ODc4LCJpYXQiOjE2MTE0Njg5Nzh9.KM7yz9GvuUaDR1bXwei4iO0h4e3g4o1Hct5Ie9VoBdo",
"tokenType":"Bearer",
"expiresIn":"900"
}
Response Body Error Case
| 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. | |
| referenceNo | String | C | Debug id to provide more information. | |
{
"responseCode":"5007300",
"responseMessage":"Timeout",
"referenceNo":"19352694-0ef6-4439-8ad1-b1dfb8bbb85f"
}
List of Response code
| Response Code | HTTP Status Code | Response Message |
| 2007300 | 200 | Success |
| 4017300 | 401 | Unauthorized. Signature |
| 5007300 | 500 | Internal Server Error |
2. Payment Host to Host

Note: This API allows you to create GoPay Payment Deeplink which when triggered correctly user's will be redirected to GoPay Payment Review Page.
GoPay deeplink - Direct Debit API
| Path | /{version}/debit/payment-host-to-host |
|---|---|
| HTTP Method | POST |
| Version | v1.0 |
| SNAP service code | 54 |
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 from Access Token B2B API response. | |
| X-PARTNER-ID | String | M | Unique identifier for partner | |
| X-EXTERNAL-ID | String | M | Alphanumeric string. Preferably UUID. Reference number that should be unique in the same day or 1 day idempotency key | |
| CHANNEL-ID | String | M | Mandatory field from Bank Indonesia that can take any value with correct format 5 digits numeric string | |
Content-type: application/json
X-TIMESTAMP: 2024-03-19T14:30:00+07:00
X-SIGNATURE: da1fa417c72d6b91c257e01e54fac824
Authorization: Bearer gp9HjjEj813Y9JGoqwOeOPWbnt4CupvIJbU1Mmu4a11MNDZ7Sg5u9a
X-PARTNER-ID: BMRI
X-EXTERNAL-ID: 12345678901234567890
CHANNEL-ID: 12345
References on X-Signature docs
Request Body
| Field Name | Field Type | Mandatory | Field Description | |
| partnerReferenceNo | String(64) | M | Merchant order id Only used for debugging purpose in server side | |
| chargeToken | String(40) | M | Authorization token. Same as the Authorization header. | |
| merchantId | String(64) | O | Merchant identifier that is unique per each merchant | |
| validUpTo | String(25) | O | The time when the payment will be automatically expired. The format is defined by ISO 8601.
| |
| urlParam | Array of Object | O | Merchant redirect URL. After completing payment, user will be redirected back to this URL.if it's not provided, the system will fallback to using the callback url from the dashboard configuration. In case the Midtrans dashboard configuration value is also unavailable, the system will return an error. | |
| urlParam.url | String(512) | M | URL value | |
| urlParam.type | String(32) | M | URL type Possible value : PAY_RETURN | |
| urlParam.isDeeplink | String(1) | M | This parameter defines the type of URL to use. Set it to "Y" for a deeplink, or choose "N" if you prefer a standard URL (HTTP/HTTPS) Possible Value: Y, N | |
| payOptionDetails | Array of Object | M | Payment option that will be used for this payment. | |
| payOptionDetails.payMethod | String(64) | M | Payment method for the transaction. Possible value : GOPAY | |
| payOptionDetails.payOption | String(64) | M | Payment option which shows the provider of this paymentReserved for future use case. | |
| payOptionDetails.transAmount | Object | M | Payment Transaction Amount | |
| payOptionDetails.transAmount.value | String(ISO 4217) | M | 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 as 10000.00 Minimum value: 1.00 Maximum value : 99999999999.00 | |
| payOptionDetails.transAmount.currency | String(3) | M | Transaction currency that will be paid using this payment method. Possible Value: IDR | |
| additionalInfo | Object | O | Additional information field which merchants need to pass to support current API contracts. | |
| additionalInfo.customerDetails | Object | O | Customer Detail Information | |
| additionalInfo.customerDetails.phone | String(15) | O | Customer Phone number | |
| additionalInfo.customerDetails.email | String(255) | O | Customer email | |
| additionalInfo.customerDetails.firstName | String(255) | O | Customer First Name | |
| additionalInfo.customerDetails.lastName | String(255) | O | Customer Last Name | |
| additionalInfo.customerDetails.billingAddress | Object | O | Customer billing address | |
| additionalInfo.customerDetails.billingAddress.firstName | String(255) | O | Billing address first name | |
| additionalInfo.customerDetails.billingAddress.lastName | String(255) | O | Billing address last name | |
| additionalInfo.customerDetails.billingAddress.phone | String(15) | O | Billing address phone | |
| additionalInfo.customerDetails.billingAddress.address | String(255) | O | Billing address detail | |
| additionalInfo.customerDetails.billingAddress.city | String(255) | O | Billing address city | |
| additionalInfo.customerDetails.billingAddress.postalCode | String(255) | O | Billing address postal code | |
| additionalInfo.customerDetails.billingAddress.countryCode | String(15) | O | Billing address country code | |
| additionalInfo.customerDetails.shippingAddress | Object | O | Customer shipping address | |
| additionalInfo.customerDetails.shippingAddress.firstName | String(255) | O | Shipping address first name | |
| additionalInfo.customerDetails.shippingAddress.lastName | String(255) | O | Shipping address last name | |
| additionalInfo.customerDetails.shippingAddress.phone | String(15) | O | Shipping address phone | |
| additionalInfo.customerDetails.shippingAddress.address | String(255) | O | Shipping address detail | |
| additionalInfo.customerDetails.shippingAddress.city | String(255) | O | Shipping address city | |
| additionalInfo.customerDetails.shippingAddress.postalCode | String(255) | O | Shipping address postal code | |
| additionalInfo.customerDetails.shippingAddress.countryCode | String(15) | O | Shipping address country code | |
| additionalInfo.items | Array Of Object | O | Item Details | |
| additionalInfo.items.id | String(32) | O | Item ID | |
| additionalInfo.items.price | Object | M | Price of the item in IDR. | |
| additionalInfo.items.price.value | String (ISO4217) | M | Item Price value | |
| additionalInfo.items.price.currency | String(3) | M | Item Price currency | |
| additionalInfo.items.quantity | String | M | Quantity of the item purchased by the customer. | |
| additionalInfo.items.name | String(64) | O | Name of the item. | |
| additionalInfo.items.merchantName | String(64) | O | Name of the merchant selling the item. | |
| additionalInfo.items.brand | String(64) | O | Brand name of the item. | |
| additionalInfo.items.category | String(64) | O | Category of the item. | |
| additionalInfo.items.url | String(64) | O | HTTP URL of the item in the merchant site | |
| additionalInfo.metadata | Object | O | Transaction metadata | |
| additionalInfo.pointOfPurchaseId | String | C | PoP (Point of purchase) ID. The value will be provided by GoPay team during onboarding. If merchant has a GoPay mini app integration, merchant will need to pass the PoP for both the mini app integration as well as the standard GoPay integration. For example: Merchant has both mini app and standard integration. - Merchant should pass mini app PoP ID when creating mini app transaction. - Merchant should pass standard PoP ID when creating standard transaction. | |
{
"partnerReferenceNo": "merchant-order-id",
"chargeToken": "accessToken",
"merchantId": "G169749203",
"urlParam": [{
"url": "merchantapp://payments/callback/12345",
"type": "PAY_RETURN",
"isDeeplink": "Y"
}],
"validUpTo": "2023-09-24T20:34:15.452305Z",
"payOptionDetails": [
{
"payMethod": "gopay",
"payOption": "gopay",
"transAmount": {
"value": "12345678.00",
"currency": "IDR"
}
}
],
"additionalInfo": {
"customerDetails": {
"phone": "080123456789",
"firstName": "john",
"lastName": "doe",
"email": "[email protected]",
"billingAddress": {
"firstName": "john",
"lastName": "doe",
"phone": "080123456789",
"address": "jalan maju mundur",
"city": "jakarta",
"postalCode": "12345",
"countryCode": "IDN"
},
"shippingAddress": {
"firstName": "john",
"lastName": "doe",
"phone": "080123456789",
"address": "jalan maju mundur",
"city": "jakarta",
"postalCode": "12345",
"countryCode": "IDN"
}
},
"items": [
{
"id": "ID012345",
"price": {
"value": "12345678.00",
"currency": "IDR"
},
"quantity":"1",
"name": "someItemName",
"brand": "someBrand",
"category": "someCategory",
"merchantName": "someMerchant",
"url": "someItemUrl"
}
],
"metadata": {},
"pointOfPurchaseId":"22cc3371-4bba-4ec6-8e0d-62163e130cdc"
}
}
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:2024-03-19T14:30:00+07:00
Response Body
| Field Name | Field Type | Mandatory | Field Description | |
| responseCode | String(7) | M | Status code of transaction charge result. | |
| responseMessage | String(150) | M | Description of transaction charge result. | |
| referenceNo | String(256) | C | Transaction identifier on service provider system. The field is filled upon successful transaction | |
| partnerReferenceNo | String(64) | O | Transaction identifier on service consumer system | |
| appRedirectUrl | String(2048) | O | Reserved for future purposes. | |
| webRedirectUrl | String(2048) | M | Returns a universal link to the PJP AIS payment page. This link is recommended when the Client is unable to implement a check for whether the PJP AIS app is installed on the user's device before redirection. | |
| additionalInfo | Object | O | Additional information | |
| additionalInfo.gross_amount | Object | O | Transaction amount that will be paid using this payment method. The format defined by ISO 4217. | |
| additionalInfo.gross_amount.value | String (ISO4217) | M | Gross amount value | |
| additionalInfo.gross_amount.currency | String(3) | M | Gross amount currency | |
| additionalInfo.paymentType | String(64) | O | Transaction payment method | |
| additionalInfo.transactionTime | String(ISO 8601) | O | Timestamp of transaction in ISO 8601 format using GMT+7. | |
| additionalInfo.validUpTo | String(ISO 8601) | O | The time when the payment will be automatically expired. Using ISO 8601 format | |
{
"responseCode":"2005400",
"responseMessage":"Successful",
"referenceNo":"GOPAY012345678",
"partnerReferenceNo":"merchant-order-id",
"webRedirectUrl":"https://some-url.for/redirect-to-gopay-app",
"appRedirectUrl":""
"additionalInfo":{
"paymentType": "GOPAY",
"grossAmount":{
"value": "12345678.00",
"currency": "IDR"
},
"transactionTime":"2023-09-25T02:59:19.517854Z",
"validUpTo":"2023-09-26T02:59:19Z"
}
List of Response code
| Response Code | HTTP Status Code | Response Message |
| 4005402 | 400 | Invalid Mandatory Field chargeToken , partnerReferenceNo |
| 4015400 | 401 | Unauthorized. Auth token required |
| 4015401 | 401 | Invalid Token (B2B) |
| 4035403 | 403 | Suspected Fraud |
| 4035414 | 403 | Insufficient Funds |
| 4035415 | 403 | Transaction Not Permitted. Url not whitelisted. |
| 5005401 | 500 | Internal Server Error |
| 5045400 | 504 | Timeout |
3. Launch Payment
Note: This is a Frontend SDK required to trigger the payment deeplink from payment host to host. This SDK allows redirection from MiniApp to GoPay Payment Review Page and redirection back to MiniApp
This is the Frontend Payment Response
Sample Request:
const webUrl = response.webRedirectUrl;
function convertToGoPayDeepLink(url) {
const urlObj = new URL(url);
const params = urlObj.search;
return `gopay://merchanttransfer${params}`;
}
const deepLink = convertToGoPayDeepLink(webUrl);
// Assign to params object
var params = {
deeplink: deepLink
};
window.gpContainer.call(
"GP",
"launchPayment",
params,
function(response) {
console.log('success:', response);
},
function(error) {
console.log('error:', error);
}
);Sample Response: (error codes)
{
success: true,
data: {
status: "success"
},
"ret": "GP_SUCCESS"
}{
"success": false,
"error_code": "300",
"error_type": "JS_BRIDGE_ERROR",
"error_message": "Permission denied",
"ret": "GP_EXCEPTION"
}| Status | Description |
|---|---|
| success | User have successfully paid the transaction |
| failed | User cancelled the transaction |
| pending | There's an error processing the transaction |
| cancelled | User goes back to the miniapp without completing or cancelling the payment |
4. Notify
Note: This is the Backend API required to retrieve the payment response.
In the SNAP-based Core API flow, Midtrans will call Payment Notification API on the merchant side to send payment notifications. Merchant should implement this Payment Notification API as stated in the contract below.
Midtrans will generate a pair of private and public key for signature generation and share the public key to merchant. Merchant will then need to give Midtrans a partner id that will be used in request header as X-PARTNER-ID.
Please make sure to whitelist this set of IPs to be able to accept notification from Midtrans.
<th style={{ textAlign: "left" }}> IPs </th> </tr> </thead> <tbody> <tr> <td style={{ textAlign: "left" }}> Staging </td> <td style={{ textAlign: "left" }}> 3.1.141.98/32 52.76.190.190/32 13.251.192.204/32 8.215.39.156/32 8.215.77.79/32 147.139.213.119/32 8.215.56.11/32 8.215.39.87/32 8.215.42.0/32 8.215.59.158/32 149.129.222.246/32 8.215.26.108/32 8.215.13.84/32 </td> </tr> <tr> <td style={{ textAlign: "left" }}> Sandbox </td> <td style={{ textAlign: "left" }}> 34.142.147.133/32 34.142.169.131/32 34.142.231.22/32 35.240.161.215/32 34.142.227.232/32 34.124.184.175/32 35.197.130.2/32 34.142.233.114/32 8.215.26.211/32 8.215.22.135/32 8.215.93.92/32 8.215.93.214/32 8.215.93.76/32 8.215.33.37/32 8.215.26.148/32 8.215.194.225/32 8.215.12.199/32 149.129.255.111/32 </td> </tr> <tr> <td style={{ textAlign: "left" }}> Production </td> <td style={{ textAlign: "left" }}> 13.228.166.126/32 52.220.80.5/32 3.1.123.95/32 8.215.30.222/32 147.139.209.49/32 8.215.32.142/32 147.139.163.77/32 8.215.25.24/32 8.215.3.193/32 147.139.210.20/32 149.129.238.95/32 8.215.9.206/32 147.139.134.22/32 </td> </tr> </tbody>
Environment
Notes on Future Compatibility and Best PracticesTo ensure your integration remains robust and scalable, please be aware that Midtrans may introduce additional parameters to the payment notification payload in the future, most likely under the additionalInfo section, but not limited to it. These enhancements are designed to provide greater flexibility and support for evolving business needs.
To prevent any issues caused by these future changes, we strongly recommend that merchants always perform signature verification on the entire payload, rather than validating fields individually. This practice ensures a seamless, secure, and simple implementation that can adapt to future updates without requiring significant changes on your side.
Receiving payment notifications for GoPay and GoPay Tokenization (non Pre-Auth) transaction
This section will describe how merchant should implement payment notification API for GoPay and GoPay Tokenization (non-Pre Auth) transactions for Midtrans to call.
| Path | /{version}/debit/notify |
|---|---|
| HTTP Method | POST |
| Version | v1.0 |
| SNAP Service Code | 56 |
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 asymmetric signature Asymmetric-Signature format: SHA256withRSA (privateKey, stringToSign) with stringToSign = HTTPMethod +”:“+ EndpointUrl +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + TimeStamp | |
| X-PARTNER-ID | String | M | Unique identifier for partner | |
| X-EXTERNAL-ID | String | M | Numeric string. Reference number that should be unique in the same day or 1 day idempotency key | |
Content-type:application/json
X-TIMESTAMP:2024-03-19T14:30:00+07:00
X-SIGNATURE: da1fa417c72d6b91c257e01e54fac824
X-PARTNER-ID:
X-EXTERNAL-ID:12345678901234567890
CHANNEL-ID:12345
Request Body
| Field Name | Field Type | Mandatory | Field Description |
| createdTime | String | O | Transaction created timestamp |
| latestTransactionStatus | String | M | Latest transaction statusPossible Values:
|
| originalReferenceNo | String | M | Transaction identifier on service provider system. For e.g: GopayOrderId |
| finishedTime | String | O | Transaction completed timestamp (for latestTranscationStatus = 00) |
| originalPartnerReferenceNo | String | O | Original transaction identifier on service consumer system. (Merchant’s orderId) |
| originalExternalId | String(36) | O | Original External-ID on header message when doing charge (/payment-host-to-host) |
| merchantId | String | O | Merchant ID |
| amount | Object | O | Transaction amount |
| amount.value | String | M | Transaction amount |
| amount.currency | String | M | Transaction currency |
| additionalInfo | Object | M | Additional info |
| additionalInfo.refundHistory | Array of Object | C | Array of refund transactions. Only available if transaction status is refund |
| additionalInfo.refundHistory.refundNo | String | M | Unique identifier of refund transaction generated by provider. |
| additionalInfo.refundHistory.refundStatus | String | M | Refund status. Possible values:
|
| additionalInfo.refundHistory.partnerRefundNo | String | M | Unique identifier of refund transaction generated by client. |
| additionalInfo.refundHistory.refundAmount | Object | M | Refund amount |
| additionalInfo.refundHistory.refundAmount.value | String | M | Net amount of the refund. If it's IDR then the value includes 2 decimal digits. e.g. IDR 10.000,- will be placed with 10000.00 |
| additionalInfo.refundHistory.refundAmount.currency | String | M | Currency |
| additionalInfo.refundHistory.reason | String | M | Refund reason |
| additionalInfo.refundHistory.refundTime | String | M | Refund time |
| additionalInfo.totalRefundAmount | Object | C | Total refund amount. Only available if transaction status is refund or partial refund. |
| additionalInfo.totalRefundAmount.value | String | M | Total refund amount. If it's IDR then the value includes 2 decimal digits. e.g. IDR 10.000,- will be placed with 10000.00 |
| additionalInfo.totalRefundAmount.currency | String | M | Currency |
| additionalInfo.userPaymentDetails | Array of object | M | Payment option used by user. This will be not available for deeplink redirection payment flow with pending status. |
| additionalInfo.userPaymentDetails.payMethod | String | M | Payment method used by user. E.g: gopay |
| additionalInfo.userPaymentDetails.payOption | String | M | Payment option used by user. Possible value: - GoPay = GOPAY_WALLET- GoPay Later = PAY_LATER- GoPay Tabungan by Jago = GOPAY_SAVINGS |
{
"createdTime": "2020-01-01T00:00:00+07:00",
"latestTransactionStatus": "00",
"originalReferenceNo": "gopayOrderId",
"finishedTime": "2020-01-02T00:00:00+07:00",
"originalPartnerReferenceNo": "merchant-order-id",
"transactionStatusDesc": "desc",
"originalExternalId":"merchant-order-id",
"additionalInfo": {
"userPaymentDetails": [
{
"payMethod": "gopay",
"payOption": "GOPAY_WALLET"
}
],
"refundHistory":[
{
"refundNo":"96194816941239812",
"refundStatus":"00",
"partnerReferenceNo":"239850918204981205970",
"refundAmount":{
"value":"12345678.00",
"currency":"IDR"
},
"refundDate":"2020-12-23T07:44:16+07:00",
"reason":"Customer Complain"
}
]
}
}
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: 2024-03-19T14:30: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. | |
{
"responseCode":"2005600",
"responseMessage":"Request has been processed successfully"
}