🎉 PhaJay is service now. Get Started

v1
Check Transaction Status

Check Transaction Status

Use this API to check the current status of a transaction by its transactionId. It is useful when your platform did not receive the webhook callback, or when you want to confirm a payment before delivering the order to the customer.

1. Request

ParameterValue
URLhttps://payment-gateway.phajay.co/v1/api/payment/check-transaction/status/:transactionId
MethodGET
AuthenticationBasic Auth

Example:

application/json
      {
      "Content-Type": "application/json",
      Authorization:`Basic ${Buffer.from(`${KEY}`).toString("base64")}`
     }
Note: KEY refers to your Secret Key, which is used to authorize API requests. You can find your Secret Key on the Key Management page of PhaJay Portal after logging in.
Path Parameters:
FieldTypeDescription
transactionIdStringThe unique transaction identifier generated by the system (returned when you create a Payment Link / Payment QR, and included in the webhook data).
Example Request:
cURL
KEY="your_secret_key"
 
curl --location 'https://payment-gateway.phajay.co/v1/api/payment/check-transaction/status/4d420686-18af-42db-9ad9-0b6e18d7c6db' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Basic $(printf '%s' "$KEY" | base64)"
JavaScript (axios)
import axios from "axios";
 
const KEY = "your_secret_key";
const transactionId = "4d420686-18af-42db-9ad9-0b6e18d7c6db";
 
const response = await axios.get(
  `https://payment-gateway.phajay.co/v1/api/payment/check-transaction/status/${transactionId}`,
  {
    headers: {
      "Content-Type": "application/json",
      Authorization: `Basic ${Buffer.from(`${KEY}`).toString("base64")}`,
    },
  }
);
 
console.log(response.data);

2. Response

Response Data:
FieldTypeDescription
messageStringThe result of the API call (SUCCESSFULLY when the transaction is found).
data.transactionIdStringThe unique transaction identifier generated by the system.
data.linkCodeString | nullThe payment link identifier, if the transaction was created from a Payment Link.
data.orderNoString | nullThe platform's order number associated with the transaction, if provided.
data.statusStringThe current status of the transaction (e.g., WAITING, EXPIRED, REFUNDED, DISPUTED, PAYMENT_COMPLETED).
data.isPaidBooleantrue when the transaction has been paid, otherwise false.
data.amountNumberThe transaction amount.
data.currencyStringThe currency of the transaction (e.g., LAK).
data.descriptionStringThe description of the transaction.
data.paymentMethodStringThe bank / payment method (e.g., BCEL, JDB, LDB).
data.paymentTimeDateTime | nullThe time the payment was completed; null if not yet paid.
data.createdAtDateTimeThe timestamp indicating when the transaction was created.
Example Success Response:
application/json
{
  "message": "SUCCESSFULLY",
  "data": {
    "transactionId": "4d420686-18af-42db-9ad9-0b6e18d7c6db",
    "linkCode": null,
    "orderNo": null,
    "status": "WAITING",
    "isPaid": false,
    "amount": 100000,
    "currency": "LAK",
    "description": "EV5lGcw20260928041738796",
    "paymentMethod": "BCEL",
    "paymentTime": null,
    "createdAt": "2026-09-28T04:17:38.973Z"
  }
}
Example Error Response:

When the transactionId does not exist in the system:

application/json
{
  "message": "PAYMENT_NOT_FOUND"
}

⚠️ Note:
Always treat a transaction as paid only when isPaid is true (status is PAYMENT_COMPLETED).


Updated just now