Skip to main content
Before reading this API documentation, be sure to review the API Description Guide
  • For credit card transactions, consumers maintain the right to initiate a dispute within 180 days of the charge date. When a dispute is filed, a dispute fee of $20 will be assessed per transaction.
  • Upon receiving a dispute notification, you have two options for response
    • First: you may accept the dispute by submitting a response to the issuing bank affirming that you do not contest the refunded amount.
    • Second, you may counter the dispute by completing a guided submission process that prompts you to provide relevant evidence and supporting documentation for your case.
  • Should you elect to counter a dispute, an additional dispute countered fee of $20 will be applied. In the event that the issuing bank does not accept your counter materials and rules in favor of the consumer, both the dispute countered fee will be deducted and the consumer’s payment will be refunded to them.
  • Regarding fee refunds, Haipay will return the dispute countered fee if you successfully win the dispute. However, unless explicitly stated otherwise in your Haipay contract, the initial dispute fee is non-refundable under all circumstances.
  1. PCI Compliance: Direct violation of PCI DSS requirements
  2. Security Risks: WebView and iframe may not provide sufficient security isolation
  3. Man-in-the-Middle Attacks: Malicious applications may intercept or tamper with payment data
  4. Phishing Risks: Cannot ensure users are entering sensitive information in a trusted environment

Region Restrictions

Please check the unsupported regions list to confirm your target market availability.

Transaction Limits

Transaction TypeLimit (USD)
Collection0.99-1000

Collection API

Collection Apply

Description:
  • Create a collection order
