Seamless Payments

Payment Video Introduction

Integration NeededDetails
Mini App FrontendOpens the redirection url provided by backend.
SDK integration will be available in upcoming version.
Mini App BackendCalls 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 code73
HTTP MethodPOST
Versionv1.0

Request Header

Field NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient's current local time in ISO-8601 format
X-SIGNATUREStringMCreated using asymmetric signature SHA256withRSA algorithm
X-CLIENT-KEYStringMClient’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 NameField TypeMandatoryField Description
grantTypeString(64)Mclient_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 NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient's current local time in ISO-8601 format
Content-type:application/json
X-TIMESTAMP:2024-03-19T14:30:00+07:00

Response Body

Field NameField TypeMandatoryField Description
responseCodeString(7)MError code to specify the error returned
responseMessageString(150)MDebug message to provide more information.
accessTokenString(2048)CA string representing an authorization issued to the client that used to access protected resources
tokenTypeStringOThe access token type provides the client with the information required to successfully utilize the access token to make a protected resource request
expiresInStringOTime 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 NameField TypeMandatoryField Description
responseCodeString(7)MError code to specify the error returned
responseMessageString(150)MDebug message to provide more information.
referenceNoStringCDebug id to provide more information.
{
   "responseCode":"5007300",
   "responseMessage":"Timeout",
   "referenceNo":"19352694-0ef6-4439-8ad1-b1dfb8bbb85f"
}

List of Response code

Response CodeHTTP Status CodeResponse Message
2007300200Success
4017300401Unauthorized. Signature
5007300500Internal 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 MethodPOST
Versionv1.0
SNAP service code54

Request Header

Field NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient's current local time in ISO-8601 format
X-SIGNATUREStringMCreated using symmetric signature HMAC_SHA512 algorithm
AuthorizationStringMRepresents 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-IDStringMUnique identifier for partner
X-EXTERNAL-IDStringMAlphanumeric string. Preferably UUID. Reference number that should be unique in the same day or 1 day idempotency key
CHANNEL-IDStringMMandatory 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 NameField TypeMandatoryField Description
partnerReferenceNoString(64)MMerchant order id

Only used for debugging purpose in server side

chargeTokenString(40)MAuthorization token. Same as the Authorization header.
merchantIdString(64)OMerchant identifier that is unique per each merchant
validUpToString(25)OThe time when the payment will be automatically expired. The format is defined by ISO 8601.


(Minimum value : 20 second, default value : 15 min) Maximum value for gopay: 180 days from trx time,

urlParamArray of ObjectOMerchant 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.urlString(512)MURL value
urlParam.typeString(32)MURL type
Possible value : PAY_RETURN
urlParam.isDeeplinkString(1)MThis 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

payOptionDetailsArray of ObjectMPayment option that will be used for this payment.
payOptionDetails.payMethodString(64)MPayment method for the transaction.
Possible value : GOPAY
payOptionDetails.payOptionString(64)MPayment option which shows the provider of this paymentReserved for future use case.
payOptionDetails.transAmountObjectMPayment Transaction Amount
payOptionDetails.transAmount.valueString(ISO 4217)MTransaction 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.currencyString(3)MTransaction currency that will be paid using this payment method.
Possible Value: IDR
additionalInfoObjectOAdditional information field which merchants need to pass to support current API contracts.
additionalInfo.customerDetailsObjectOCustomer Detail Information
additionalInfo.customerDetails.phoneString(15)OCustomer Phone number
additionalInfo.customerDetails.emailString(255)OCustomer email
additionalInfo.customerDetails.firstNameString(255)OCustomer First Name
additionalInfo.customerDetails.lastNameString(255)OCustomer Last Name
additionalInfo.customerDetails.billingAddressObjectOCustomer billing address
additionalInfo.customerDetails.billingAddress.firstNameString(255)OBilling address first name
additionalInfo.customerDetails.billingAddress.lastNameString(255)OBilling address last name
additionalInfo.customerDetails.billingAddress.phoneString(15)OBilling address phone
additionalInfo.customerDetails.billingAddress.addressString(255)OBilling address detail
additionalInfo.customerDetails.billingAddress.cityString(255)OBilling address city
additionalInfo.customerDetails.billingAddress.postalCodeString(255)OBilling address postal code
additionalInfo.customerDetails.billingAddress.countryCodeString(15)OBilling address country code
additionalInfo.customerDetails.shippingAddressObjectOCustomer shipping address
additionalInfo.customerDetails.shippingAddress.firstNameString(255)OShipping address first name
additionalInfo.customerDetails.shippingAddress.lastNameString(255)OShipping address last name
additionalInfo.customerDetails.shippingAddress.phoneString(15)OShipping address phone
additionalInfo.customerDetails.shippingAddress.addressString(255)OShipping address detail
additionalInfo.customerDetails.shippingAddress.cityString(255)OShipping address city
additionalInfo.customerDetails.shippingAddress.postalCodeString(255)OShipping address postal code
additionalInfo.customerDetails.shippingAddress.countryCodeString(15)OShipping address country code
additionalInfo.itemsArray Of ObjectOItem Details
additionalInfo.items.idString(32)OItem ID
additionalInfo.items.priceObjectMPrice of the item in IDR.
additionalInfo.items.price.valueString (ISO4217)MItem Price value
additionalInfo.items.price.currencyString(3)MItem Price currency
additionalInfo.items.quantityStringMQuantity of the item purchased by the customer.
additionalInfo.items.nameString(64)OName of the item.
additionalInfo.items.merchantNameString(64)OName of the merchant selling the item.
additionalInfo.items.brandString(64)OBrand name of the item.
additionalInfo.items.categoryString(64)OCategory of the item.
additionalInfo.items.urlString(64)OHTTP URL of the item in the merchant site
additionalInfo.metadataObjectOTransaction metadata
additionalInfo.pointOfPurchaseIdStringCPoP (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 NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient's current local time in ISO-8601 format
Content-type:application/json
X-TIMESTAMP:2024-03-19T14:30:00+07:00

Response Body

Field NameField TypeMandatoryField Description
responseCodeString(7)MStatus code of transaction charge result.
responseMessageString(150)MDescription of transaction charge result.
referenceNoString(256)CTransaction identifier on service provider system. The field is filled upon successful transaction
partnerReferenceNoString(64)OTransaction identifier on service consumer system
appRedirectUrlString(2048)OReserved for future purposes.
webRedirectUrlString(2048)MReturns 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.
additionalInfoObjectOAdditional information
additionalInfo.gross_amountObjectOTransaction amount that will be paid using this payment method. The format defined by ISO 4217.
additionalInfo.gross_amount.valueString (ISO4217)MGross amount value
additionalInfo.gross_amount.currencyString(3)MGross amount currency
additionalInfo.paymentTypeString(64)OTransaction payment method
additionalInfo.transactionTimeString(ISO 8601)OTimestamp of transaction in ISO 8601 format using GMT+7.
additionalInfo.validUpToString(ISO 8601)OThe 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 CodeHTTP Status CodeResponse Message
4005402400Invalid Mandatory Field chargeToken , partnerReferenceNo
4015400401Unauthorized. Auth token required
4015401401Invalid Token (B2B)
4035403403Suspected Fraud
4035414403Insufficient Funds
4035415403Transaction Not Permitted. Url not whitelisted.
5005401500Internal Server Error
5045400504Timeout

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"   
}
StatusDescription
successUser have successfully paid the transaction
failedUser cancelled the transaction
pendingThere's an error processing the transaction
cancelledUser 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 Practices

