Introduction

iPay88 is a payment company that offers e-commerce, retail, online banking, e-wallets solutions and more to its merchants.
iPay88 offers merchants comprehensive online payment options such as credit/debit cards, bank transfers and alternative online payments. The payment process uses a redirect approach, customers will be redirected to a secure iPay88 page where they will make a payment and then be returned to your store.


Supported Countries

  • Indonesia ๐Ÿ‡ฎ๐Ÿ‡ฉ
  • Thailand ๐Ÿ‡น๐Ÿ‡ญ

Available Payment Methods

Payment TypePayment Method KeyCurrencyStatusSandbox Availability
Ovo WalletIPAY88_OVOIDRโœ…โŒ
Dana WalletIPAY88_DANAIDRโœ…โœ…
LinkAja WalletIPAY88_LINKAJAIDRโœ…โŒ
ShopeePay WalletIPAY88_SHOPEEPAYIDRโœ…โŒ
Maybank Virtual AccountIPAY88_MAYBANK_VAIDRโœ…โœ…
Permata Virtual AccountIPAY88_PERMATA_VAIDRโœ…โœ…
Mandiri Virtual AccountIPAY88_MANDIRI_ATMIDRโœ…โœ…
AkulakuIPAY88_AKULAKUIDRโœ…โŒ
GPNIPAY88_GPNIDRโœ…โŒ
Nobubank QRIPAY88_NOBUBANK_QRIDRโœ…โŒ
ShopeePay QRIPAY88_SHOPEEPAY_QRIDRโœ…โŒ
Credit CardsIPAY88_CREDIT_CARDTHBโœ…โœ…
KBankIPAY88_KBANKTHBโœ…โŒ
SCB BankIPAY88_SCBTHBโœ…โŒ
BAY BankIPAY88_BAYTHBโœ…โŒ
BBL BankIPAY88_BBLTHBโœ…โŒ
PromptPayIPAY88_PROMPT_PAYTHBโœ…โŒ
Rabbit LinePay WalletIPAY88_RABBIT_LINE_PAYTHBโœ…โœ…
ShopeePay WalletIPAY88_SHOPEEPAY_JUMPAPPTHBโœ…โŒ
TrueMoney WalletIPAY88_TRUE_MONEYTHBโœ…โŒ

Miscellaneous Details

Indonesia
  • Merchant needs to register Referer Domain https://portone.io/ with iPay88
  • Amount in Decimal value not supported for IDR currency
  • Description is mandatory
  • In Order details following fields are mandatory:
    • Id
    • Name
    • Quantity
    • Price
  • In Billing details and Shipping details following fields are mandatory:
    • Name
    • Surname
    • Phone
    • Email
    • Address - Line 1
    • Address - City
    • Address - State
    • Address - Postal Code
    • Address - Country Code

Thailand
  • Description is mandatory
  • In Billing details following fields are mandatory:
    • Name
    • Phone
    • Email

Sandbox

Use following values in embedded JS code to pay via iPay88 channel

    "pmt_channel": "IPAY88",
    "pmt_method": { Any of above given payment method keys },

Credentials

countrymerchantCodemerchantKey
IndonesiaID01829pNaUOCSyP4
ThailandTH000104SLxHL1j2Y

Test card data for Thailand Credit Card payment method

TypeCard numberNameValid throughCVV/OTP
Credit Card4000 0000 0000 0002TEST CARD12/22123

Test Phone details for Dana wallet

Mobile NumberSMSPassword
812202020208888082020

Test Virtual Account ATM Simulator

ATM Simulator


Sample payload for initiatePayment

{
    "key": {portone_key},
    "merchant_order_id": {merchant_order_id},
    "amount": 40000,
    "currency": "IDR",
    "signature_hash": {signature_hash},
    "billing_details": {
        "billing_name": "Test Customer",
        "billing_surname":"Something",
        "billing_email": "[email protected]",
        "billing_phone": "+7467345493",
        "billing_address": {
            "city": "Jakarta",
            "country_code": "ID",
            "locale": "vi",
            "line_1":"Address line 1",
            "line_2":"Address line 2",
            "postal_code": "400202",
            "state": "Mah",
            "country_name":"Indonesia"
        }
    },
    "shipping_details": {
        "shipping_name": "Test Customer",
        "shipping_surname":"Something",
        "shipping_email": "[email protected]",
        "shipping_phone": "+4875867484",
        "shipping_address": {
            "city": "abc",
            "country_code": "ID",
            "locale": "vn",
            "line_1": "address_1",
            "line_2": "address_2",
            "postal_code": "400202",
            "state": "Bac Giang"
        }
    },
    "order_details": [
        {
            "id": "1",
            "name": "abc",
            "quantity": 1,
            "price": 40000
        }
    ],
    "success_url": "https://dev-checkout.portone.cloud/success.html",
    "failure_url": "https://dev-checkout.portone.cloud/failure.html",
    "pmt_channel": "IPAY88",
    "pmt_method": { Any of above given payment method keys },
    "description":"Payment for the order #42140324",
    "environment":"sandbox"
}

Sample payload for paymentLink

