BILLS PAYMENT
Verify Customer Biller
Verify a meter number (electricity) or smartcard/IUC number (cable) before charging, and get back the customer's name for display/confirmation.
Optional but strongly recommended for cable and electricity purchases — it helps you catch a mistyped meter or smartcard number before money leaves the wallet.
POST /v1/bills/verify
Use this endpoint to
- Confirm that a meter or smartcard number belongs to a real, active account
- Retrieve the customer's name to show for confirmation before charging
- Check whether an account can currently be vended (
can_vend)
Request
Body parameters
| Field | Type | Required | Description |
|---|---|---|---|
biller_slug |
string | Yes | Biller slug from Get Billers (e.g. IKEDC, DSTV) |
product_name |
string | Yes | Product/meter type, e.g. PREPAID or POSTPAID for electricity |
customer_id |
string | Yes | Meter number (electricity) or smartcard/IUC number (cable) |
Code Samples
const response = await fetch("https://sandbox.hitchpay.ng/v1/bills/verify", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
biller_slug: "IKEDC",
product_name: "PREPAID",
customer_id: "45700123456"
})
});
const data = await response.json();
console.log(data);<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => "https://sandbox.hitchpay.ng/v1/bills/verify",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
"biller_slug" => "IKEDC",
"product_name" => "PREPAID",
"customer_id" => "45700123456"
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_ACCESS_TOKEN",
"Content-Type: application/json"
]
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;import requests
url = "https://sandbox.hitchpay.ng/v1/bills/verify"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
}
payload = {
"biller_slug": "IKEDC",
"product_name": "PREPAID",
"customer_id": "45700123456"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())Response
{
"status": "success",
"message": "Customer verified",
"data": {
"customer_name": "JOHN DOE",
"account_number": "45700123456",
"min_amount": 1000,
"can_vend": true,
"customer_type": "PREPAID",
"address": "…",
"biller_name": "Ikeja Electric"
}
}Fields
| Field | Type | Description |
|---|---|---|
customer_name |
string | Name on the account. show this to your user to confirm before charging |
account_number |
string | Echoes the verified meter/smartcard number |
min_amount |
number | Minimum amount that can be vended (electricity) |
can_vend |
boolean | Whether this account can currently be charged |
customer_type |
string | e.g. PREPAID / POSTPAID |
address |
string | Customer address, if available |
biller_name |
string | Human-readable biller name |
Errors
| Code | Meaning |
|---|---|
INVALID_REQUEST |
Missing/invalid fields |
UNAUTHORIZED |
Business not found or inactive |
PRODUCT_UNAVAILABLE |
No matching product/network configured |
VERIFY_FAILED |
Provider could not verify this customer/meter/smartcard |
PROVIDER_ERROR |
Provider call failed |
Questions? Email [email protected]. Also on GitBook.