Verify payment token
curl --request GET \
--url https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken} \
--header 'Authorization: Bearer <token>'import requests
url = "https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Escrow verified successfully",
"data": {
"id": "6a3cdafc734e96016b227367",
"amount": 1000,
"purpose": "multi-purpose escrow item",
"description": "details",
"whoPays": "buyer",
"imageUrl": null,
"fee": 30,
"paymentToken": "PY_TIrNY1CD3836",
"paidAt": "1782373118",
"status": "ONGOING",
"state": "OPENED",
"logs": [],
"channel": "API",
"isSeller": false,
"dispute": null,
"paymentDetails": {
"id": "6a3cdafd734e96016b22736b",
"amount": 1030,
"status": "success",
"reference": "rthyjyutj",
"fee": 0,
"transactionType": "escrow",
"currency": "NGN",
"createdAt": "2026-06-25T07:38:38.003Z"
},
"category": null,
"completedAt": null,
"approvedClaimBy": null,
"refundedBy": null,
"maxDelivery": 1,
"deliveryTimeline": "hours",
"totalQuantity": 1,
"settlementType": "STANDARD",
"milestones": [],
"createdAt": "2026-06-25T07:38:37.283Z",
"updatedAt": "2026-06-25T07:38:38.922Z"
}
}{
"status": 400,
"message": "Escrow not found",
"data": {}
}{
"status": 429,
"message": "Too many request"
}3. Create the deal: Escrow
Verify payment token
Resolves an escrow by its payment token. Used by a buyer to inspect a payment link before paying.
GET
/
v1
/
escrow
/
verify
/
{paymentToken}
Verify payment token
curl --request GET \
--url https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken} \
--header 'Authorization: Bearer <token>'import requests
url = "https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/escrow/verify/{paymentToken}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Escrow verified successfully",
"data": {
"id": "6a3cdafc734e96016b227367",
"amount": 1000,
"purpose": "multi-purpose escrow item",
"description": "details",
"whoPays": "buyer",
"imageUrl": null,
"fee": 30,
"paymentToken": "PY_TIrNY1CD3836",
"paidAt": "1782373118",
"status": "ONGOING",
"state": "OPENED",
"logs": [],
"channel": "API",
"isSeller": false,
"dispute": null,
"paymentDetails": {
"id": "6a3cdafd734e96016b22736b",
"amount": 1030,
"status": "success",
"reference": "rthyjyutj",
"fee": 0,
"transactionType": "escrow",
"currency": "NGN",
"createdAt": "2026-06-25T07:38:38.003Z"
},
"category": null,
"completedAt": null,
"approvedClaimBy": null,
"refundedBy": null,
"maxDelivery": 1,
"deliveryTimeline": "hours",
"totalQuantity": 1,
"settlementType": "STANDARD",
"milestones": [],
"createdAt": "2026-06-25T07:38:37.283Z",
"updatedAt": "2026-06-25T07:38:38.922Z"
}
}{
"status": 400,
"message": "Escrow not found",
"data": {}
}{
"status": 429,
"message": "Too many request"
}Authorizations
Your secret key as a Bearer token. The key prefix selects the environment: sk_test_... (staging) or sk_live_... (production); a key on the wrong host is refused with 403 Unauthorized Access. Each key is limited to 10 requests per minute (429 beyond that) and, on production, to the IP addresses on your dashboard allowlist when one is configured.
Path Parameters
The escrow's payment token (e.g. PY_8AB12C9D3045).