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
| Parameter | Value |
|---|---|
| URL | https://payment-gateway.phajay.co/v1/api/payment/check-transaction/status/:transactionId |
| Method | GET |
| Authentication | Basic 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:
| Field | Type | Description |
|---|---|---|
| transactionId | String | The unique transaction identifier generated by the system (returned when you create a Payment Link / Payment QR, and included in the webhook data). |
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:| Field | Type | Description |
|---|---|---|
| message | String | The result of the API call (SUCCESSFULLY when the transaction is found). |
| data.transactionId | String | The unique transaction identifier generated by the system. |
| data.linkCode | String | null | The payment link identifier, if the transaction was created from a Payment Link. |
| data.orderNo | String | null | The platform's order number associated with the transaction, if provided. |
| data.status | String | The current status of the transaction (e.g., WAITING, EXPIRED, REFUNDED, DISPUTED, PAYMENT_COMPLETED). |
| data.isPaid | Boolean | true when the transaction has been paid, otherwise false. |
| data.amount | Number | The transaction amount. |
| data.currency | String | The currency of the transaction (e.g., LAK). |
| data.description | String | The description of the transaction. |
| data.paymentMethod | String | The bank / payment method (e.g., BCEL, JDB, LDB). |
| data.paymentTime | DateTime | null | The time the payment was completed; null if not yet paid. |
| data.createdAt | DateTime | The timestamp indicating when the transaction was created. |
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"
}
}When the transactionId does not exist in the system:
application/json
{
"message": "PAYMENT_NOT_FOUND"
}⚠️ Note:
Always treat a transaction as paid only whenisPaidistrue(statusisPAYMENT_COMPLETED).
Updated just now