curl --request GET \
--url https://staging.api.payluk.ng/v1/payment/history \
--header 'Authorization: Bearer <token>' \
--header 'customer-id: <customer-id>'import requests
url = "https://staging.api.payluk.ng/v1/payment/history"
headers = {
"customer-id": "<customer-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'customer-id': '<customer-id>', Authorization: 'Bearer <token>'}
};
fetch('https://staging.api.payluk.ng/v1/payment/history', 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/payment/history",
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>",
"customer-id: <customer-id>"
],
]);
$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/payment/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("customer-id", "<customer-id>")
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/payment/history")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/payment/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["customer-id"] = '<customer-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Transactions retrieved successfully",
"data": {
"pagination": {
"count": 4,
"pages": 1,
"isLastPage": true,
"nextPage": null,
"previousPage": null
},
"data": [
{
"id": "694967685589d47015d23b27",
"amount": 1015,
"reference": "79994766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Watches",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_zAPRJikk4252",
"purpose": "Boxes",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "debit",
"createdAt": "2025-12-22T15:44:40.023Z",
"updatedAt": "2025-12-22T15:44:41.260Z"
},
{
"id": "6949648e5589d47015d23ad3",
"amount": 1000,
"reference": "7ws5Gix7McIVYOoFqpR",
"fee": 0,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Watches",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_bOffh0Ee2407",
"purpose": "Boxes",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "credit",
"createdAt": "2025-12-22T15:32:30.903Z",
"updatedAt": "2025-12-22T15:32:30.903Z"
},
{
"id": "694946c7cb570eeef762877f",
"amount": 1015,
"reference": "9364766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Watches",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_bOffh0Ee2407",
"purpose": "Boxes",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "debit",
"createdAt": "2025-12-22T13:25:27.501Z",
"updatedAt": "2025-12-22T13:25:28.770Z"
},
{
"id": "6948fd20cb570eeef76286a4",
"amount": 1015,
"reference": "9500364766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Black Titanium, White Titanium, Natural Titanium, Desert Titanium\n\nTitanium design\nLatest-generation Ceramic Shield front\nTextured matt glass back",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_KrWLqPd90314",
"purpose": "iPhone 13 Pro Max",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "debit",
"createdAt": "2025-12-22T08:11:12.605Z",
"updatedAt": "2025-12-22T08:11:13.903Z"
}
]
}
}{
"status": 429,
"message": "Too many request"
}Get payment history
Returns the authenticated merchant customer’s transaction history: money in and out across deposits, withdrawals, transfers, wallet transfers, and escrow payments. Each entry carries the amount, fee, status, type, and the type-specific detail object (withdrawalDetails, walletDetails, escrowDetails, etc.) for the matching transaction type.
By default the response is paginated ({ pagination, data }). Supplying any filter (reference, fromDate, or toDate) instead returns a flat array of the matching transactions. Requires the customer-id header.
curl --request GET \
--url https://staging.api.payluk.ng/v1/payment/history \
--header 'Authorization: Bearer <token>' \
--header 'customer-id: <customer-id>'import requests
url = "https://staging.api.payluk.ng/v1/payment/history"
headers = {
"customer-id": "<customer-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'customer-id': '<customer-id>', Authorization: 'Bearer <token>'}
};
fetch('https://staging.api.payluk.ng/v1/payment/history', 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/payment/history",
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>",
"customer-id: <customer-id>"
],
]);
$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/payment/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("customer-id", "<customer-id>")
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/payment/history")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/payment/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["customer-id"] = '<customer-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Transactions retrieved successfully",
"data": {
"pagination": {
"count": 4,
"pages": 1,
"isLastPage": true,
"nextPage": null,
"previousPage": null
},
"data": [
{
"id": "694967685589d47015d23b27",
"amount": 1015,
"reference": "79994766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Watches",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_zAPRJikk4252",
"purpose": "Boxes",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "debit",
"createdAt": "2025-12-22T15:44:40.023Z",
"updatedAt": "2025-12-22T15:44:41.260Z"
},
{
"id": "6949648e5589d47015d23ad3",
"amount": 1000,
"reference": "7ws5Gix7McIVYOoFqpR",
"fee": 0,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Watches",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_bOffh0Ee2407",
"purpose": "Boxes",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "credit",
"createdAt": "2025-12-22T15:32:30.903Z",
"updatedAt": "2025-12-22T15:32:30.903Z"
},
{
"id": "694946c7cb570eeef762877f",
"amount": 1015,
"reference": "9364766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Watches",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_bOffh0Ee2407",
"purpose": "Boxes",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "debit",
"createdAt": "2025-12-22T13:25:27.501Z",
"updatedAt": "2025-12-22T13:25:28.770Z"
},
{
"id": "6948fd20cb570eeef76286a4",
"amount": 1015,
"reference": "9500364766547485",
"fee": 15,
"transactionType": "escrow",
"currency": "NGN",
"transferDetails": null,
"depositDetails": null,
"walletDetails": null,
"withdrawalDetails": null,
"escrowDetails": {
"beneficiary": {
"name": "Mary Patrick",
"phone": "08101264901"
},
"description": "Black Titanium, White Titanium, Natural Titanium, Desert Titanium\n\nTitanium design\nLatest-generation Ceramic Shield front\nTextured matt glass back",
"amount": 1000,
"fee": 15,
"paymentToken": "PY_KrWLqPd90314",
"purpose": "iPhone 13 Pro Max",
"channel": "API",
"callbackUrl": null
},
"metadata": null,
"status": "success",
"creditType": "debit",
"createdAt": "2025-12-22T08:11:12.605Z",
"updatedAt": "2025-12-22T08:11:13.903Z"
}
]
}
}{
"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.
Headers
The merchant customer this request acts on behalf of.
Query Parameters
Page number for the paginated (unfiltered) response. 1-based: the first page is 1.
x >= 1Transactions per page, between 1 and 100. Defaults to 10. A larger value is capped at 100, and an unusable one falls back to the default. Applies to the paginated response only: a filtered response is a flat array and is not paged.
1 <= x <= 100Filter by transaction type. delivery is an escrow's additional (delivery) fee paid out to the merchant.
deposit, withdrawal, transfer, wallet_transfer, escrow, delivery Filter by a specific reference. Returns a flat array.
Start of a date range (inclusive). Returns a flat array.
End of a date range (inclusive). Returns a flat array.
Response
Transactions retrieved. Paginated by default; a flat array when a filter is supplied.