---
title: "BBPS — Prepaid Mobile / DTH Recharge — API Recipe"
description: "Detect the operator and circle from the customer's mobile number, read the operator's input fields, list the available plans, then submit the chosen plan as a payment."
canonical: "https://eps.eko.in/recipe/bbps-mobile-recharge"
---


> **Canonical URL:** https://eps.eko.in/recipe/bbps-mobile-recharge
> This is a machine-readable Markdown version of the page for AI agents and LLMs. The primary (HTML) version lives at the canonical URL above.

# BBPS — Prepaid Mobile / DTH Recharge — API Recipe

Detect the operator and circle from the customer's mobile number, read the operator's input fields, list the available plans, then submit the chosen plan as a payment.

> Product & pricing details: [Bharat Bill Payment System (BBPS)](https://eps.eko.in/products/bbps-api.md)

## Flow

```mermaid
flowchart TD
  s1["GET Get Operator Code and Circle"]
  s2["GET Get Operator Parameters"]
  s3["GET Get Recharge Plans"]
  s4["POST Pay BBPS Bill"]
  done(["done"])
  s1 --> s2
  s2 --> s3
  s3 -->|"response_type_id 1805: Plans unavailable (status is still 0) — take the amount from the customer and continue."| s4
  s4 -->|"status 0"| done
```

## Steps

1. `GET` **[Get Operator Code and Circle](https://eps.eko.in/docs/bbps-operator-code-circle.md)** — Detect the telecom operator and circle from the customer's mobile number. Both come back as name/value pairs under `dependent_params` at the top level of the response, not under `data`.
2. `GET` **[Get Operator Parameters](https://eps.eko.in/docs/bbps-get-operator-parameters.md)** — Read the recharge fields this operator requires, using the `phone_operator_code` from the previous step as `operator_id`. Prepaid operators typically expose `utility_acc_no` labelled "Mobile Number" plus a "Recharge Type" list — send every returned `param_name` to the payment step.
3. `GET` **[Get Recharge Plans](https://eps.eko.in/docs/bbps-recharge-plans.md)** — List the plans for this operator and circle, and let the customer choose one. Mind the rename: pass the previous `circle_area` value as `circleid` here. Plans arrive under `dependent_params` → the `req_list` entry's `value` array.
   - If `response_type_id` is `1805` → go to step 4 (Pay BBPS Bill). Plans unavailable (status is still 0) — take the amount from the customer and continue.
4. `POST` **[Pay BBPS Bill](https://eps.eko.in/docs/bbps-pay-bill.md)** — Submit the recharge. Map the fields: `phone_operator_code` from step 1, `utility_acc_no` = the customer's mobile number, `category` = the Mobile Prepaid / DTH id from Get Categories, and `amount` = the chosen plan's `amount` (or the agent-entered amount when plans were unavailable). `confirmation_mobile_no` and `sender_name` come from agent-entered customer detail. Omit `utilitycustomername` — it is optional, and only applies to bill payments where Bill Fetch supplied it. Persist `tid` and `client_ref_id`.
   - If `status` is `0` → the flow is complete.

## Notes

- Call the steps in the order shown above; each links to its full API reference.
- Branch on the exact field each step names above: `response_type_id` says which response shape came back (the usual routing key), while `status` is the envelope's success flag — `0` is success, anything else is a failure.
- All requests are signed; see [How Auth Works](https://eps.eko.in/docs/how-auth-works).
