List customer debit cards
curl --request GET \
--url https://staging.api.payluk.ng/v1/cards \
--header 'Authorization: Bearer <token>' \
--header 'customer-id: <customer-id>'import requests
url = "https://staging.api.payluk.ng/v1/cards"
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/cards', 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/cards",
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/cards"
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/cards")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/cards")
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": "Cards fetched successfully",
"data": [
{
"id": "665f1b2c9a1e4d0012ab3c50",
"cardInfo": {
"last4": "4081",
"exp_month": "12",
"exp_year": "2030",
"card_type": "visa DEBIT",
"brand": "visa",
"customer": "Ada Eze",
"bank": "TEST BANK"
},
"isDefault": true,
"createdAt": "2026-05-29T15:49:20.041Z"
}
]
}{
"status": 403,
"message": "This feature is not enabled on your merchant account, please enable to access this route",
"data": {}
}{
"status": 429,
"message": "Too many request"
}Other: Debit Cards
List customer debit cards
Requires the merchant to have the save-debit-cards feature enabled. Requires the customer-id header.
GET
/
v1
/
cards
List customer debit cards
curl --request GET \
--url https://staging.api.payluk.ng/v1/cards \
--header 'Authorization: Bearer <token>' \
--header 'customer-id: <customer-id>'import requests
url = "https://staging.api.payluk.ng/v1/cards"
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/cards', 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/cards",
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/cards"
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/cards")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/cards")
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": "Cards fetched successfully",
"data": [
{
"id": "665f1b2c9a1e4d0012ab3c50",
"cardInfo": {
"last4": "4081",
"exp_month": "12",
"exp_year": "2030",
"card_type": "visa DEBIT",
"brand": "visa",
"customer": "Ada Eze",
"bank": "TEST BANK"
},
"isDefault": true,
"createdAt": "2026-05-29T15:49:20.041Z"
}
]
}{
"status": 403,
"message": "This feature is not enabled on your merchant account, please enable to access this route",
"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.
Headers
The merchant customer this request acts on behalf of.
Response
Cards fetched.