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.