{
    "portone_key": {portone_key},
    "merchant_details": {
        "name": "Test company",
        "back_url": "https://dev-admin.portone.io",
        "promo_code": "NA",
        "promo_discount": 0,
        "shipping_charges": 0
    },
    "signature_hash": {signature_hash},
    "amount": 20000,
    "currency": "IDR",
    "country_code": "ID",
    "merchant_order_id": {merchant_order_id},
    "billing_details": {
        "billing_name": "Test Customer",
        "billing_surname":"Something",
        "billing_email": "[email protected]",
        "billing_phone": "+4534283293",
        "billing_address": {
            "city": "Jakarta",
            "country_code": "ID",
            "locale": "vi",
            "line_1":"Address line 1",
            "line_2":"Address line 2",
            "postal_code": "400202",
            "state": "Mah",
            "country_name":"Indonesia"
        }
    },
    "shipping_details": {
        "shipping_name": "Test Customer",
        "shipping_surname":"Something",
        "shipping_email": "[email protected]",
        "shipping_phone": "+5454934232",
        "shipping_address": {
            "city": "abc",
            "country_code": "ID",
            "locale": "vi",
            "line_1": "address_1",
            "line_2": "address_2",
            "postal_code": "400202",
            "state": "Bac Giang"
        }
    },
    "success_url": "https://dev-checkout.portone.cloud/success.html",
    "failure_url": "https://dev-checkout.portone.cloud/failure.html",
    "expiry_hours": 48,
    "source": "api",
    "description": "Payment for the order #42140324",
    "show_shipping_details": false,
    "show_back_button": true,
    "default_guest_checkout": false,
    "is_checkout_embed": false,
    "environment": "sandbox",
    "order_details": [
        {
            "id": "1",
            "name": "abc",
            "quantity": 2,
            "price": 10000
        }
    ]
}

Sample additional data response for initiatePayment (Thailand)

{
"additional_data": {
        "Amount": "40000.00",
        "BackendURL": "https://api.portone.cloud/webhook/ipay88/"{portone_key}"?country=TH",
        "Currency": "THB",
        "MerchantCode": {Merchant_code},
        "PaymentId": 82,
        "PostingURL": "https://sandbox.ipay88.co.th/epayment/entry.asp",
        "ProdDesc": "Payment for the order #42140324",
        "RefNo": {Order_ref},
        "ResponseURL": "https://api.portone.cloud/api/handleShopperRedirect/IPAY88?country=TH",
        "Signature": "5506cd211a6ac76cca90ab385057fdb70a287c2f434c3ae9f3bd5a9ca1822d68",
        "SignatureType": "SHA256",
        "UserContact": "+7467345493",
        "UserEmail": "[email protected]",
        "UserName": "Firstname Surname"
    }
}

Payment Redirect (Thailand)

In the response of initiatePayment API with additional data but no redirect URl or deep link, then the merchants needs to submit the form using form method post.

Payment Redirect Sample
<FORM method="post" name="ePayment" action={PostingURL}>
    <INPUT type="hidden" name="MerchantCode" value={MerchantCode}>
    <INPUT type="hidden" name="PaymentId" value={PaymentId}>
    <INPUT type="hidden" name="RefNo" value={RefNo}>
    <INPUT type="hidden" name="Amount" value={Amount}>
    <INPUT type="hidden" name="Currency" value={Currency}>
    <INPUT type="hidden" name="ProdDesc" value={ProdDesc}>
    <INPUT type="hidden" name="UserName" value={UserName}>
    <INPUT type="hidden" name="UserEmail" value={UserEmail}>
    <INPUT type="hidden" name="UserContact" value={UserContact}>
    <INPUT type="hidden" name="Remark" value="">
    <INPUT type="hidden" name="Lang" value="ISO-8859-1">
    <INPUT type="hidden" name="SignatureType" value={SignatureType}>
    <INPUT type="hidden" name="Signature" value={Signature}>
    <INPUT type="hidden" name="ResponseURL" value={ResponseURL}>
    <INPUT type="hidden" name="BackendURL" value={BackendURL}>
    <INPUT type="submit" value="Proceed with Payment" name="Submit">
</FORM>

Sample additional data response for initiatePayment (Indonesia)

{
"additional_data": {
        "CheckoutID": "7758028124035bd7baaa33b8d5a3b11803c8b0997a5d2a733affce6f1504f729",
        "Code": "1",
        "PostingURL": "https://sandbox.ipay88.co.id/PG/",
        "RefNo": {Order_ref},
        "Signature": "aa5134dee1343cfaec465f6134d4ce2b57fd92db5ea1cdb7e5321ee007b7d263"
    }
}

Payment Redirect (Indonesia)

In the response of initiatePayment API with additional data but no redirect URl or deep link, then the merchants needs to submit the form using form method post.

Payment Redirect Sample
<form method="POST" name="redirect" action={PostingURL}>
<input type="hidden" name="CheckoutID" value={CheckoutID} />
<input type="hidden" name="Signature" value={Signature} />
</form>
<script language=javascript>
document.redirect.submit();
</script>

Reference links