The checkout product is an intelligent system that integrates multiple payment methods. It is initiated by merchants to create a checkout, where certain parameters (such as amount, currency, payment methods) can be specified without requiring any processing of the consumer flow. It supports multiple payment methods.
- Simple development, fast deployment
- No PCI certification required, sensitive information tokenization, ensuring consumer payment security
- Customizable checkout page styles and logo (please contact your account manager for configuration)
- Built-in 3DS authentication support, no need for merchant processing
- Dynamic display of supported payment methods, no additional development required
- Responsive page design, compatible with multiple devices, supporting multiple languages
For checkout payments, we provide three integration methods:
- Hosted: Single-page checkout, providing a complete URL for consumers to redirect and pay; requires minimal integration cost and simplest processing
- Drop-in: Embedded checkout that can be integrated into merchant pages, supporting certain customization
- Component: Component-based checkout that can seamlessly integrate into merchant pages with high customization
| Hosted | Drop-in | Component | |
|---|---|---|---|
| Integration Method | Redirect to PayKKa's independent payment page | Directly embedded in merchant website/App pages | Directly embedded in merchant website/App pages |
| Customization Level | Low, dependent on payment provider's theme template | Medium, merchants can customize UI and interaction flow to some extent | High, merchants can highly customize UI and interaction flow |
| Technical Requirements | Low, only requires API integration | Moderate, requires API and frontend component integration | High, requires API and frontend component integration, customizable combination |
| Flexibility | Derived from PayKKa capabilities, relatively fixed functionality | Derived from merchant integration, can provide richer functionality | Derived from merchant integration, can provide the richest functionality |
| User Experience | Page redirect, requires leaving merchant website to new page | Seamless experience, complete payment within merchant website | Seamless experience, complete payment within merchant website |
| Trust Level | Relies on merchant and PayKKa brand site payment trust | Relies on merchant site to establish payment trust | Relies on merchant site to establish payment trust |
- Visa
- MasterCard
- JCB
- American Express
- Discover
- Diners Club
- Apple Pay
- Google Pay
- WechatPay
- Alipay+
- GCash
- Maya (Paymaya)
- ShopeePay
- GrabPay
- Zalopay
- VietQR

- Customers visit your checkout page, enter customer shipping and billing information, and click the payment button
- You initiate a payment request from the server to create a checkout, and you will receive the checkout page URL and redirect the customer to the checkout page
- The checkout page will dynamically display supported payment methods. After the customer selects a payment method, click the payment button
- After submitting the payment, we will process all possible additional operations, such as 3DS authentication or third-party redirect pages
- After the payment is processed, the customer is redirected to your redirect address
- Your webhook address will receive the payment result notification (it is recommended that you integrate transaction query to get the payment result)
- Get your transaction key
- Prepare your notification webhook address, provide it in the request parameters or set in the background, and notifications will be sent to the merchant at key payment nodes
- Prepare your redirect address, provide it in the request parameters, and it will redirect after checkout payment is completed
- Initiate the request: Create Session interface to create checkout, return checkout page URL
- Merchants can integrate the Query Session interface to get checkout results, or directly integrate the Query Transaction interface to get order results (if there is no final result, it means the consumer did not initiate a transaction)
PayKKa's checkout (identifier: session_id) represents a payment intention in page form, and the final payment result is determined by the transaction (identifier: order_id) result. Therefore, you need to focus on the final status of the order to determine the payment result.
Checkout Query: Used to query the status and payment result of the checkout. If the consumer has not initiated payment, no transaction order will be generated.
Transaction Query: Used to query the payment result of the transaction order. After the order reaches its final state, it will be notified through webhook.

