> ## Documentation Index
> Fetch the complete documentation index at: https://doc.haipay.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Taiwan Payment Integration

> Taiwan Payment Integration covering Collection API, Collection Application, Collection Query, Payout API, Payout Application, Payout Query and Bank Codes.

> [!WARNING]
>
> **Before reading this API document, please make sure to check [**API Description Guide**](https://doc.haipay.net/en/history/V20260801/get-started/api-conventions.md)**

## **Limits**

| Transaction Type | Limit |
| :- | :- |
| Collection | USD: 0.99-499.99, TWD: 100-20000 |
| Payout | TWD: 1000-30000 |

> **Amount Decimal Places:** TWD — 0 decimal places (integer only) | USD — 2 decimal places

## **Collection API**

### **Collection Application**

**Brief Description:**

* Create a collection order

**URL:**

TWD: `/twd/collect/apply` Note: appId TWD, amount TWD, settlement TWD

USD: `/usd/collect/apply` Note: appId USD, amount USD, settlement USD

**Parameters:**

| Parameter Name | Required | Type | Description |
| :- | :- | :- | :- |
| appId | Yes | Long | Business ID (obtained from the backend, needs to pass the corresponding business ID according to the currency in the URL) |
| orderId | Yes | String | Merchant order number (must be unique, max length 48) |
| name | Yes | String | User’s full name. Recommended to use real name. Format: firstName and lastName separated by a space. Example: John Doe |
| phone | Yes | String | Real phone number |
| email | Yes | String | Real email |
| amount | Yes | String | Transaction amount. For TWD orders, decimals are not allowed |
| payType | Yes | String | Transaction type |
| inBankCode | Yes | String | [Payment method](#inBankCode) |
| callBackUrl | Yes | String | Redirect URL after successful payment |
| callBackFailUrl | Yes | String | Redirect URL after failed payment |
| cancelUrl | No | String | If provided, the payment page displays a Back button that redirects the user to this URL when clicked. |
| notifyUrl | No | String | Callback URL |
| subject | Yes | String | Payment note |
| body | No | String | Additional details |
| country | No | String | Required for cashier mode, fixed value: 158 |
| currency | No | String | Currency (default TWD; supported currencies: USD, TWD) |
| partnerUserId | Yes | String | Unique user identifier (e.g., userId). Used for risk control. Must be valid, otherwise it will affect the transaction. Allowed format: numbers, uppercase/lowercase letters, or common symbols -\~!@#\$%&\*()\_. |
| sign | Yes | String | Signature |

**Return data parameter description**

| Parameter Name | Type | Description |
| :- | :- | :- |
| orderId | String | Merchant order number (must be unique) |
| orderNo | String | Platform order number |
| payUrl | String | Payment link |
| sign | String | Signature |

### **Collection Query**

**Brief Description:**

* Query collection order

**URL:**

TWD: `/twd/collect/query`

USD: `/usd/collect/query`

**Parameters:**

| Parameter Name | Required | Type | Description |
| :- | :- | :- | :- |
| appId | Yes | Long | Business ID (obtained from the backend, needs to pass the corresponding business ID according to the currency in the URL) |
| orderId | Yes | String | Merchant order number |
| orderNo | No | String | Platform order number (faster response) |
| sign | Yes | String | Signature |

**Return data parameter description**

| Parameter Name | Type | Description |
| :- | :- | :- |
| orderId | String | Merchant order number (must be unique) |
| orderNo | String | Platform order number |
| amount | String | Transaction amount |
| actualAmount | String | Amount received |
| fee | String | Transaction fee |
| status | Integer | Status (0: Not started, 1: Processing, 2: Success (final), 3: Failed (final), 4: Partial received (final), 5: Over-received (final), -1: Exception pending confirmation) |
| payTime | String | Payment success time (available when status=2,4,5). Local time format: yyyy-MM-dd HH:mm:ss |
| errorMsg | String | Payment failure reason (available when status=3) |
| sign | String | Signature |

### **Payment Methods**

| Currency | Payment Type (payType) | Payment Code (inBankCode) | Limit | Status | Description |
| :- | :- | :- | :- | :- | :- |
| TWD | QR | JKO\_PAY\_QR | 30-20000 | Available | JkoPay QR |
| TWD | EWALLET | JKO\_PAY\_TWD | 30-20000 | Available | JKO Pay |
| TWD | BANK\_TRANSFER | ATM | 100-20000 | Available | ATM Cashier |
| TWD | BANK\_TRANSFER | STORE\_IBON | 100-20000 | Available | 7-11 Convenience Store |
| TWD | BANK\_TRANSFER | STORE\_HILIFEET | 100-20000 | Available | Hi-Life Life-ET |
| TWD | BANK\_TRANSFER | STORE\_OKGO | 100-20000 | Available | OK Mart OK-go |
| TWD | BANK\_TRANSFER | STORE\_FAMI | 100-20000 | Available | FamilyMart FamiPort |
| TWD | BANK\_TRANSFER | STORE\_MBC\_HILIFEET | 100-20000 | Available | Convenience store mobile QR scan (Hi-Life Life-ET) |
| TWD | BANK\_TRANSFER | EPOINT\_LINEPAY | 100-10000 | Available | LINEPAY |
| TWD | BANK\_TRANSFER | STORE\_MBC\_IBON | 100-20000 | Available | 7-11 Convenience store mobile QR scan |
| USD | EWALLET | JKO\_PAY | 0.99-499.99 | Available | JKO Pay |
| USD | BANK\_TRANSFER | LINE\_PAY\_USD | 2.99-499.99 | Available | Line Pay |
| USD | BANK\_TRANSFER | ATM\_USD | 32.99-499.99 | Available | ATM Cashier |
| USD | BANK\_TRANSFER | STORE\_IBON\_USD | 2.99-499.99 | Available | 7-11 Convenience Store |
| USD | BANK\_TRANSFER | STORE\_HILIFEET\_USD | 2.99-499.99 | Available | Hi-Life Life-ET |
| USD | BANK\_TRANSFER | STORE\_OKGO\_USD | 2.99-499.99 | Available | OK Mart OK-go |
| USD | BANK\_TRANSFER | STORE\_FAMI\_USD | 2.99-499.99 | Available | FamilyMart FamiPort |
| USD | BANK\_TRANSFER | STORE\_MBC\_HILIFEET\_USD | 2.99-499.99 | Available | Convenience store mobile QR scan (Hi-Life Life-ET) |
| USD | BANK\_TRANSFER | STORE\_MBC\_IBON\_USD | 2.99-499.99 | Available | Convenience store mobile QR scan (7-Eleven) |

## **Payout API**

### **Payout Application**

**Brief Description:**

* Create a payout order

**URL: `/twd/pay/apply`**

Note: appId TWD, amount TWD, settlement TWD

**Parameters:**

| Parameter Name | Required | Type | Description |
| :- | :- | :- | :- |
| appId | Yes | Long | Business ID (obtained from the backend, needs to pass the corresponding business ID according to the currency in the URL) |
| orderId | Yes | String | Merchant order number (must be unique, max length 48) |
| amount | Yes | String | Transaction amount (Unit: NT\$, integer only) |
| accountType | Yes | String | BANK\_ACCOUNT (bank account) |
| bankCode | Yes | String | Bank code, see [Bank Codes](#bank-codes) for details |
| accountNo | Yes | String | User's bank account number |
| name | Yes | String | Recipient's name (Format: Traditional Chinese and English are supported) |
| phone | No | String | Real phone number (format reference [Phone Number Format](https://doc.haipay.net/en/history/V20260801/resources/faq.md#en_faq_phone-number-format)) |
| email | No | String | Real email |
| notifyUrl | No | String | Callback URL |
| subject | No | String | Payment note (transaction title, product name, payment reason) |
| body | No | String | Additional details |
| partnerUserId | Yes | String | Unique user identifier (e.g., userId). Used for risk control. Must be valid, otherwise it will affect the transaction. Allowed format: numbers, uppercase/lowercase letters, or common symbols -\~!@#\$%&\*()\_. |
| branchCode | No | String | Optional. Required in some cases to ensure successful payment. |
| branchName | Yes | String | Used for payment verification. Empty value will block disbursement. |
| sign | Yes | String | Signature |

#####

request

```json theme={null}
{
    "appId": 1054,
    "orderId": "M100000450012",
    "amount": "55",
    "accountType": "BANK_ACCOUNT",
    "bankCode": "BANK_OF_TAIWAN",
    "accountNo": "99418029201a844099",
    "name": "Lin Chia-ling",
    "email": "lin.chialing@gmail.com",
    "subject": "Payment for services",
    "body": "Payment description",
    "partnerUserId": "USER_450921",
    "branchCode": "0037",
    "branchName": "館前分行",
    "sign": "I1PeK3eJEVsFFNowxVRqMXpeWa1lr/BcRpBi8SsW4wVo1+5AC1JsrFq/m/L3214NzKHvtDWi4zia3DL3dPut0yMyUyqL91LNCSaeISbGsQPlhEsQpyTOryS/RKOfsrn2Xo37SCF/phAvndOk2jwwGwqM5xLz1ms9Ukl85wv27QFNrXIMxK2p181e7MpMYrgf+xvEBE/VqCtKMtN9pO449wWwXzHWNPbZ76s4pAvKwRE9yXQDr7Iw14Dktcnl1FoLM4gWM/obkO+mz6SyAGDuXhVh/+OD/IGNiCyTCNq6ciQY28UnCFV6ZIP40gxsFhfBJKbK+Raw7y1Bh912ifYfug=="
}
```

response

```json theme={null}
{
    "status": "1",
    "error": "00000000",
    "msg": "",
    "data": {
        "orderId": "M1000245001F4",
        "orderNo": "3023022014149638",
        "sign": "LmhUnkw5j0pMiimsG6rKwdNNZGvX6GMpSmD1mdHZwq112wuK5BohmdEoqKB/jkMk28o3da4Cxh6Q+tW97+yTCemRrF+dMaHA73rpOeUuujKQl/UcFvJuMhfLBa2tp09L71NzoBqpPD6aXf37mYAz8E1HmERwFPpac5FVxIYanHG8cqmMLJYsVmHTSxWavgWU03ys9UczBePkBiR8sl2FSOhFABB0wAP28lswrV/ABS68IsLKtyd1fyI3GBfSbIK5nDEEnlE+EdElFdLs9taAxJImeVF1x4eT47+bkPJ2qS8z3K8QGzKLF3W+8SiRZGfSwDTsLKH+2Vycvy5auRl+ag=="
    }
}
```

**Return data parameter description**

| Parameter Name | Type | Description |
| :- | :- | :- |
| orderId | String | Merchant order number (must be unique) |
| orderNo | String | Platform order number |
| sign | String | Signature |

### **Payout Query**

**Brief Description:**

* Query payout order status

**URL: `/twd/pay/query`**

**Parameters:**

| Parameter Name | Required | Type | Description |
| :- | :- | :- | :- |
| appId | Yes | Long | Business ID (obtained from the backend, needs to pass the corresponding business ID according to the currency in the URL) |
| orderId | Yes | String | Merchant order number |
| orderNo | No | String | Platform order number (faster response) |
| sign | Yes | String | Signature |

request

```json theme={null}
{
    "appId": 1000,
    "orderId": "M1234567111",
    "orderNo": "3022111516571436",
    "sign": "ZxkVZL+GAyv0VhVWn4IvGYahTzxgQuthkuV2ONWiqIfIDb2avvHlFOUJVzqZi1q8CPHXZm1ltanRTRVTxfsuftLvGeDioUHglWt46/RU6c1OPznpLGsZ35Q3n5tW2y1EnOsxPynXBFLuDQy+aZ3l9u6AQ30T0zQexMGT+IxuFkmUp02g/6juaHa5ZgNMv7lN67ixIp162wrM7OJuaOif872QijSceRdZhzaMGImAwB0D4MosRV4WMBOKkwgPdmS7GuZN66YUidXk3wTGqX3MYRw6M0kj4eNegSUwPXvp4q4p0KO8Y3xUMld54GY2ApX3WN3CBtC/vpJqEszjGBbbGg=="
}
```

response — order failed

```json theme={null}
{
    "status": "1",
    "error": "00000000",
    "msg": "",
    "data": {
        "orderId": "M1234567111",
        "orderNo": "3022111516571436",
        "amount": "100000.00",
        "fee": "0.00",
        "status": 3,
        "errorMsg": "交易金額不合法",
        "sign": "KKuvCl0SuNANJs+l2ogAaJm8pmV+Hi+Xa7q27vJ6D1Ehs4aOp13kRbITfJAhczh3T81BE9qwHeJaYwf+r0EypKM9TL6pMwfG8Az4gRy1D57wiUaVjl2PWcvbEqrn1hL0b+btkjvAM9I+CcSv+wuOW3/uku17Ws3FhgJLj9sFsQUBAPjDO+758VnwBytCOLBmljLBXyKgNgpmFQ1/DNkqWl0UNzyLK45Zw3yf5NiwhEFbvW0jlOWlfu/ql4hluISUQG573jEoFCBEnQLb2tQoRZj1QYNRCXPf5lbej0vzqbEwvR9h+ZOf255t1MocJkdIe463DTV5U3KZdVT87HMagw=="
    }
}
```

response — order successful

```json theme={null}
{
    "status": "1",
    "error": "00000000",
    "msg": "",
    "data": {
        "orderId": "M1234567112",
        "orderNo": "3022111517401574",
        "amount": "100000.00",
        "fee": "1003.00",
        "status": 2,
        "payTime": "2024-03-01 23:59:59",
        "sign": "khPtOmGq+cpKX0HFAI/lbP0dx4oFyNAnL5oLsdmhDJdASlQm0yg5I3o+MhImYggEsL6c2bo5fP29t54OZFqSdQDfIuNDvGbAMAr4mRBxc0hoHLkBLyyagfVPBLyQA1JY8XV3ZL4ySzQ3ZQnMCfrh2K39ueUuz6HpZ03Hj0KYijVRCXAZaio/L5jfLBT12QXmvIfAHa8s/k9flhK05ENHPep3zjj/MZGOEaX7jkEJLfjK0duypDCa61BRQjM+oePOdVsgleIl1Yf98UAxMDZ/A3912KFHEb+/jvmdnulNbiJFyuT1fEe+j2teUgw3vFsZAtwNWAgxhC7UO+N0Q5z4EA=="
    }
}
```

**Return data parameter description**

| Parameter Name | Type | Description |
| :- | :- | :- |
| orderId | String | Merchant order number (must be unique) |
| orderNo | String | Platform order number |
| amount | String | Transaction amount |
| fee | String | Transaction fee |
| status | Integer | Order status (0: Not started, 1: Processing, 2: Success (final), 3: Failed (final), -1: Exception pending confirmation) |
| payTime | String | Payment success time (available when status=2) (UTC+8), format: yyyy-MM-dd HH:mm:ss |
| errorMsg | String | Payment failure reason (available when status=3) |
| sign | String | Signature |

### **Bank Codes**

| Currency | Payment Type (accountType) | Payment Code (bankCode) | Limit | Status | Description |
| :- | :- | :- | :- | :- | :- |
| TWD | BANK\_ACCOUNT | BANK\_OF\_TAIWAN | 1000-30000 | Available | Bank of Taiwan |
| TWD | BANK\_ACCOUNT | TAIPEI\_STAR\_BANK | 1000-30000 | Available | Taipei Star Bank |
| TWD | BANK\_ACCOUNT | HWATAI\_BANK | 1000-30000 | Available | Hwatai Bank |
| TWD | BANK\_ACCOUNT | SANXIN\_COMMERCIAL\_BANK | 1000-30000 | Available | Sanxin Commercial Bank |
| TWD | BANK\_ACCOUNT | O\_BANK | 1000-30000 | Available | O-Bank |
| TWD | BANK\_ACCOUNT | ENTIE\_COMMERCIAL\_BANK | 1000-30000 | Available | Entie Commercial Bank |
| TWD | BANK\_ACCOUNT | KINGS\_TOWN\_BANK | 1000-30000 | Available | King's Town Bank |
| TWD | BANK\_ACCOUNT | TAICHUNG\_COMMERCIAL\_BANK | 1000-30000 | Available | Taichung Commercial Bank |
| TWD | BANK\_ACCOUNT | BANK\_OF\_PANHSIN | 1000-30000 | Available | Bank of Panhsin |
| TWD | BANK\_ACCOUNT | SUNNY\_BANK | 1000-30000 | Available | Sunny Bank |
| TWD | BANK\_ACCOUNT | UNION\_BANK\_OF\_TAIWAN | 1000-30000 | Available | Union Bank of Taiwan |
| TWD | BANK\_ACCOUNT | KGI\_BANK | 1000-30000 | Available | KGI Bank |
| TWD | BANK\_ACCOUNT | FAR\_EASTERN\_INTERNATIONAL\_BANK | 1000-30000 | Available | Far Eastern International Bank |
| TWD | BANK\_ACCOUNT | THE\_SHANGHAI\_COMMERCIAL\_AND\_SAVINGS\_BANK | 1000-30000 | Available | The Shanghai Commercial & Savings Bank |
| TWD | BANK\_ACCOUNT | YUANTA\_COMMERCIAL\_BANK | 1000-30000 | Available | Yuanta Commercial Bank |
| TWD | BANK\_ACCOUNT | SHIN\_KONG\_COMMERCIAL\_BANK | 1000-30000 | Available | Shin Kong Commercial Bank |
| TWD | BANK\_ACCOUNT | TAISHIN\_INTERNATIONAL\_BANK | 1000-30000 | Available | Taishin International Bank |
| TWD | BANK\_ACCOUNT | BANK\_SINOPAC | 1000-30000 | Available | Bank Sinopac |
| TWD | BANK\_ACCOUNT | E\_SUN\_COMMERCIAL\_BANK | 1000-30000 | Available | E.SUN Commercial Bank |
| TWD | BANK\_ACCOUNT | CTBC\_BANK | 1000-30000 | Available | CTBC Bank |
| TWD | BANK\_ACCOUNT | CATHAY\_UNITED\_BANK | 1000-30000 | Available | Cathay United Bank |
| TWD | BANK\_ACCOUNT | TAIPEI\_FUBON\_COMMERCIAL\_BANK | 1000-30000 | Available | Taipei Fubon Commercial Bank |
| TWD | BANK\_ACCOUNT | BANK\_OF\_KAOHSIUNG | 1000-30000 | Available | Bank of Kaohsiung |
| TWD | BANK\_ACCOUNT | TAIWAN\_BUSINESS\_BANK | 1000-30000 | Available | Taiwan Business Bank |
| TWD | BANK\_ACCOUNT | CHUNGHWA\_POST\_CO\_LTD | 1000-30000 | Available | Chunghwa Post Co., Ltd. |
| TWD | BANK\_ACCOUNT | MEGA\_INTERNATIONAL\_COMMERCIAL\_BANK | 1000-30000 | Available | Mega International Commercial Bank |
| TWD | BANK\_ACCOUNT | CHANG\_HWA\_BANK | 1000-30000 | Available | Chang Hwa Bank |
| TWD | BANK\_ACCOUNT | HUA\_NAN\_COMMERCIAL\_BANK | 1000-30000 | Available | Hua Nan Commercial Bank |
| TWD | BANK\_ACCOUNT | FIRST\_COMMERCIAL\_BANK | 1000-30000 | Available | First Commercial Bank |
| TWD | BANK\_ACCOUNT | TAIWAN\_COOPERATIVE\_BANK | 1000-30000 | Available | Taiwan Cooperative Bank |
| TWD | BANK\_ACCOUNT | LAND\_BANK\_OF\_TAIWAN | 1000-30000 | Available | Land Bank of Taiwan |

> [!WARNING]
>
> **Important Notes:**
>
> * When calling the payout API, please use the corresponding bank name as the `bankCode` parameter value

## Related Topics

* [Common API](https://doc.haipay.net/docs/en/api/version2/CommonApi.md)
* [HaiPay API Description and Common Rules](https://doc.haipay.net/en/history/V20260801/get-started/api-conventions.md)
* [Japan Payment API](https://doc.haipay.net/en/history/V20260801/payments/local/japan.md)
* [Taiwan — TWD Collection Application (POST /twd/collect/apply)](https://doc.haipay.net/en/history/V20260801/api-reference/twd/collect-apply.md)
* [Taiwan — TWD Collection Query (POST /twd/collect/query)](https://doc.haipay.net/en/history/V20260801/api-reference/twd/api/collectQuery.md)
* [Taiwan — TWD Disbursement Application (POST /twd/pay/apply)](https://doc.haipay.net/en/history/V20260801/api-reference/twd/pay-apply.md)
* [Taiwan — TWD Disbursement Query (POST /twd/pay/query)](https://doc.haipay.net/en/history/V20260801/api-reference/twd/pay-query.md)
* [Handle Asynchronous Notifications and Verify Signatures](https://doc.haipay.net/en/history/V20260801/operations/callback.md)
* [Test Order Status Changes and Notifications End to End](https://doc.haipay.net/en/history/V20260801/testing/end-to-end.md)
* [Look Up Collection Payment Types and Codes (payType)](https://doc.haipay.net/en/history/V20260801/resources/cashin-code-list.md)
* [Look Up Disbursement Account Types and Bank Codes](https://doc.haipay.net/en/history/V20260801/resources/cashout-code-list.md)
* [HaiPay local payment methods product page](https://www.haipay.net/products/local-payment)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.