Verify account number
curl --request POST \
--url https://staging.api.payluk.ng/v1/payment/verify-account \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'customer-id: <customer-id>' \
--data '
{
"accountNumber": "0123456789",
"bankCode": "044",
"bankName": "<string>"
}
'import requests
url = "https://staging.api.payluk.ng/v1/payment/verify-account"
payload = {
"accountNumber": "0123456789",
"bankCode": "044",
"bankName": "<string>"
}
headers = {
"customer-id": "<customer-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'customer-id': '<customer-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({accountNumber: '0123456789', bankCode: '044', bankName: '<string>'})
};
fetch('https://staging.api.payluk.ng/v1/payment/verify-account', 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/verify-account",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountNumber' => '0123456789',
'bankCode' => '044',
'bankName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.api.payluk.ng/v1/payment/verify-account"
payload := strings.NewReader("{\n \"accountNumber\": \"0123456789\",\n \"bankCode\": \"044\",\n \"bankName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("customer-id", "<customer-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.api.payluk.ng/v1/payment/verify-account")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": \"0123456789\",\n \"bankCode\": \"044\",\n \"bankName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/payment/verify-account")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["customer-id"] = '<customer-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountNumber\": \"0123456789\",\n \"bankCode\": \"044\",\n \"bankName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Account details retrieved successfully",
"data": {
"accountName": "TEST CUSTOMER NAME",
"accountNumber": "3069748575",
"bankCode": "011"
}
}{
"status": 429,
"message": "Too many request"
}6. Fund it: Payments
Verify account number
Resolves the account name on a bank account, so you can show the customer who they are about to pay before you create the withdrawal.
Take bankCode from Get bank list. A code from anywhere else, or one cached from an earlier session, may not resolve: the codes belong to whichever provider Payluk currently settles payouts through.
POST
/
v1
/
payment
/
verify-account
Verify account number
curl --request POST \
--url https://staging.api.payluk.ng/v1/payment/verify-account \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'customer-id: <customer-id>' \
--data '
{
"accountNumber": "0123456789",
"bankCode": "044",
"bankName": "<string>"
}
'import requests
url = "https://staging.api.payluk.ng/v1/payment/verify-account"
payload = {
"accountNumber": "0123456789",
"bankCode": "044",
"bankName": "<string>"
}
headers = {
"customer-id": "<customer-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'customer-id': '<customer-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({accountNumber: '0123456789', bankCode: '044', bankName: '<string>'})
};
fetch('https://staging.api.payluk.ng/v1/payment/verify-account', 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/verify-account",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'accountNumber' => '0123456789',
'bankCode' => '044',
'bankName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.api.payluk.ng/v1/payment/verify-account"
payload := strings.NewReader("{\n \"accountNumber\": \"0123456789\",\n \"bankCode\": \"044\",\n \"bankName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("customer-id", "<customer-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.api.payluk.ng/v1/payment/verify-account")
.header("customer-id", "<customer-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": \"0123456789\",\n \"bankCode\": \"044\",\n \"bankName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.api.payluk.ng/v1/payment/verify-account")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["customer-id"] = '<customer-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"accountNumber\": \"0123456789\",\n \"bankCode\": \"044\",\n \"bankName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"message": "Account details retrieved successfully",
"data": {
"accountName": "TEST CUSTOMER NAME",
"accountNumber": "3069748575",
"bankCode": "011"
}
}{
"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.
Body
application/json
Response
Account verified.