GoPay (by GoJek - Indonesia)

Integrate GoPay and allow merchants to accept payments from consumers in Indonesia.

Payment Method Properties

Available country codesID
Processing (Presentation) currenciesIDR
Settlement currenciesUSD
Consumer currenciesIDR
Channel member taggopay
Scheme name in the settlement fileGoPay
Minimum transaction amountIDR 1.00
Maximum transaction amountGoPay wallet: Non-KYC user: IDR 2,000,000 per transaction KYC’ed user: IDR 20,000,000 per transaction GoPayLater: Limit available for each user differs, based on the user’s spending and repayment history. The maximum possible is IDR 3 million. KYC = Know Your Customer - a verification process.
Session timeout1 hour
RefundFull, partial and multiple partial reunds are all available.
Refund Validity30 days
Integration TypeAsynchronous

Transaction Flow

  1. Consumer conducts the checkout process on merchant's site
  2. The merchant/PSP sends the Transaction request to PPRO
  3. A Charge Request is sent to GoPay
  4. A Charge Response is returned along with the GoJek app deeplink URL
  5. A Redirect URL is built and sent to merchant/PSP
  6. Merchant forwards the GoPay deeplink redirect URL to consumer's mobile browser
  7. Consumer is taken to the GoPay deeplink URL
  8. Consumer is shown the PIN entry and confirmation screen
  9. Consumer confirms payment
  10. GoPay apps shows success screen to consumer
  11. GoPay notifies PPRO of the transaction result
  12. PPRO acknowledges GoPay’s notification
  13. A notification is sent to the PSP informing of a status update
  14. If the transaction status is not known, PPRO sends a Check Status call to GoPay
  15. GoPay returns the result

GoPay Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeRegexDescription
specin.deeplinkcallbackurlOstringValid URLNeeded if the merchant wants to support a deeplink callback to redirect the consumer back to the merchant app.
specin.emailOstringRFC-Compliant EmailRFC-compliant email of the shopper.
specin.phoneOStringsee descriptionThere is no strict regex on the phone, however it must be inclusive of the + symbol and the country code of the shopper.
specin.billingaddrfirstnameOString.{0,255}Customer's first name.

Note that this value is not automatically derived from the accountholdername API field).
specin.billingaddrlastnameOString.{0,255}Customer's last name

Note that this value is not automatically derived from the accountholdername API field).
specin.billingphoneOString.{0,255}Customer's billing phone number (if differing from the value of
specin.billingaddrline1OString.{0,255}Customer's billing address - if multiple lines, concatenate as a single long string.
specin.billingaddrcityOString.{0,255}Customer's billing city.
specin.billingaddrpostalcdeOString.{0,255}Postal code of the billing address. Note: Format is alpha-numeric, accepts “-” and space.
specin.billingcntrycdeOString.{2}Country code of the billing address (e.g. ID). Format follows ISO 3166-1 alpha-2.
specin.shippingaddrfirstnameOString.{0,255}Shipping address first name.
specin.shippingaddrlastnameOString.{0,255}Shipping address last name.
specin.shippingphoneOString.{0,255}Shipping recipient's phone number.
specin.shippingaddrline1OString.{0,255}Shipping address - if multiple lines, concatenate as a single long string.
specin.shippingaddrcityOString.{0,255}Shipping city.
specin.shippingaddrpostalcdeOString.{0,255}Shipping postal code.

Note: Format is alpha-numeric, accepts “-” and space.
specin.shippingcntrycdeOString.{0,255}Country code of the shipping address (e.g. ID). Format follows ISO 3166-1 alpha-2.

For standard input parameters, see Input parameters for the TRANSACTION call.

This payment method supports the dynamic descriptor field (see The dynamic descriptor).

TRANSIENTIN parameters

Transientin ParameterM/OTypeRegExDescription
transientin.orderitemsMstring.*A list of items in the customer’s cart that is being purchased.

Format: A serialized JSON array containing item objects Each item object contains the following fields:

name - Name of the item price - Price of the item. (Note: In major units and the cents must be in 00) Sum of item amounts, each multiplied by its quantity (next field) must equal to the amount on the order. quantity - Quantity of item bought, in integer

For example: [{"name":"table","price":"2000.00","quantity":2},{"name":"Laptop 2.0","price":"3000.00","quantity":2}]

In the above example, there are two items in the basket as shown below.

- Item 1 Name: table Unit price: 2000.00 Quantity: 2
- Item 2 Name: Laptop 2.0 Unit price: 3000.00 Quantity: 2

Since the total cost of all items is 1000000 (Note: In minor units), the transaction amount must be 1000000 (Note: In minor units).

Please ensure that the total cost of all items equals to the transaction amount.

Specific output parameters for the TRANSACTION call

For standard output parameters, see Output parameters for the TRANSACTION call.

TRANSACTION call input

A minimal payload for GoPay follows:


TRANSACTION call output


Additional Information

GoPay offers two payment flows depending on the device used by the consumer:

  • Computer or tablet
  • Smartphone or mobile phone

If a computer or tablet is used, a QR code appears and the consumer is asked to scan the QR code using the GoJek app.

If a smartphone or mobile phone is used, the consumer is redirected to the GoJek-GoPay app through a deeplink to confirm the payment/order details. PPRO’s current integration supports the mobile deeplink flow. This is where the consumer browses the merchant store on their mobile phone, selects GoPay and is redirected to the GoPay-GoJek app. The QR code flow is currently not supported.