E-Wallet Integration Guidelines - Cambodia
This document specifies the protocols operated between Airpay PLATFORM and the content provider or merchant system.
This document is intended for merchants who want to integrate Indonesian eWallet payments through an API provided by Airpay.
This integration allows you to accept payments from multiple Cambodian digital wallets using a standardized and efficient process.
This integration is a solution that simplifies the process of integrating multiple eWallets into a single unified API. With this approach, merchants or partners only need to integrate with one standardized endpoint, without having to deal with the technical differences of each eWallet provider.
This is the supported payment method can used in Cambodia
| Name | Type | Description |
|---|---|---|
| KHQR | National QR Payment Standard | The Cambodian national QR payment system, developed by the National Bank of Cambodia (NBC). It allows interoperability among banks and eWallets |
This API will be used to merchants who want to integrate to ewallet in Indonesia using the payment KHQR.
Sample request:
https://xxx.xxxxxx.xxxx/api/v1/ext/KH/KHQR/games/ewallet/request
Sample header:
apikey: 2611263d-2406-489c-9042-abcsd76f9b
Error Response List:
| Error Code | Error Message |
|---|---|
| 400 | Bad request |
| 500 | Internal system error |
| 900 | Invalid signature |
| 901 | Invalid token |
| 902 | Token expired |
| 903 | Invalid channel |
| 904 | Invalid telco |
| 905 | Invalid service id |
| 906 | Invalid msisdn |
| 907 | Invalid OTP |
| 9071 | Invalid OTP key, not found or expired |
| 9072 | Invalid OTP value or not found |
| 908 | Channel not active |
| 909 | Telco not active |
| 910 | Service id not active |
| 911 | Duplicate trxid |
| 912 | Invalid Source or source may not register to this service |
| country required | string <= 50 characters Country Name |
| channel required | string <= 50 characters Channel type Ex. (Dana, astrapay, ovo, shopeepay, linkaja) |
| service_ewallet required | string <= 50 characters Service name |
| apikey required | string <= 50 characters Api Key |
| name required | string <= 50 characters User name |
| email required | string <= 50 characters User email |
| msisdn required | string <= 50 characters User msisdn |
| number | string <= 50 characters Order number if needed |
| amount required | string <= 50 characters Service amount |
| description required | string <= 50 characters Description text |
| currency required | string <= 50 characters Currency type (Ex. IDR, USD etc) |
| payment_method required | string <= 50 characters Payment method. Required: INVOICE |
| trxid | string <= 50 characters Transaction ID |
| clickid required | string <= 50 characters Click ID |
| pubid required | string <= 50 characters Publisher ID |
| return_url required | string <= 50 characters The return url after success payment |
{- "name": "John Doe",
- "email": "john.doe@example.com",
- "msisdn": "628123456789",
- "number": "ORD123456789",
- "amount": "10000",
- "description": "Payment for service",
- "currency": "IDR",
- "payment_method": "INVOICE",
- "trxid": "TRX123456789",
- "clickid": "CLICK123456",
- "pubid": "PUB123456",
}{- "code": 200,
- "message": "success",
- "data": {
- "trxid": "LINKIT25061750660948",
- "trx_date": "2025-06-23 06:42:27 UTC",
}
}Postback URL: Reply URL at CP Server (If Applicable) for Receiving postback
Example. 1 ) http://partner.com/callback
Note: Each merchant must provide only one postback URL. The furnished URLs should be intended for production purposes.
We expected the merchant to send a response “OK” when we successfully hit your postback
Sample:
Hit:https://domain/callback?trx_id=LINKIT25112222229&trx_date=2025-10-27T15:04:11+07:00&status=1&status_desc=Success, Response: OK, Status: 200 OK, Status Code: 200
Whenever users initiate an Postback request from their mobile phone, the Messaging Platform will forward the request to the content provider's URL using GET method.
Sample:
https://domain/callback?trx_id=LINKIT25112222229&trx_date=2025-10-27T15:04:11+07:00&status=1&status_desc=Success, Response: OK, Status: 200 OK, Status Code: 200
Status code list:
| Error Code | Description | Note |
|---|---|---|
| 0 | FAILED | |
| 1 | SUCCESS | |
| 2 | UNKNOWN REASON |
| trxid required | string <= 150 characters Transaction ID from LINKIT360 |
| trx_date required | string <= 150 characters Transaction Date format YYYY-MM-DDTHH:MM:SS±HH:MM |
| status required | string <= 50 characters Status response |
| status_desc required | string <= 50 characters Status description |