Introduction
🤖 Using AI to write your integration code?
Download
llms-full.md— a single-file reference (~50 KB Markdown) covering every endpoint, webhook, error code, and integration pattern. Paste it into ChatGPT, Claude, Cursor, or Copilot together with your task and the model has everything it needs to write correct, production-ready integration code.Thai version:
llms-full-th.md(ภาษาไทย)
Flow for Using Payment
✅ Recommended : use Create Payment — FLEX (Hosted Payment Page) for all deposits. One API call returns a
payment_url; FLEX automatically uses every payment channel available on the platform and the customer receives the transfer instruction as a QR code or a bank account number on our hosted payment page, which handles the entire customer flow by itself (how-to instructions, transfer, slip submission). The other payment-creation endpoints will be deprecated soon.
The payment gateway accepts deposits via Thai QR Payment and direct bank transfer. The payment gateway generates the transfer instruction (QR code or destination account) with the specific payment amount, which may include a slight variation in the decimal points. For example, if the merchant needs to pay 100 THB, the transfer amount might be 99.98 or 100.03 THB, with a defined time frame for the transaction.
Merchants must clearly inform their customers to complete the payment within the specified time frame and to ensure the payment is made only once. (When using FLEX, our hosted payment page communicates all of this to the customer automatically.)
Explanation of Duplicate Transfers, Transfers Outside the Specified Time Frame, or Transfers Not Matching the Amount on the QR CODE
Typically, customers are required to complete the transfer within the specified time frame and are permitted to do so only once. Duplicate transfers using the same QR code are prohibited because our system randomly assigns decimal numbers and locks the amount for each customer within a specific time frame.
If a customer transfers money outside the allocated time frame or transfers an amount different from the one locked for them, the amount may be credited to the account of another customer whose time frame is currently active. In such cases, we cannot deduct the amount from the other customer’s account.
The API
The API is organized around REST. Our API has predictable resource-oriented URLs, accepts json-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, using standard hash hmac algorithm as signature.
API Request Structure
All API requests must include the following mandatory fields:
merchant_id
The merchant ID assigned by our platform.
token
The authentication token provided by our platform.
time
A Unix timestamp representing the request time. This timestamp is used to prevent replay attacks and ensure request freshness.
Example Request:
{
"merchant_id": "YOUR_MERCHANT_ID",
"token": "YOUR_AUTH_TOKEN",
"time": 1656272222
}
Additional Notes:
The merchant_id, token, and time fields must be included in the request body. The time field must be a valid Unix timestamp. The token must be a valid authentication token. The merchant_id must be a valid merchant ID. Failure to include any of the mandatory fields will result in an error response.