URL: USD: /usd/collect/apply Description: Use the appId corresponding to USD. After successful payment, the user’s USD balance increases. Parameters:
ParameterRequiredTypeDescription
appIdYesLongBusiness ID (obtained from the dashboard; use the one corresponding to the currency in the URL)
orderIdYesStringMerchant order number (must be unique, max 48 characters)
nameNoStringUser name; real name recommended. Format: firstName and lastName separated by space. Example: John Doe
phoneYesStringReal phone number (format reference: phone number format)
emailNoStringReal email address
amountYesStringTransaction amount (2 decimal places; no punctuation such as ”,“)
payTypeYesString[Payment type](/docs/en/V20260628/api/version2/creditcard-mit#Payment methods)
inBankCodeYesString[Payment code](/docs/en/V20260628/api/version2/creditcard-mit#Payment methods)
clientIpNoStringClient IP address
callBackUrlYesStringRedirect URL after successful payment
callBackFailUrlYesStringRedirect URL after failed payment
notifyUrlNoStringCallback URL
subjectYesStringPayment remark
bodyNoStringRemark details
partnerUserIdYesStringUnique user identifier (e.g. userId) for risk control. Must be real and valid. Format: digits, letters, or common symbols -~!@#$%&*()_.
signYesStringSignature
Request Example
{
  "appId": 1054,
  "orderId": "M233323000059",
  "amount": "300",
  "phone": "09230219312",
  "email": "23423@qq.com",
  "name": "test",
  "inBankCode": "USA",
  "payType": "BANK_TRANSFER",
  "partnerUserId": "149597870",
  "sign": "af0gAHkUOyYHu9owQp8NJ4mPEeUW4vuJcjdxqLIzrVw8AvpLSjD1DXupReSG/CyuSkFRyiIvCp5u703AuGGmfgD2gKDH3Ywau41bAbG2jnHJ8mtjiSJ5iWUzanyd4Kr7d1+rETbzUl7/BkW3t0X8UUFdqpxwG8DPUjAwUKfplWDHV7koG51Ozexd80DCsmW6eWdouAZ1uNXGLYmV3ftE3BmfNRtuv1C5bfTJWrTEIOxbF6g2uYOFZTlIgrQgd7/2PsAYwQQXNz8Q8CYl4OxqCv4pXJxaLWPbR5tqZu9og5kn32C9aHW/NlU1y39vzz+4ef81yPAqUV9oHlSMSPrMmw=="
}
Response Example
{
  "status": "1",
  "error": "00000000",
  "msg": "",
  "data": {
    "orderId": "M233323000059",
    "orderNo": "6023071013539074",
    "payUrl": "",
    "clientToken": "",
    "sign": "YEoA8Y2JzQFGVzwJSqmemm1Kfv/bfyIfCqv2dp7RNzT5B72AQvdD+nt2nR4sL1HWscvmNHyVt5ovAi7MMhy3ziih/sMph+wPx4YjH3W1h5DyBvSlWvaKfKrK5ViomZ0pPYWydwRHnnRnicxToHK9S6qtSy7Q73O0hdz4hJ9p41Th3ycBl2Q9SeqSZYSY1ohcPDhdyRf2y0prb8rHgpBKzxZ5BKX/1bsE9OmsSEHAEYT8OGgko6aNe8XPAhr4G48cpWTftvnGQuzh0O65nuZRI/PF+Axt2zJCVbFHDDSREI9NlAT82ebDqhlVdxQzKE67D1nxgjb3dPmDUYHOBpmwxQ=="
  }
}
Response data parameters
ParameterTypeDescription
orderIdStringMerchant order number (must be unique)
orderNoStringPlatform order number
payUrlStringPayment URL
bankCodeStringPayment code
clientTokenStringClient token for use in the Front-End Component (see Front-End Component)
signStringSignature

Collection Query

Description:
  • Query a collection order
URL: USD: /usd/collect/query Parameters:
ParameterRequiredTypeDescription
appIdYesLongBusiness ID (obtained from the dashboard; use the one corresponding to the currency in the URL)
orderIdYesStringMerchant order number
orderNoNoStringPlatform order number (faster response)
signYesStringSignature
Request Example
{
  "appId": 1054,
  "orderId": "M22222000028",
  "sign": "EmyJGm3ELzG4FsOd0Krs9ncbSjo4oTGuXWML+7djYla3+VAwd9wS17z38p/7U2ZAjroO04XrE7YXcB1o76Dtyipj3h3bJzs7FYma1QNkMUdt9hh7m8U6hMsMQX7vIWHtXNwz4pbTSC75+kQWXaCew7KoE6LXECdJU8AISgNgeki2TK9R0pCfshr0Z2SZBPeuT6OvIH5LdmqgdZhuqnffGU2qnXk4KMkO848e6/WALLBR+LE1wyKHfPnYVcuKSMVYxkvKyyIL5JIPEgW0o5bh4RCbaUn3NZtyYwrU1uQ3ZDFRThm9j6XAQP+LBlmq3nOePqBtp/VDVarRaV+7FbQg3A=="
}
Response Example
{
  "status": "1",
  "error": "00000000",
  "msg": "",
  "data": {
    "orderId": "M22222000028",
    "orderNo": "6023042811314347",
    "amount": "50.00",
    "actualAmount": "0.00",
    "fee": "0.00",
    "status": 1,
    "sign": "fP433ygWVDLVGxYkVnIJj7riGq0U3vyVX+MbBAImxfGLZkZcEAHVEoVYuULZSmXAAXKRSyd67WlDNm+24pougM54ofAoH4HMtCL2tfCoBReFyz3z02AGKkrKE2xWhSpWoqfQoBvzwuN5iGMMu0s9Q1YvqiwJ8WDVIENnmiIyD8qDJN7caHTW2US14/faG+69AvnuIgJ/nu7/jogOlgEYdZdVYU7gcRDE+d47KjlFGswQkJ/h/uzV7cWtUqrtOO7ZnZ3/z33Xx8awokX36QoYcPSWAU0h+Ij9O9402HNhm1eTbYcLU0uI/z8xCAtyAI/tTyiFijpiNlxUKQj+zKsILw=="
  }
}
Response data parameters
ParameterTypeDescription
orderIdStringMerchant order number (must be unique)
orderNoStringPlatform order number
amountStringTransaction amount
actualAmountStringActual amount received
feeStringFee
statusIntegerStatus (0: not started, 1: paying, 2: success (final), 3: failed (final), -1: exception pending confirmation)
payTimeStringPayment success time (available when status=2), local time, format: yyyy-MM-dd HH:mm:ss
errorMsgStringPayment failure reason (available when status=3)
signStringSignature

Refund Apply

Description:
  • Initiate a refund for the original credit card transaction. Note that the synchronously returned refund status should be confirmed via the query API.
URL: USD: /usd/refund/apply Parameters:
ParameterRequiredTypeDescription
appIdYesLongBusiness ID (obtained from the dashboard; use the one corresponding to the currency in the URL)
orderIdYesStringMerchant refund order number (new merchant order number; cannot reuse the original collection order number)
orderNoYesStringPlatform order number (Platform order number from original collection)
refundAmountNoStringOptional; if omitted, full refund is applied
signYesStringSignature
Response data parameters
ParameterTypeDescription
appIdStringBusiness ID
orderNoStringPlatform order number (Platform order number from original collection)
orderIdStringMerchant refund order number
refundNoStringPlatform refund number for this request
statusStringRefund status: 1 = success, 0 = processing, 2 = failed. Normally returns processing initially; use query API to check status.
errorMsgStringError message (may not always be present)
signStringSignature

Refund Query

Description:
  • Query the result of a refund request.
URL: USD: /usd/refund/refundQuery Parameters:
ParameterRequiredTypeDescription
appIdYesLongBusiness ID (obtained from the dashboard; use the one corresponding to the currency in the URL)
orderIdNoStringMerchant refund order number
refundNoNoStringPlatform refund number (returned from refund apply; prefer this field for queries if available)
signYesStringSignature
Response data parameters
ParameterTypeDescription
appIdStringBusiness ID
orderNoStringPlatform order number (Platform order number from original collection)
orderIdStringMerchant order number
refundNoStringPlatform refund number
statusStringRefund status: 1 = success, 0 = processing, 2 = failed. Use this status as the final result.
errorMsgStringError message (may not always be present)
refundAmountStringRefund amount
signStringSignature

5.Payment methods

CurrencyPayment Type (payType)Payment Code (inBankCode)LimitStatusDescription
USDBANK_TRANSFERCREDIT_CARD0.99-1000AvailableVISA
USDBANK_TRANSFERCREDIT_CARD0.99-1000AvailableMasterCard
USDBANK_TRANSFERCREDIT_CARD0.99-1000AvailableJCB
USDEWALLETGOOGLE_PAY0.99-1000AvailableGoogle Pay
USDEWALLETAPPLE_PAY0.99-1000AvailableApple Pay

6. Test Card Numbers

For test card numbers, see Test Card Numbers, covering successful payments, declines, and dispute scenarios.
Last modified on July 9, 2026