To 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 MethodPOST
Versionv1.0
SNAP Service Code56

Request Header

Field NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient’s current local time in ISO-8601 format
X-SIGNATUREStringMCreated using asymmetric signature

Asymmetric-Signature format:

SHA256withRSA (privateKey, stringToSign) with

stringToSign = HTTPMethod +”:“+ EndpointUrl +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody)))) + ":“ + TimeStamp

X-PARTNER-IDStringMUnique identifier for partner
X-EXTERNAL-IDStringMNumeric 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 NameField TypeMandatoryField Description
createdTimeStringOTransaction created timestamp
latestTransactionStatusStringMLatest transaction statusPossible Values:
  • 00 - Success
  • 03 - Pending
  • 04 - Refunded
  • 05 - Canceled
  • 06 - Failure
  • 08 - Expiry
  • 09 - Rejected
originalReferenceNoStringMTransaction identifier on service provider system. For e.g: GopayOrderId
finishedTimeStringOTransaction completed timestamp (for latestTranscationStatus = 00)
originalPartnerReferenceNoStringOOriginal transaction identifier on service consumer system. (Merchant’s orderId)
originalExternalIdString(36)OOriginal External-ID on header message when doing charge (/payment-host-to-host)
merchantIdStringOMerchant ID
amountObjectOTransaction amount
amount.valueStringMTransaction amount
amount.currencyStringMTransaction currency
additionalInfoObjectMAdditional info
additionalInfo.refundHistoryArray of ObjectCArray of refund transactions. Only available if transaction status is refund
additionalInfo.refundHistory.refundNoStringMUnique identifier of refund transaction generated by provider.
additionalInfo.refundHistory.refundStatusStringMRefund status. Possible values:
  • 00 --> Refund success
  • 06 --> Refund failed
additionalInfo.refundHistory.partnerRefundNoStringMUnique identifier of refund transaction generated by client.
additionalInfo.refundHistory.refundAmountObjectMRefund amount
additionalInfo.refundHistory.refundAmount.valueStringMNet 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.currencyStringMCurrency
additionalInfo.refundHistory.reasonStringMRefund reason
additionalInfo.refundHistory.refundTimeStringMRefund time
additionalInfo.totalRefundAmountObjectCTotal refund amount. Only available if transaction status is refund or partial refund.
additionalInfo.totalRefundAmount.valueStringMTotal 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.currencyStringMCurrency
additionalInfo.userPaymentDetailsArray of objectMPayment option used by user. This will be not available for deeplink redirection payment flow with pending status.
additionalInfo.userPaymentDetails.payMethodStringMPayment method used by user. E.g: gopay
additionalInfo.userPaymentDetails.payOptionStringMPayment 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 NameField TypeMandatoryField Description
Content-typeStringMMedia type of the resource, i.e. application/json
X-TIMESTAMPStringMClient’s current local time in ISO-8601 format
Content-type: application/json
X-TIMESTAMP: 2024-03-19T14:30:00+07:00

Response Body

Field NameField TypeMandatoryField Description
responseCodeString (7)MError code to specify the error returned.
responseMessageString (150)MDebug message to provide more information.
{
   "responseCode":"2005600",
   "responseMessage":"Request has been processed successfully"
}

Additional APIs

  1. Refund API
  2. Cancel API
  3. Get Transaction Status API
  4. Payment Notification API