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