Use the Kuda Business API to sell or pay supported bills such as airtime, data, electricity, TV subscriptions, betting, education, transport, and other bill categories.
Recommended flow:
Discover billers and bill items.
Verify the customer reference when required.
Purchase the bill.
Confirm the final outcome with
BILL_TSQwhen needed.
Service types
| Purpose |
| Returns a broad biller list. |
| Returns billers and purchasable |
| Validates a meter number, smartcard number, phone number, or other customer reference. |
| Executes the bill payment from the business account. |
| Checks bill payment status and may return PIN or token details. |
Step 1: Discover billers
Use GET_BILLERS_BY_TYPE when you need purchasable products.
{
"serviceType": "GET_BILLERS_BY_TYPE",
"requestRef": "CAT20260603001",
"data": {
"BillTypeName": "electricity"
}
}
The selected bill item should include a kudaIdentifier. Use that value in verification and purchase requests.
Common BillTypeName values include:
airtimeinternet dataelectricitycabletvbettingeducationtransporttaxsolaresim
Validate against the current catalog before going live because billers and categories can change.
Step 2: Verify the customer
Some billers require customer verification before purchase.
{
"serviceType": "VERIFY_BILL_CUSTOMER",
"requestRef": "VER20260603001",
"data": {
"KudaBillItemIdentifier": "KUD-ELE-AEDC-001",
"CustomerIdentification": "46432634278"
}
}
Always verify against the same bill item you intend to purchase.
Step 3: Purchase the bill
Use a short, unique, alphanumeric requestRef for purchase calls.
{
"serviceType": "ADMIN_PURCHASE_BILL",
"requestRef": "BILL20260603001",
"data": {
"CustomerFirstName": "Test",
"CustomerIdentifier": "07030000000",
"PhoneNumber": "07030000000",
"BillItemIdentifier": "KD-VTU-MTNNG",
"Amount": "10000"
}
}
Store:
your original
requestRefreturned bill request reference
returned bill response reference
any PIN, token, or instructions
the selected bill item identifier
the customer identifier
Step 4: Confirm bill status
Use BILL_TSQ when:
the purchase response is pending
the purchase response is unclear
the response returns
K00ork00you need a final PIN or token
a webhook is delayed
{
"serviceType": "BILL_TSQ",
"requestRef": "BTSQ20260603001",
"data": {
"billResponseReference": "BMfoobar",
"BillRequestRef": "BILL20260603001"
}
}
Use both billResponseReference and BillRequestRef when available.
Reading bill status
Important TSQ fields include:
Field | Meaning |
| Human-readable outcome when available. |
| Numeric transaction state. |
| Ledger or posting state. |
| Downstream biller or aggregator code. |
| Token, PIN, or instructions when applicable. |
| Reversal status when relevant. |
transactionStatus: 3 means completed. transactionStatus: 1 means pending.
Important response-code notes
K00ork00can mean the bill request was received, not that downstream fulfillment is final.K12means aggregator pending. Check again withBILL_TSQ.For bill payments that return a PIN or token, TSQ may be the most reliable place to retrieve final fulfillment details.
Common mistakes
Using
GET_BILLERSwhen your UI needs actual purchasablebillItems.Hardcoding bill item identifiers.
Verifying one bill item but purchasing another.
Treating
K00as final fulfillment.Losing
BillRequestReforbillResponseReference.Not falling back to
BILL_TSQwhen a webhook is delayed.