Skip to main content
Available in🇮🇳 India
Razorpay is a licensed Customer Operating Unit (COU) on the Bharat Bill Payment System (BBPS), India’s centralised, interoperable bill payment platform managed by NPCI. Using Razorpay’s BBPS integration, your platform can let customers discover billers, fetch bill amounts, and make payments across hundreds of utility categories.

How It Works

BBPS bill payments follow an asynchronous, multi-step flow:
  1. Fetch Biller Categories - retrieve all available bill categories (electricity, water, gas, broadband, insurance, etc.).
  2. Fetch Billers - list billers within a chosen category.
  3. Fetch Biller Plans(optional) - retrieve plans offered by a biller where applicable (e.g. prepaid recharges).
  4. Create a Bill Request - submit the customer’s biller-specific identifiers (account number, consumer ID, etc.) to fetch the outstanding bill amount from the biller.
  5. Poll Bill Request - poll the Fetch Bill Request API until the status becomes success or failed.
  6. Create a Bill Payment - initiate payment for the fetched bill amount.
  7. Poll Bill Payment - poll the Fetch Bill Payment API until the status becomes success or failed.
Watch Out!Bill Request and Bill Payment APIs are asynchronous. After creating a resource, always poll the corresponding Fetch API at regular intervals until the status reaches a terminal state (success or failed). Do not assume success based on the creation response alone.

Prerequisites

Before you begin:
  • Complete API key generation on the Razorpay Dashboard.
  • Ensure your account has BBPS access enabled. Contact Razorpay Support if you need it activated.
  • Use your Test API Keys during development. Payments made with test keys are not processed on the live BBPS network.

Integration Steps

Use the Fetch Biller Categories API to retrieve all supported bill categories. Present these to your customer so they can choose the type of bill they want to pay. Use the returned id in Step 2.
Use the Fetch Billers API with the selected category to retrieve all billers within that category. Each biller includes a gateway_data.account_holder_config.params list describing the customer inputs (for example, consumer number, account number) needed to identify the customer’s account on the biller. Use gateway_data.bill_request_config.bill_request_required to decide whether bill fetch is mandatory, optional, or unsupported.
For billers that offer plans (such as prepaid recharges), use the Fetch Biller Plans API to retrieve available plans. Skip this step if the biller does not offer plans.
Use the Create a Bill Request API to fetch the outstanding bill amount for your customer from the biller’s system. This API returns immediately with a processing status - move to Step 5 to poll for the result.
Use the Fetch Bill Request API with the id returned in Step 4. Poll at regular intervals until status is success or failed. On success, use the returned bills[].amount and bills[].bill_number in Step 6.
Watch Out!Always wait for the Bill Request status to reach success before creating a Bill Payment. A failed status means the biller could not retrieve the bill - surface an appropriate error to the customer.
Use the Create a Bill Payment API with the bill_request_id from the successful bill request and the bills[].amount returned. Pass a unique X-Bill-Payments-Idempotency header (4-36 characters, alphanumeric with hyphens, underscores, or spaces; UUID v4 recommended) on every request to safely retry without creating duplicate payments. This API is asynchronous - move to Step 7 to poll for the result.
Use the Fetch Bill Payment API with the id returned in Step 6. Poll until status is success or failed, then display the result to your customer.

Supported Bill Categories

BBPS supports a wide range of bill categories, including but not limited to:

API Reference

Bill Payments API Home

Overview of all BBPS API endpoints.