Get escrow feeds
curl --request GET \
--url https://staging.api.payluk.ng/v1/escrow/feeds \
--header 'Authorization: Bearer <token>'import requests
url = "https://staging.api.payluk.ng/v1/escrow/feeds"
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/feeds', 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/feeds",
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/feeds"
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/feeds")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/escrow/feeds")
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 transactions fetched successfully",
"data": {
"data": [
{
"id": "6948fb43cb570eeef76285e3",
"amount": 1000,
"purpose": "iPhone 13 Pro Max",
"description": "Black Titanium, White Titanium, Natural Titanium, Desert Titanium",
"whoPays": "buyer",
"imageUrl": null,
"fee": 15,
"paymentToken": "PY_KrWLqPd90314",
"paidAt": "1766391073",
"status": "COMPLETED",
"state": "CLOSED",
"logs": [],
"channel": "API",
"isSeller": false,
"dispute": null,
"paymentDetails": {
"id": "6948fd20cb570eeef76286a4",
"amount": 1015,
"status": "success",
"reference": "9500364766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"createdAt": "2025-12-22T08:11:12.605Z"
},
"category": null,
"completedAt": "1766391289",
"approvedClaimBy": null,
"refundedBy": null,
"maxDelivery": 20,
"deliveryTimeline": "minutes",
"totalQuantity": 1,
"settlementType": "STANDARD",
"milestones": [],
"createdAt": "2025-12-22T08:03:15.124Z",
"updatedAt": "2025-12-22T08:14:49.601Z"
},
{
"id": "6a3cd9b1734e96016b22732e",
"amount": 1000,
"purpose": "multi-purpose escrow item",
"description": "details",
"whoPays": "buyer",
"imageUrl": null,
"fee": 30,
"paymentToken": "PY_V2bRgyPJ3305",
"paidAt": null,
"status": "PENDING",
"state": "AWAITING_PAYMENT",
"logs": [],
"channel": "API",
"isSeller": true,
"dispute": null,
"paymentDetails": null,
"category": null,
"completedAt": null,
"approvedClaimBy": null,
"refundedBy": null,
"maxDelivery": 1,
"deliveryTimeline": "hours",
"totalQuantity": 2,
"settlementType": "STANDARD",
"milestones": [],
"createdAt": "2026-06-25T07:33:05.400Z",
"updatedAt": "2026-06-25T07:38:39.619Z"
}
],
"pagination": {
"count": 2,
"pages": 1,
"isLastPage": true,
"nextPage": null,
"previousPage": null
}
}
}{
"status": 429,
"message": "Too many request"
}7. Release & resolve: Disputes
Get escrow feeds
Merchant-wide feed of all customers’ escrows. Must not send a customer-id header.
GET
/
v1
/
escrow
/
feeds
Get escrow feeds
curl --request GET \
--url https://staging.api.payluk.ng/v1/escrow/feeds \
--header 'Authorization: Bearer <token>'import requests
url = "https://staging.api.payluk.ng/v1/escrow/feeds"
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/feeds', 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/feeds",
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/feeds"
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/feeds")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/escrow/feeds")
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 transactions fetched successfully",
"data": {
"data": [
{
"id": "6948fb43cb570eeef76285e3",
"amount": 1000,
"purpose": "iPhone 13 Pro Max",
"description": "Black Titanium, White Titanium, Natural Titanium, Desert Titanium",
"whoPays": "buyer",
"imageUrl": null,
"fee": 15,
"paymentToken": "PY_KrWLqPd90314",
"paidAt": "1766391073",
"status": "COMPLETED",
"state": "CLOSED",
"logs": [],
"channel": "API",
"isSeller": false,
"dispute": null,
"paymentDetails": {
"id": "6948fd20cb570eeef76286a4",
"amount": 1015,
"status": "success",
"reference": "9500364766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"createdAt": "2025-12-22T08:11:12.605Z"
},
"category": null,
"completedAt": "1766391289",
"approvedClaimBy": null,
"refundedBy": null,
"maxDelivery": 20,
"deliveryTimeline": "minutes",
"totalQuantity": 1,
"settlementType": "STANDARD",
"milestones": [],
"createdAt": "2025-12-22T08:03:15.124Z",
"updatedAt": "2025-12-22T08:14:49.601Z"
},
{
"id": "6a3cd9b1734e96016b22732e",
"amount": 1000,
"purpose": "multi-purpose escrow item",
"description": "details",
"whoPays": "buyer",
"imageUrl": null,
"fee": 30,
"paymentToken": "PY_V2bRgyPJ3305",
"paidAt": null,
"status": "PENDING",
"state": "AWAITING_PAYMENT",
"logs": [],
"channel": "API",
"isSeller": true,
"dispute": null,
"paymentDetails": null,
"category": null,
"completedAt": null,
"approvedClaimBy": null,
"refundedBy": null,
"maxDelivery": 1,
"deliveryTimeline": "hours",
"totalQuantity": 2,
"settlementType": "STANDARD",
"milestones": [],
"createdAt": "2026-06-25T07:33:05.400Z",
"updatedAt": "2026-06-25T07:38:39.619Z"
}
],
"pagination": {
"count": 2,
"pages": 1,
"isLastPage": true,
"nextPage": null,
"previousPage": null
}
}
}{
"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.
Query Parameters
Page number (1-based).
Items per page.
High-level escrow status.
Available options:
PENDING, ONGOING, COMPLETED, REFUNDED, CLAIMED, DISPUTED, INVESTIGATING, SPLIT Filter to the escrow with this payment token.
Response
Paginated escrows across all customers.