Send a GET request to https://api.queye.co/pay/status/ with the transaction ID from the return URL. Unlike creating a payment, this call requires your vendor secret as well as your vendor key — the key alone is public (it appears in every checkout URL), so it cannot authorise reading transaction details on its own.
The response is keyed by transaction ID:
curl "https://api.queye.co/pay/status/?trid=ABCD12345678" \
-H "x-key: your_vendor_key" \
-H "x-secret: your_secret_key"
$ch = curl_init("https://api.queye.co/pay/status/?trid=" . urlencode($tr_id));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"x-key: your_vendor_key",
"x-secret: your_secret_key",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
$status = $response[$tr_id]["status"] ?? null; // "successful", "failed", "refunded", ...
const https = require("https");
https.get({
hostname: "api.queye.co",
path: "/pay/status/?trid=" + encodeURIComponent(tr_id),
headers: {
"x-key": "your_vendor_key",
"x-secret": "your_secret_key",
},
}, (res) => {
let data = "";
res.on("data", (chunk) => (data += chunk));
res.on("end", () => {
const status = JSON.parse(data)[tr_id]?.status;
});
});
import requests
response = requests.get(
"https://api.queye.co/pay/status/",
params={"trid": tr_id},
headers={"x-key": "your_vendor_key", "x-secret": "your_secret_key"},
).json()
status = response.get(tr_id, {}).get("status") # "successful", "failed", "refunded", ...
const response = await fetch(
`https://api.queye.co/pay/status/?trid=${encodeURIComponent(tr_id)}`,
{ headers: { "x-key": "your_vendor_key", "x-secret": "your_secret_key" } } // server-side only — never expose your secret to the browser
).then(r => r.json());
const status = response[tr_id]?.status;
A successful response looks like this (amounts are given both as a decimal and in minor units, so pick whichever your ledger uses):
{
"ABCD12345678": {
"status": "successful",
"paid": true,
"product": "Test Product",
"vendor": "Your Store",
"amount": 2.99,
"amount_minor": 299,
"currency": "USD",
"datetime": "2026-09-23 02:10:00"
}
}
A 404 means either the transaction doesn't exist or it belongs to a different vendor — the two are indistinguishable on purpose, so this endpoint can't be used to probe other stores' transaction IDs.
Next: Issuing a refund.