API Reference
Complete parameter reference for all 17 KwikAPI endpoints — India Bill Payments & Recharges
Service Category List
Fetch all active service categories available on the platform
Use once during setup to populate your UI or sync your local service list. Refresh weekly or when adding new service types.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
Sample Response
"success": true,
"status": "SUCCESS",
"total": 33,
"categories": [
{ "service_name": "Prepaid", "total_operators": 32 },
{ "service_name": "DTH", "total_operators": 17 },
{ "service_name": "Electricity", "total_operators": 127 }
],
"rate_limit": { "limit": 10, "used": 1, "remaining": 9 }
}
Biller List
Fetch all billers with operator codes and service categories
Fetch all active billers. Store locally and refresh weekly. Filter by service
to narrow results. Use opid values in all payment and fetch APIs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| service | string | Optional | Filter by service category (e.g. Prepaid, Electricity, DTH)
|
| page | int | Optional | Page number for pagination (default: 1) |
Sample Response
"status": "SUCCESS",
"response": [
{
"operator_name": "Airtel",
"operator_id": "1",
"service_type": "Prepaid",
"status": "1",
"biller_status": "on",
"bill_fetch": "NO",
"supportValidation": "NOT_SUPPORTED",
"bbps_enabled": "NO",
"amount_minimum": "10",
"amount_maximum": "10000"
}
]
}
Biller Details
Fetch full details for one or more operators including required fields
Get deep details for a specific operator. Supports batch lookup — separate multiple
opid values with #. The required_params array maps directly to
opt1–opt10 fields in payment APIs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| opid | string | ✅ Required | Operator ID(s). Batch: separate with # (e.g. 53#54#55) |
Circle Codes
Fetch all India telecom circle codes for recharge routing
Fetch all Indian telecom circle codes. Cache locally — this data changes very rarely. Use
circle_code values as state_code in Recharge and Recharge Plans APIs.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
Bill Fetch
Fetch outstanding bill amount and consumer details from the biller
Fetch live bill details before payment. Only call if
bill_fetch_supported = true in Biller Details. Displays due amount and consumer name to your
user before they confirm payment.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| number | string | ✅ Required | Consumer / account / registered mobile number |
| amount | number | Optional | Pre-filled amount. Pass 0 if unknown |
| opid | int | ✅ Required | Operator ID from Biller List API |
| order_id | string | ✅ Required | Your unique reference ID for this fetch request |
| opt1–opt10 | string | Optional | Operator-specific fields (see required_params in Biller Details) |
| mobile | string | Optional | Customer mobile number for SMS confirmation |
Sample Response
"status": "SUCCESS",
"provider": "Jio Postpaid",
"message": "SUCCESS",
"due_amount": "1885.00",
"due_date": "13-07-2025",
"customer_name": "Anushka Verma",
"bill_number": "202006005985",
"bill_date": "28-06-2020",
"bill_period": "MONTHLY",
"ref_id": "61936",
"service": "Postpaid",
"Additional": ""
}
Wallet Balance
Check your KwikAPI merchant wallet balance
Returns your current wallet balance in INR. Check before processing payments to ensure sufficient funds.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
Sample Response
"response": {
"balance": "262.80",
"plan_credit": "1"
}
}
Transaction Status
Check the final status of any payment by your unique order ID
Poll this after any payment API if the response is PENDING or unclear. Use your original
order_id to look up the transaction.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| order_id | string | ✅ Required | The unique order ID used during the original payment request |
Sample Response
"response": {
"order_id": "11554212",
"operator_ref": "4162140972233",
"opr_id": "416214093455",
"status": "SUCCESS",
"number": "9876523456",
"amount": "1",
"service": "Beneficiary Verification",
"charged_amount": "2.35",
"closing_balance": "312.15",
"available_balance": "0",
"date": "2024-06-10 14:23:53"
}
}
| Status | Meaning |
|---|---|
| SUCCESS | Transaction completed successfully |
| FAILURE | Transaction failed — do not retry with the same order_id |
| PENDING | Still processing — poll again after 30–60 s (max 3–5 retries) |
Last 100 Transactions
Fetch the latest 100 transactions in reverse chronological order
Useful for dashboards, reconciliation, and support screens. Returns the most recent 100 transactions.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
Operator & Circle Detect
Real-time MNP-aware operator and telecom circle detection
Detect real-time operator and telecom circle for any Indian mobile number. Fully MNP-aware — accounts for number portability.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| number | string | ✅ Required | 10-digit Indian mobile number |
Sample Response
"success": true,
"message": null,
"credit_balance": "499",
"details": {
"provider": "VI",
"opid": "3",
"circle_code": "17",
"circle_name": "Bihar (BR)"
}
}
Mobile Recharge Plans
Fetch all prepaid plans for an operator and telecom circle
Fetch available prepaid recharge plans. Use opid and circle_code
from Operator & Circle Detect to get the right plan list.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| opid | int | ✅ Required | Operator ID from Operator & Circle Detect API |
| state_code | string | ✅ Required | Telecom circle code (numeric, e.g. 4 for Maharashtra, 1 for Delhi) from
Circle Codes API |
DTH Recharge Plans
Fetch all available packs for a DTH/D2H operator
Fetch all recharge packs available for a DTH operator. Use opid filtered from
Biller List with service=DTH.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| opid | int | ✅ Required | DTH operator ID from Biller List API (filter by service=DTH) |
R-Offer Check
Check active retention / special offers on a prepaid number
Check if a prepaid number has any active R-Offers (retention/special offers). Supported networks: Airtel and VI (Vodafone Idea) only.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| opid | int | ✅ Required | Operator ID — must be Airtel or VI |
| mobile | string | ✅ Required | 10-digit prepaid mobile number to check offers for |
Prepaid / DTH Recharge
Initiate a prepaid mobile, DTH/D2H, or Datacard recharge
Initiate a recharge for prepaid mobile, DTH/D2H, or Datacard. Always call Operator &
Circle Detect first to get the correct opid and state_code.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| number | string | ✅ Required | Customer mobile number or DTH subscriber ID |
| amount | number | ✅ Required | Recharge amount in INR |
| opid | int | ✅ Required | Operator ID from Operator & Circle Detect API |
| state_code | string | ✅ Required | Telecom circle code from Operator & Circle Detect API |
| order_id | string | ✅ Required | Your unique order ID — never reuse |
Sample Response
"status": "SUCCESS",
"order_id": "12011070",
"opr_id": "BRH2512201219430132",
"balance": "253.18",
"number": "7070300613",
"provider": "VI",
"amount": "10",
"charged_amount": "9.62",
"message": "SUCCESS"
}
order_id to poll for the final result.Utility Payments (BBPS)
Process any BBPS utility bill payment — 1000+ billers
Process utility bill payments through the BBPS network — Electricity, Water, Gas, Broadband, Landline, Insurance, Loan EMIs, Education Fees and 1000+ billers.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| number | string | ✅ Required | Consumer / account number |
| amount | number | ✅ Required | Bill amount in INR |
| opid | int | ✅ Required | Operator ID from Biller List API |
| order_id | string | ✅ Required | Your unique order ID — never reuse |
| opt8 | string | 🔒 Always "Bills" | Must always be "Bills" — fixed required value |
| opt1–opt7 | string | Optional | Operator-specific fields (see required_params in Biller Details) |
| opt9–opt10 | string | Optional | Operator-specific fields (see required_params in Biller Details) |
| refrence_id | string | Optional | Optional reconciliation reference |
| mobile | string | Optional | Customer mobile number for confirmation SMS |
| Field | Common Usage |
|---|---|
| opt1 | Consumer number / Account number |
| opt2 | Consumer name / Account holder name |
| opt3 | Mobile number / Registered phone |
| opt4 | Email address |
| opt5 | District / Sub-division / Zone |
| opt6 | Bill date / Due date |
| opt7 | Bill number / Reference number |
| opt8 | Always "Bills" (fixed, required) |
| opt9 | Service type / Category |
| opt10 | Additional biller-specific field |
opt mapping varies per biller. Always use required_params from
Biller Details as the source of truth — not this table.order_id to poll for the final result.Payout (Money Transfer)
Initiate a bank account payout via IMPS/NEFT
Initiate a real-money bank transfer to a beneficiary account. Requires IP whitelisting and prior bank account verification.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| account_no | string | ✅ Required | Beneficiary bank account number |
| amount | number | ✅ Required | Transfer amount in INR |
| order_id | string | ✅ Required | Your unique order ID — never reuse |
| ifsc_code | string | ✅ Required | Beneficiary bank IFSC code |
| bene_name | string | ✅ Required | Beneficiary full name |
Bank Account Verification
Real-time penny-drop bank account verification with name fetch
Verify a bank account in real time using a penny-drop. Returns the registered account holder name. Always call this before initiating a Payout.
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | ✅ Required | Your KwikAPI API key |
| number | string | ✅ Required | Beneficiary bank account number |
| account | string | ✅ Required | Same as number (required field alias) |
| ifsc | string | Optional | IFSC code for faster routing |
| order_id | string | ✅ Required | Your unique order ID for this verification request |
Sample Response
"success": true,
"status": "SUCCESS",
"message": "Transfer Success",
"order_id": "453408",
"utr": "90391***8811",
"ben_name": "Anshikha Sonam",
"charged_amount": "****",
"date_time": "2019-02-08 12:30:29",
"verify_status": "VERIFIED"
}
IP Detect
Detect the public IP address of the calling server
Detect the public IP address of your server. Run this on your production server to get the IP to whitelist for all API access. No authentication required.
| Parameter | Type | Required | Description |
|---|---|---|---|
| No parameters required | |||
Sample Response
"success": true,
"message": "Your IP address detected",
"your_ip": "203.0.113.42",
"ipv4": "203.0.113.42",
"ipv6": null
}
Response Format
All APIs return JSON
All APIs return a JSON body. A successful response always includes
"success": true.
Success
"success": true,
"status": "SUCCESS",
"message": "..."
}
Failure
"success": false,
"status": "FAILED",
"message": "Error detail"
}
| Message | Cause |
|---|---|
| Invalid API Key | Wrong or inactive API key |
| Rate limit exceeded | Too many requests in the allowed window |
| Insufficient balance | Wallet balance too low for the transaction |
| Order ID already exists | Duplicate order_id — must be unique per transaction |
| IP not whitelisted | Server IP not added to whitelist (Payout API) |
| API MISMATCH | Wrong endpoint or parameter combination |
Rate Limits Summary
Default daily limits per API key
| # | API | Default Limit |
|---|---|---|
| 1 | Service Category List | 10 / day |
| 2 | Biller List | 20 / day |
| 3 | Biller Details | 20 / day |
| 4 | Circle Codes | 2 / day |
| 5 | Wallet Balance | 48 / day |
| 6 | Transaction Status | 100 / day |
| 7 | Last 100 Transactions | 48 / day |
| 8–17 | All other APIs | Per account (contact support) |
Code Samples
102 ready-to-use samples across 6 languages
| Language | Directory |
|---|---|
| PHP 8+ | code-samples/php/ |
| JavaScript Fetch API | code-samples/javascript-fetch/ |
| Shell cURL | code-samples/curl/ |
| jQuery 3.x AJAX | code-samples/jquery/ |
| Axios (Node.js) | code-samples/axios/ |
| Python 3 requests | code-samples/python/ |