When the customer is ready to pay, send a server-side request to create a Session and corresponding link, and initiate a payment request through the Session
Request Example Create Session
{
"merchant_id": "18356675194960",
"payment_type": "PURCHASE",
"authorisation_type": "FINAL_AUTH",
"capture_method": "AUTOMATIC",
"trans_id": "m3246749195217",
"expire_time": "2025-05-05T17:17:24+08:00",
"session_mode": "HOSTED", # Checkout mode, HOSTED: hosted, DROP_IN: embedded, COMPONENT: component
"display_locale": "fr-FR",
"currency": "HKD",
"amount": "800",
"return_url": "https://url",
"payment": {
"store_payment_method": true, # Whether to store card information and tokenize, will get token; true: store, false: do not store
"token_usage": "CARD_ON_FILE"
"shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
},
"goods": [
// Product information
],
"bill": {
// Billing information
},
"shipping": {
// Shipping information, required for physical goods
},
"customer": {
// Consumer/customer information
}
}Response Example
{
"ret_code": "000000",
"ret_msg": "Success",
"data": {
"merchant_id": "18356675194960",
"trans_id": "m3246749195217",
"session_id": "CS208760010022288125",
"session_mode": "HOSTED",
"status": "PROCESSING",
"currency": "HKD",
"amount": "800",
"expire_time": "2025-05-05T17:17:24+08:00",
"authorisation_type": "FINAL_AUTH",
"capture_method": "AUTOMATIC",
"session_url": "https://checkout.aq.paykka.com/hp/pay/CS208760010022288125"
}
}Query checkout status by checkout ID(session_id)
Request Example Query Session
{
"merchant_id": "18356675194960",
"trans_id": "m3246749195217", # trans_id/session_id two choose one
"session_id": "CS208760010022288125"
}Response Example
{
"ret_code": "000000",
"ret_msg": "Success",
"data": {
"merchant_id": "18356675194960",
"trans_id": "m3246749195217",
"session_id": "CS208760010022288125",
"session_mode": "HOSTED",
"status": "PROCESSING",
"amount": "800",
"currency": "HKD",
"expire_time": "2025-05-05T17:17:24+08:00",
"authorisation_type": "FINAL_AUTH",
"capture_method": "AUTOMATIC",
"session_url": "https://checkout.aq.paykka.com/hp/pay/CS208760010022288125"
}
}Query transaction status by transaction ID(order_id)
Request Example Query Transaction
{
"merchant_id": "18356675194960",
"trans_id": "m3246749195217", # session_id/order_id/trans_id three choose one
"session_id": "CS208760010022288125",
"order_id": "GW208760010022288125"
}Response Example
{
"ret_code": "000000",
"ret_msg": "Success",
"data": {
"merchant_id": "18356675194960",
"trans_id": "m3246749195217",
"order_id": "GW208760010022288125",
"session_id": "CS208760010022288125",
"status": "SUCCESS", # Transaction status
"error_code": "0000", # Transaction error code
"error_description": "request success",
"amount": "800",
"currency": "HKD",
"pay_finish_time": "2025-05-05T17:17:24+08:00"
}
}If your payment requirements involve recurring charges from customers' bank cards or e-wallets at regular intervals (such as monthly, yearly, or custom time intervals) without requiring manual authorization each time, you can use PayKKa's recurring payment feature.
- Currently, PayKKa's recurring payment feature requires the merchant to initiate it periodically
- For the first recurring payment, PayKKa needs to store the card information of the cardholder, and subsequent recurring payments only need to provide the cardholder's token
- For subsequent recurring payments, only the cardholder's token needs to be provided, without repeating card information
First recurring request example Create Session
{
"merchant_id": "18356675194960",
"payment_type": "RECURRING",
"authorisation_type": "FINAL_AUTH",
"capture_method": "AUTOMATIC",
"trans_id": "m3246749195217",
"expire_time": "2025-05-05T17:17:24+08:00",
"session_mode": "HOSTED",
"display_locale": "fr-FR",
"currency": "HKD",
"amount": "800",
"return_url": "https://url",
"mit": false,
"payment": {
"store_payment_method": true,
"token_usage": "SUBSCRIPTION",
"shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
},
"goods": [
// Product information
],
"bill": {
// Billing information
},
"shipping": {
// Shipping information, required for physical goods
},
"customer": {
// Consumer/customer information
}
}Subsequent recurring request example Initiate Transaction
{
"merchant_id": "18356675194960",
"payment_type": "RECURRING",
"authorisation_type": "FINAL_AUTH",
"capture_method": "AUTOMATIC",
"trans_id": "m3246749195217",
"currency": "HKD",
"amount": "800",
"mit": true,
"recurring_agreement_id": "RA4264524535435435",
"payment": {
"payment_method": "BANKCARD",
"shopper_reference": "558b5cb1b8cbcc8496062155c69cf2ab",
"token": "TK20231435132143229"
}
}PayKKa has achieved PCI-DSS Level 1 certification, with a complete and secure cardholder data encryption storage solution, and does not store sensitive cardholder data
PayKKa currently provides two forms of card information storage to provide better experience for merchants and consumers
- Quick Payment: Creating a checkout can request to store card information to provide a smoother payment experience for the current consumer's next payment (non-recurring). For the next payment (checkout form), no need to enter card information again, only CVV is required, as shown below

Request example
{
...
"payment": {
"store_payment_method": true,
"token_usage": "CARD_ON_FILE",
"shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
},
...
}- Recurring Payment: Creating a recurring checkout requires mandatory storage of card information, and the next payment (recurring) requires carrying the token as a payment credential
Request example
{
...
"payment": {
"store_payment_method": true,
"token_usage": "SUBSCRIPTION",
"shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
},
...
}The checkout product does not require you to handle 3DS authentication. PayKKa will automatically perform intelligent security detection and processing of payments. You only need to focus on the payment results.

The maximum validity period for the checkout is 24 hours. After expiration, payment cannot be continued. Consumers can click the back button in the upper left corner to return to the merchant website.
If payment is not initiated before expiration, there will be no notification. Querying the checkout status will return status=EXPIRED, and querying the transaction status will return ret_msg=the order doesn't exist

Reference Webhook