1. Developers
AXS Developer Hub
  • Getting Started
    • Overview
    • Account Setup
    • Merchant Branding
    • Payment Link
  • Developers
    • Payment Link Integration
    • QR Code Integration
    • Transaction Query
    • Card on File
    • Void and Refund
  • Point of Sale
    • PayCube
    • Function & Response Codes
  • Plugins
    • WooCommerce
    • PrestaShop
  • Appendix
    • Test Cards
    • Reserved Amounts
  1. Developers

Payment Link Integration

Overview#

This section enabled developers to integrate AXS Payment Link with their app/web to start collecting payments via redirection to AXS Hosted Payment Page (HPP).
If you prefer to generate QR code for customer-facing kiosk where users can easily scan a code to initiate payments using various banking apps, please click HERE.
Prerequisites: Do complete your Merchant Branding and get your Payment Link ready as the base URL.
Choose Link Type - Redirect to Payment Page when generating payment link.
The payment link generated should be similar to this https://{domain}/hpp/checkout/G_587G7D

Generating Client ID and Secret#

Before integrating with AXS Checkout, it is essential to understand how AXS authenticate you and how the data is protected.
AXS uses Client ID and Secret to authenticate you and encrypt your payload to keep your data safe.
Follow the steps to generate Client ID and Secret:
1
Navigate to Developer page
2
Click 'Create' button on top right corner to create new credential
You may input the application name that is easy to recognise and represent your application.
Client ID and Secret should be kept confidential and only stored on your servers. Do not store them on your mobile or web client

Start Integrating#

Starts your integration into your application in 3 + 1 optional steps:
1. Generate Complete Payment Link
Generate a complete payment link with user's payment information.
2. Redirect to Checkout Page
Once the complete payment link is ready, redirect user to AXS Checkout page.
3. Handle Webhook
After the payment is processed, webhook will be sent for payment notifications.
Optional: Payment Using Token
If you have collected token from customer's card, you will be able to charge the cardholder anytime by calling the payment API.

Step 1: Generate Complete Payment Link#

This is the first step of the payment flow. Once you have the base payment link, client id and secret, follow this instruction to generate a complete payment link.

Endpoint#

UAT
Production
GET https://checkout.svc.uat.pay.axs.com.sg/hpp/checkout/{merchantLinkId}?data={JWE compact serialization}
AXS uses JSON Web Encryption (JWE) to encrypt the request parameters. Do refer below for the JWE header info:
alg PBES2-HS512+A256KW
enc A256GCM
p2s Salt (UUID)
p2c Iteration (fixed value: 1000)
kid Client ID

Request Parameters#

Parameters
Required
Remarks
clientIdThe Client ID generated in Merchant Portal
amountPayment amount in cents.
1. Example: 100 = $1.00
2. Max amount = $9,999,999.00
3. Amount preset in Merchant Portal will be used if not specify
currencyDefault is SGD
Currently only support SGD.
merchantRefMerchant's unique merchant reference.
Max 40 characters.
scheme- Available values: credit_card, paynow, alipay, wechatpay
- Accepts multiple values separated by comma.
- If not specified, default will be all available schemes.
terminalIdMerchant's input information.
To be displayed in Merchant Portal.
webhookUrlThis URL will overwrite preset URL in Merchant Branding.
successUrlThis URL will overwrite preset URL in Merchant Branding.
failUrlThis URL will overwrite preset URL in Merchant Branding.
isTokenCreateTo define if requires AXS to return customer's card token to merchant.
Default : false
merchantTransactionIdIf provided, this will be used as the unique transaction id sent to payment gateway.
This value will also be used for idempotency check to avoid duplicated payments.
Sample Request Data
{"clientId": "5fc53a20-e563-4f45-8dcc-4fd1f20f649c", "amount": "1023", "currency": "SGD", "merchantRef": "Ref123", "scheme": "", "terminalId": "Terminal-1", "webhookUrl": "https://webhook.site/", "successUrl": "https://axs.com.sg?session=243556", "failUrl": "https://axs.com.sg?session=243556", "isTokenCreate": true, "merchantTransactionId": "8743567837453758"}
Sample Code
Sample Final URL

Step 2: Redirect to Checkout Page#

After the complete payment link is generated, navigate your user to the URL, and AXS will take care of the rest of the flow.
image.png

Step 3: Handle Webhook#

Once the payment is completed, the user will be navigated back to the “successUrl/failUrl” that was configured in the Merchant Branding or during the payment request in Step 1, along with the status.
From backend, there is also a webhook notification from AXS' server to your server about the payment confirmation via POST method.
Please be advised to mark your order as paid ONLY after the webhook is received and validated.

Webhook Parameters#

