BBPS API Integration Guide: Bharat Bill Payment System for Enterprises
What is BBPS?
BBPS (Bharat Bill Payment System) is an RBI-mandated, NPCI-operated interoperable bill payment platform that enables customers to pay bills across multiple categories — electricity, gas, water, telecom, insurance, loan EMIs, and more — through a unified interface.
For businesses, the BBPS API provides a single integration point to offer bill payment services for 200+ biller categories. NxtBanking Bill Connect is a certified BBPS agent platform that makes integration seamless.
How BBPS Works: Architecture Overview
The BBPS ecosystem involves four key participants:
- Customer: Initiates bill payment through your app or website.
- Agent Institution (AI): Your platform, integrated with BBPS via NxtBanking API.
- NPCI (Central Unit): Routes the payment request to the correct biller.
- Biller/Operating Unit: Receives payment and confirms bill settlement.
Every transaction gets a unique BBPS reference ID and receipt, ensuring end-to-end traceability and consumer protection.
BBPS API Features
- 200+ Biller Categories: Electricity, gas, water, broadband, DTH, insurance, loan EMI, municipal taxes, education fees, and more.
- Fetch & Pay: Two-step process — fetch bill details first, then confirm payment. Prevents overpayment or wrong-biller errors.
- Multiple Payment Modes: Support for UPI, debit card, net banking, wallets, and cash (via agents).
- Real-Time Confirmation: Instant payment confirmation with BBPS reference number.
- Complaint Resolution: Built-in dispute resolution mechanism through NPCI.
- Commission Structure: Earn commission on every bill payment processed through your platform.
Why Integrate BBPS API?
Revenue Generation
Every bill payment processed through your BBPS integration earns commission. At scale, this becomes a significant revenue stream — especially for fintech apps and banking platforms.
Customer Retention
Offering bill payment within your app reduces the need for customers to switch to other platforms. It becomes a sticky feature that drives daily engagement.
Regulatory Compliance
BBPS is RBI-mandated and NPCI-certified. Integrating through NxtBanking ensures your platform is fully compliant with all regulatory requirements.
Integration Steps with NxtBanking
Step 1: Register as BBPS Agent
Sign up on NxtBanking API Marketplace. We handle the NPCI registration process for you.
Step 2: Integrate Bill Fetch API
Use our Bill Fetch endpoint to retrieve bill details for any biller category. Pass the customer identifier (account number, mobile, etc.) and receive bill amount, due date, and biller details.
Step 3: Integrate Bill Payment API
Once the customer confirms, call the Bill Payment endpoint with the bill details and payment mode. The payment is routed through NPCI to the biller.
Step 4: Handle Callbacks
Receive real-time webhooks for payment confirmation, including the BBPS transaction reference number.
BBPS Biller Categories
| Category | Examples | Volume |
|---|---|---|
| Electricity | State discoms, BSES, Tata Power | Highest |
| Telecom | Jio, Airtel, Vi, BSNL | High |
| DTH | Tata Play, Airtel Digital, Dish TV | Medium |
| Gas | Mahanagar Gas, Indraprastha Gas | Medium |
| Water | Municipal corporations | Medium |
| Insurance | LIC, ICICI Prudential, HDFC Life | High |
| Loan EMI | Banks, NBFCs | High |
| Education | Schools, colleges, universities | Seasonal |
Frequently Asked Questions
What is BBPS API?
BBPS API is a programming interface that allows businesses to integrate Bharat Bill Payment System into their apps and platforms, enabling customers to pay bills for 200+ categories.
How do I become a BBPS agent?
You can become a BBPS agent by partnering with an authorized agent institution like NxtBanking. We handle the NPCI registration and provide ready-to-use APIs.
What commission do BBPS agents earn?
Commission varies by biller category, typically ranging from ₹2 to ₹15 per transaction. High-volume agents can negotiate better rates.
Is BBPS API integration free?
NxtBanking does not charge integration fees. You earn commission on every transaction, making it a zero-investment revenue opportunity. Request a demo to learn more.
People Also Ask
How to become a BBPS agent?
You can become a BBPS agent by partnering with an existing COU (Customer Operating Unit) like NxtBanking. Requirements include valid business registration, KYC documents, and minimum working capital of ₹5,000-25,000.
What is the BBPS transaction limit?
BBPS does not have a fixed per-transaction upper limit set by NPCI, but individual billers may set their own limits. Most utility billers accept payments up to ₹2 lakh per transaction. Higher limits are available for insurance and loan EMI payments.
Related Resources
- How BBPS Works: A Technical Deep Dive for Developers
- BBPS Agent Model: How to Become a BBPS Service Provider
📚 BBPS Content Hub
BBPS API — Code Samples & Integration Reference
A complete BBPS (Bharat Bill Payment System) flow is always two API calls: Bill Fetch (look up the outstanding amount from the biller) and Bill Payment (debit the customer and confirm the payment to the biller). Below are working samples for both, plus dispute handling and reconciliation.
1. Fetch billers & their required parameters
Every biller category (electricity, gas, DTH, mobile post-paid, etc.) accepts different customer parameters. Start by fetching the canonical biller directory so you can render the right input fields in your UI.
curl -X GET "https://sandbox.nxtbanking.com/v1/bbps/billers?category=electricity&state=UP"
-H "Authorization: Bearer $ACCESS_TOKEN"
# Response (abbreviated)
{
"billers": [
{
"biller_id": "UPPCL00000UPR",
"biller_name":"Uttar Pradesh Power Corp. Ltd. — Urban",
"category": "electricity",
"parameters": [
{ "param_name": "Account Number", "param_type": "NUMERIC", "length": 12, "regex": "^[0-9]{12}$" }
],
"supports_bill_fetch": true,
"supports_bill_pay": true,
"partial_payment": false
}
]
}2. Bill Fetch
Bill Fetch retrieves the due amount from the biller in real time. Cache the response only briefly (max 10 minutes) — some billers update amounts intraday.
// Node.js
const fetchRes = await axios.post(
"https://sandbox.nxtbanking.com/v1/bbps/bill/fetch",
{
biller_id: "UPPCL00000UPR",
reference_id: `BF_${Date.now()}`,
customer_params: { "Account Number": "123456789012" },
customer_mobile: "9812345678",
},
{ headers: { Authorization: `Bearer ${token}` } }
);
// Successful response
{
"fetch_id": "bf_f8k2m9p3",
"biller_id": "UPPCL00000UPR",
"customer_name":"Anvesh Tiwari",
"bill_number": "E-2026-04-8821",
"bill_date": "2026-04-01",
"due_date": "2026-04-28",
"amount": 2847.00,
"currency": "INR",
"exact_payment_required": false, // if true, customer must pay exactly this amount
"bill_fetch_response_code": "000" // "000" = success per BBPS specification
}3. Bill Payment
Pay the bill using the fetch_id from step 2. If the biller supports partial payments, you can send a lower amount; otherwise it must equal the fetched amount.
curl -X POST https://sandbox.nxtbanking.com/v1/bbps/bill/pay
-H "Authorization: Bearer $ACCESS_TOKEN"
-H "Content-Type: application/json"
-d '{
"fetch_id": "bf_f8k2m9p3",
"reference_id": "BP_1745334662_C42",
"amount": 2847.00,
"payment_instrument":"UPI",
"payment_ref_id": "UPI_NXTB_2026042200001",
"customer_mobile": "9812345678",
"webhook_url": "https://yourapp.com/webhooks/nxtb/bbps"
}'
# Response
{
"payment_id": "bp_k9x4m2n8",
"bbps_txn_id": "NB00XYZ123456789", // the end-to-end BBPS reference
"status": "SUCCESS",
"amount": 2847.00,
"fee": 3.54,
"cgst": 0.32,
"sgst": 0.32,
"response_code":"000",
"receipt_url": "https://api.nxtbanking.com/receipts/bp_k9x4m2n8.pdf"
}Python helper — full fetch-then-pay flow
import requests, time, uuid
BASE = "https://sandbox.nxtbanking.com/v1"
TOKEN = get_token() # see Connected Banking guide
HEADERS = { "Authorization": f"Bearer {TOKEN}" }
def pay_electricity_bill(account_number, biller_id="UPPCL00000UPR",
customer_mobile="9812345678"):
# 1. Fetch
fetch = requests.post(
f"{BASE}/bbps/bill/fetch",
json={
"biller_id": biller_id,
"reference_id": f"BF_{uuid.uuid4().hex[:12]}",
"customer_params": { "Account Number": account_number },
"customer_mobile": customer_mobile,
},
headers=HEADERS, timeout=30,
).json()
if fetch["bill_fetch_response_code"] != "000":
raise Exception(f"Fetch failed: {fetch}")
# 2. Pay the exact amount
pay = requests.post(
f"{BASE}/bbps/bill/pay",
json={
"fetch_id": fetch["fetch_id"],
"reference_id": f"BP_{uuid.uuid4().hex[:12]}",
"amount": fetch["amount"],
"payment_instrument": "UPI",
"payment_ref_id": f"UPI_{int(time.time())}",
"customer_mobile": customer_mobile,
},
headers=HEADERS, timeout=30,
).json()
return payBBPS response codes you will see
BBPS response codes are standardised by NPCI. The 000 code means success; everything else is a business-level failure:
| Code | Meaning | Action |
|---|---|---|
000 | Success | — |
ERR001 | Biller not reachable | Retry after 2–5 minutes |
BFR-001 | Bill already paid | Show receipt to user, don’t retry |
BFR-002 | Invalid customer account | Ask user to re-verify the account number |
BFR-003 | No outstanding dues | Show “all clear” message |
BPR-001 | Payment amount mismatch (exact-pay biller) | Refetch and show the correct amount |
BPR-002 | Biller timeout | Call GET /bbps/bill/status to confirm |
Dispute handling
BBPS disputes follow a strict TAT-bound workflow. If a customer claims a payment didn’t reach the biller, raise a dispute within T+30 days:
curl -X POST https://api.nxtbanking.com/v1/bbps/disputes
-H "Authorization: Bearer $ACCESS_TOKEN"
-H "Content-Type: application/json"
-d '{
"payment_id": "bp_k9x4m2n8",
"dispute_type": "BILL_NOT_UPDATED",
"description": "Customer reports biller portal still shows bill unpaid 48h after BBPS SUCCESS",
"contact_email":"support@yourapp.com"
}'Dispute status updates arrive on the same webhook endpoint as bill payments. Valid dispute types include BILL_NOT_UPDATED, DOUBLE_DEBIT, AMOUNT_MISMATCH, and INVALID_BILL_STATUS.
Daily reconciliation
BBPS settlement files are published every day at 05:30 IST for the previous day’s transactions (T-1). Reconcile by calling the MIS endpoint or subscribing to the daily email drop.
curl -X GET "https://api.nxtbanking.com/v1/bbps/mis?date=2026-04-21&format=csv"
-H "Authorization: Bearer $ACCESS_TOKEN"
-o bbps_2026-04-21.csv
# CSV columns:
# payment_id, bbps_txn_id, reference_id, biller_id, customer_mobile,
# amount, fee, cgst, sgst, net_settlement, status, response_code,
# created_at, settled_at, bank_utrFor deeper architectural context on how BBPS routes between the COU (Customer Operating Unit), the BBPCU (central infrastructure), and the BOU (Biller Operating Unit), read our BBPS technical deep-dive. To launch a customer-facing BBPS product, see NxtBanking Bill Connect.






