Verify a payment
Canonical server-side lookup. Fulfill only when data.status is success and data.amount matches the order.
GET
/
payment
/
verify
/
{reference}
Verify a payment
curl --request GET \
--url https://server.staging.vestrapay.app/v1/payment/verify/{reference} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://server.staging.vestrapay.app/v1/payment/verify/{reference}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://server.staging.vestrapay.app/v1/payment/verify/{reference}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.staging.vestrapay.app/v1/payment/verify/{reference}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "success",
"data": {
"id": "uuid",
"reference": "VPY_TXN_ACME001",
"amount": "100.00",
"total": "101.50",
"amountSettled": "100.00",
"currency": "NGN",
"status": "success",
"channel": "card",
"fees": "1.50",
"merchantBearsCost": false,
"paidAt": "2026-05-10T14:30:00.000Z",
"metadata": {
"orderId": "ORD_12345"
}
}
}{
"status": "failed",
"error": "<string>",
"message": "<string>"
}⌘I
Verify a payment
curl --request GET \
--url https://server.staging.vestrapay.app/v1/payment/verify/{reference} \
--header 'x-api-key: <api-key>'const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://server.staging.vestrapay.app/v1/payment/verify/{reference}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://server.staging.vestrapay.app/v1/payment/verify/{reference}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.staging.vestrapay.app/v1/payment/verify/{reference}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "success",
"data": {
"id": "uuid",
"reference": "VPY_TXN_ACME001",
"amount": "100.00",
"total": "101.50",
"amountSettled": "100.00",
"currency": "NGN",
"status": "success",
"channel": "card",
"fees": "1.50",
"merchantBearsCost": false,
"paidAt": "2026-05-10T14:30:00.000Z",
"metadata": {
"orderId": "ORD_12345"
}
}
}{
"status": "failed",
"error": "<string>",
"message": "<string>"
}