The following fields are sent with the webhook request:
Parameters
Required
Remarks
amountPayment amount in dollar. Example: 101.01
currencyDefault is SGD
Currently only support SGD.
transactionRefAXS' unique transaction reference or echo from merchantTransactionId. Example: 1448241333514969089
merchantRefMerchant's unique merchant reference from Step 1.
statusPayment status:
SUCCESS - Payment successful.
DECLINED - Payment declined. Applicable to card payment.
EXPIRED - QR code expired. Applicable to QR payment.
Use the reserved amounts provided to simulate.
responseCodePayment response code from Card Issuing Bank.
Example: 00 - payment successful
Other codes - unsuccessful
Note: Empty value for QR payment.
paymentSchemePayment scheme.
Available value: VISA / MASTERCARD / PAYNOW / ALIPAY / WECHATPAY
paymentDateTimePayment date time in (ISO 8601) standard.
Example: 2025-12-10T09:14:01.201466Z
tokenObject list of token details.
Will be returned by AXS if the isTokenCreate was set as true from the request.
token.tokenIdCard token to be stored by merchant for future payment.
token.schemeVISA / MASTERCARD
token.maskedPanMasked card number.
Example : 411111XXXXXX1111
token.expiryCard expiry
Example : 0139
After received webhook from AXS, decrypt the JWE payload using the same secret key used for encryption in Step 1.
Sample Response Data
{"amount":"10.23","currency":"SGD","transactionRef":"1428191406936641536","merchantRef":"Ref123","status":"SUCCESS","responseCode":"00","paymentScheme":"VISA","paymentDateTime":"2026-01-16T01:22:46.010508Z","token":{"tokenId":"5715E518056B491AE063AF598E0A2256","scheme":"VISA","maskedPan":"411111XXXXXX1111","expiry":"0139"}}
Sample Code

Optional : Payment Using Token#

If you have set isTokenCreate as true in Step 1 and received the token details in Step 3, you will be able to charge the cardholder anytime by calling the payment API.

Endpoint#

UAT
Production
POST https://member.uat.pay.axs.com.sg/api/hpp/v2/payment/pay

Request Body#

Schema#
{
  "data": "string (JWE compact serialization)"
}
AXS uses JSON Web Encryption (JWE) to encrypt the request parameters. Do refer below for the JWE header info:
alg PBES2-HS512+A256KW
enc A256GCM
p2s Salt (UUID)
p2c Iteration (fixed value: 1000)
kid Client ID

Request Parameters#

Parameters
Required
Remarks
tokenToken of card received from webhook.
merchantTransactionIdUnique transaction id set by merchant to be sent to payment gateway.
This value will also be used for idempotency check to avoid duplicated payments.
Max 40 characters.
merchantRefMerchant's unique merchant reference.
Max 40 characters.
webhookUrlThis URL will overwrite preset URL in Merchant Branding.
Refer Step 3 for the webhook handling and format details.
terminalIdMerchant's input information.
To be displayed in Merchant Portal.
paymentTokenParamsObject list of payment token parameters
paymentTokenParams.amountPayment amount in cents.
1. Example: 100 = $1.00
2. Min $0.01 and max amount = $9,999,999.00
paymentTokenParams.currencyPayment currency (e.g., SGD) based on ISO 4217
Currently only support SGD.
Sample Request Data
{"token": "5715E518056B491AE063AF598E0A2256", "paymentTokenParams": {"amount": 100, "currency": "SGD"}, "merchantTransactionId": "MyUniqID12345", "capture": true, "merchantRef": "MyRef09876", "webhookUrl": "https://webhook.site/", "terminalId": "Terminal-ABC"}
Sample Final URL

Response Parameters#

Parameters
Remarks
paymentTransactionIdAXS internal payment trans Id.
statusSUCCESS / DECLINED
processorInformationObject list of response from payment gateway.
processorInformation.approvalCodeGateway approval code.
processorInformation.responseCodeGateway response code.
00 - Success
processorInformation.retrievalReferenceNumberGateway RRN
processorInformation.merchantReferenceFrom merchantRef parameter
processorInformation.merchantTransactionIdUnique transaction id set by merchant sent to payment gateway.
processorInformation.maskedPanMasked card number.
Example : 411111XXXXXX1111
processorInformation.expiryCard expiry. Can be empty.
processorInformation.brandVISA / MASTERCARD
Sample Response Data
{"paymentTransactionId": "7846203159486310203814", "processorInformation": {"approvalCode": "808280", "brand": "VISA", "expiry": "", "maskedPan": "411111XXXXXX1111", "merchantReference": "MyRef09876", "merchantTransactionId": "MyUniqID12345", "responseCode": "00", "retrievalReferenceNumber": "620207726401"}, "status": "SUCCESS"}
 
Congrats! You have now successfully completed the integration to AXS Checkout HPP.
Previous
Payment Link
Next
QR Code Integration
Built with