@ekoindia/eps-context-mcp 0.1.15 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/data/eps.json +1184 -790
  2. package/package.json +1 -1
package/data/eps.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "org": "ekoindia",
4
4
  "apiVersion": "v3",
5
- "bundleVersion": "3f05bd61",
5
+ "bundleVersion": "be6a360c",
6
6
  "environments": [
7
7
  {
8
8
  "id": "sandbox",
@@ -5499,7 +5499,7 @@
5499
5499
  "summary": "Retrieve the list of supported BBPS biller categories (electricity, gas, DTH, etc.).",
5500
5500
  "category": "payment",
5501
5501
  "relevance": "M",
5502
- "description": "Returns all active biller categories available on the BBPS network. Use the returned category_id to filter the Get Operators call. Categories include electricity, gas, water, DTH, broadband, prepaid recharge, FASTag, insurance, EMI payments, LPG booking, credit card, and more.",
5502
+ "description": "Returns all BBPS biller categories. Pass an `operator_category_id` from here as the `category` filter on Get Operators, and as the `category` param on Fetch Bill and Pay Bill.\n\nCommon ids: 1 Broadband Postpaid · 2 Gas · 4 DTH · 5 Mobile Prepaid · 6 Tax · 7 Credit Card · 8 Electricity · 9 Landline Postpaid · 10 Mobile Postpaid · 11 Water · 12 Housing Society · 13 Subscription · 14 Education · 15 Municipal Taxes · 16 Clubs and Associations · 17 Cable TV · 18 LPG Cylinder · 19 Hospital · 20 Insurance · 21 Loan · 22 FASTag · 23 Municipal Services · 24 Rental Payment · 27+ eChallan, Agent Collection, EV Recharge and others.\n\n**Do not hard-code these ids** — the live response is authoritative and the list grows. The category list is returned under `param_attributes.list_elements`, not under `data`.",
5503
5503
  "bestFor": "Populating a category picker UI before letting the user choose a biller.",
5504
5504
  "docsUrl": "https://eps.eko.in/docs/bbps-get-categories",
5505
5505
  "headers": [
@@ -5583,24 +5583,44 @@
5583
5583
  "description": "API-specific response payload.",
5584
5584
  "children": [
5585
5585
  {
5586
- "name": "categories",
5587
- "type": "array",
5588
- "description": "List of all supported BBPS biller categories.",
5586
+ "name": "param_attributes",
5587
+ "type": "object",
5589
5588
  "imp": true,
5589
+ "description": "Wrapper for the category list — returned at the top level of the response, not under `data`.",
5590
5590
  "children": [
5591
5591
  {
5592
- "name": "id",
5593
- "type": "number",
5594
- "description": "Unique category identifier (category_id). Pass as the `category` query param when filtering operators.",
5595
- "imp": true,
5596
- "example": 5
5597
- },
5598
- {
5599
- "name": "category_name",
5600
- "type": "string",
5601
- "description": "Human-readable category label.",
5592
+ "name": "list_elements",
5593
+ "type": "array",
5602
5594
  "imp": true,
5603
- "example": "Electricity"
5595
+ "description": "One entry per BBPS biller category.",
5596
+ "children": [
5597
+ {
5598
+ "name": "operator_category_id",
5599
+ "type": "number",
5600
+ "description": "Category identifier. Pass as the `category` filter on Get Operators, and as `category` on Fetch Bill / Pay Bill.",
5601
+ "imp": true,
5602
+ "example": 8
5603
+ },
5604
+ {
5605
+ "name": "operator_category_name",
5606
+ "type": "string",
5607
+ "description": "Human-readable category name.",
5608
+ "imp": true,
5609
+ "example": "Electricity"
5610
+ },
5611
+ {
5612
+ "name": "operator_category_group",
5613
+ "type": "string",
5614
+ "description": "Grouping code for the category.",
5615
+ "example": "0"
5616
+ },
5617
+ {
5618
+ "name": "status",
5619
+ "type": "string",
5620
+ "description": "`1` = active.",
5621
+ "example": "1"
5622
+ }
5623
+ ]
5604
5624
  }
5605
5625
  ]
5606
5626
  }
@@ -5608,81 +5628,47 @@
5608
5628
  }
5609
5629
  ],
5610
5630
  "sampleSuccessResponse": {
5611
- "status": 0,
5612
5631
  "response_status_id": 0,
5613
- "message": "Success",
5614
- "response_type_id": 1388,
5615
- "data": {
5616
- "categories": [
5617
- {
5618
- "id": 1,
5619
- "category_name": "Prepaid"
5620
- },
5621
- {
5622
- "id": 2,
5623
- "category_name": "DTH"
5624
- },
5625
- {
5626
- "id": 4,
5627
- "category_name": "Postpaid"
5628
- },
5629
- {
5630
- "id": 5,
5631
- "category_name": "Electricity"
5632
- },
5633
- {
5634
- "id": 6,
5635
- "category_name": "Gas"
5636
- },
5637
- {
5638
- "id": 7,
5639
- "category_name": "Water"
5640
- },
5641
- {
5642
- "id": 8,
5643
- "category_name": "Broadband"
5644
- },
5645
- {
5646
- "id": 9,
5647
- "category_name": "Landline"
5648
- },
5649
- {
5650
- "id": 10,
5651
- "category_name": "Insurance"
5652
- },
5653
- {
5654
- "id": 11,
5655
- "category_name": "FASTag"
5656
- },
5657
- {
5658
- "id": 12,
5659
- "category_name": "LPG Booking"
5660
- },
5661
- {
5662
- "id": 13,
5663
- "category_name": "EMI Payments"
5664
- },
5632
+ "param_attributes": {
5633
+ "list_elements": [
5665
5634
  {
5666
- "id": 14,
5667
- "category_name": "Credit Card"
5635
+ "operator_category_name": "Broadband Postpaid",
5636
+ "operator_category_id": 1,
5637
+ "operator_category_group": "0",
5638
+ "status": "1"
5668
5639
  },
5669
5640
  {
5670
- "id": 15,
5671
- "category_name": "Education"
5641
+ "operator_category_name": "Electricity",
5642
+ "operator_category_id": 8,
5643
+ "operator_category_group": "0",
5644
+ "status": "1"
5672
5645
  },
5673
5646
  {
5674
- "id": 16,
5675
- "category_name": "Metro"
5647
+ "operator_category_name": "Water",
5648
+ "operator_category_id": 11,
5649
+ "operator_category_group": "0",
5650
+ "status": "1"
5676
5651
  },
5677
5652
  {
5678
- "id": 17,
5679
- "category_name": "Municipal Corp"
5653
+ "operator_category_name": "FASTag",
5654
+ "operator_category_id": 22,
5655
+ "operator_category_group": "0",
5656
+ "status": "1"
5680
5657
  }
5681
5658
  ]
5682
- }
5659
+ },
5660
+ "response_type_id": 2457,
5661
+ "message": "BBPS category fetch success",
5662
+ "status": 0
5683
5663
  },
5684
5664
  "errorScenarios": [],
5685
- "responseTypes": []
5665
+ "responseTypes": [
5666
+ {
5667
+ "id": 2457,
5668
+ "meaning": "Category list returned — pick one and list its billers.",
5669
+ "next": "bbps-get-operators"
5670
+ }
5671
+ ]
5686
5672
  },
5687
5673
  {
5688
5674
  "slug": "bbps-get-locations",
@@ -5694,7 +5680,7 @@
5694
5680
  "summary": "Retrieve the list of supported state/location IDs for filtering BBPS operators.",
5695
5681
  "category": "payment",
5696
5682
  "relevance": "M",
5697
- "description": "Returns all supported location (state) identifiers. Pass the returned location_id as the `location` query parameter in the Get Operators call to narrow results to a specific state or circle.",
5683
+ "description": "Returns every operating location (state / UT). Pass an `operator_location_id` from here as the `location` filter on Get Operators to narrow the biller list to one state.\n\n`operator_location_id` is a **zero-padded string** (`\"06\"`, `\"35\"`), not a number — keep it as a string when you pass it back. The list is returned under `param_attributes.list_elements`, not under `data`.",
5698
5684
  "bestFor": "Populating a state filter when displaying biller lists to end users.",
5699
5685
  "docsUrl": "https://eps.eko.in/docs/bbps-get-locations",
5700
5686
  "headers": [
@@ -5778,22 +5764,38 @@
5778
5764
  "description": "API-specific response payload.",
5779
5765
  "children": [
5780
5766
  {
5781
- "name": "locations",
5782
- "type": "array",
5783
- "description": "List of supported state/location entries.",
5767
+ "name": "param_attributes",
5768
+ "type": "object",
5769
+ "imp": true,
5770
+ "description": "Wrapper for the location list — returned at the top level of the response, not under `data`.",
5784
5771
  "children": [
5785
5772
  {
5786
- "name": "id",
5787
- "type": "number",
5788
- "description": "Location identifier to use as the `location` filter when querying operators.",
5773
+ "name": "list_elements",
5774
+ "type": "array",
5789
5775
  "imp": true,
5790
- "example": 7
5791
- },
5792
- {
5793
- "name": "location_name",
5794
- "type": "string",
5795
- "description": "State or circle name.",
5796
- "example": "Delhi"
5776
+ "description": "One entry per operating state / UT.",
5777
+ "children": [
5778
+ {
5779
+ "name": "operator_location_id",
5780
+ "type": "string",
5781
+ "description": "Zero-padded location identifier. Pass as the `location` filter on Get Operators.",
5782
+ "imp": true,
5783
+ "example": "06"
5784
+ },
5785
+ {
5786
+ "name": "operator_location_name",
5787
+ "type": "string",
5788
+ "description": "State / UT name.",
5789
+ "imp": true,
5790
+ "example": "Haryana"
5791
+ },
5792
+ {
5793
+ "name": "abbreviation",
5794
+ "type": "string",
5795
+ "description": "Two-letter state code.",
5796
+ "example": "HR"
5797
+ }
5798
+ ]
5797
5799
  }
5798
5800
  ]
5799
5801
  }
@@ -5801,57 +5803,38 @@
5801
5803
  }
5802
5804
  ],
5803
5805
  "sampleSuccessResponse": {
5804
- "status": 0,
5805
5806
  "response_status_id": 0,
5806
- "message": "Success",
5807
- "response_type_id": 1388,
5808
- "data": {
5809
- "locations": [
5810
- {
5811
- "id": 1,
5812
- "location_name": "Andhra Pradesh"
5813
- },
5814
- {
5815
- "id": 2,
5816
- "location_name": "Bihar"
5817
- },
5818
- {
5819
- "id": 3,
5820
- "location_name": "Gujarat"
5821
- },
5822
- {
5823
- "id": 4,
5824
- "location_name": "Karnataka"
5825
- },
5826
- {
5827
- "id": 5,
5828
- "location_name": "Maharashtra"
5829
- },
5830
- {
5831
- "id": 6,
5832
- "location_name": "Rajasthan"
5833
- },
5834
- {
5835
- "id": 7,
5836
- "location_name": "Delhi"
5837
- },
5807
+ "param_attributes": {
5808
+ "list_elements": [
5838
5809
  {
5839
- "id": 8,
5840
- "location_name": "Tamil Nadu"
5810
+ "operator_location_name": "Haryana",
5811
+ "operator_location_id": "06",
5812
+ "abbreviation": "HR"
5841
5813
  },
5842
5814
  {
5843
- "id": 9,
5844
- "location_name": "Uttar Pradesh"
5815
+ "operator_location_name": "Madhya Pradesh",
5816
+ "operator_location_id": "23",
5817
+ "abbreviation": "MP"
5845
5818
  },
5846
5819
  {
5847
- "id": 10,
5848
- "location_name": "West Bengal"
5820
+ "operator_location_name": "Andaman and Nicobar",
5821
+ "operator_location_id": "35",
5822
+ "abbreviation": "AN"
5849
5823
  }
5850
5824
  ]
5851
- }
5825
+ },
5826
+ "response_type_id": 2459,
5827
+ "message": "BBPS location fetch success",
5828
+ "status": 0
5852
5829
  },
5853
5830
  "errorScenarios": [],
5854
- "responseTypes": []
5831
+ "responseTypes": [
5832
+ {
5833
+ "id": 2459,
5834
+ "meaning": "Location list returned — use one as the `location` filter on Get Operators.",
5835
+ "next": "bbps-get-operators"
5836
+ }
5837
+ ]
5855
5838
  },
5856
5839
  {
5857
5840
  "slug": "bbps-get-operators",
@@ -5863,8 +5846,8 @@
5863
5846
  "summary": "List all active BBPS billers, optionally filtered by category and/or state.",
5864
5847
  "category": "payment",
5865
5848
  "relevance": "M",
5866
- "description": "Returns every currently active BBPS biller. Use `category` and `location` query parameters to narrow results. The `billFetchResponse` flag on each operator tells you whether the Fetch Bill step is mandatory before payment. Operators that are temporarily disabled are excluded from the response — poll this endpoint periodically to keep your list fresh.",
5867
- "bestFor": "Building a biller selection UI and determining which operators require a bill fetch before payment.",
5849
+ "description": "Returns the list of billers. Filter by `category`, `location`, or both, using the identifiers from Get Categories and Get Locations; omit both to list every biller.\n\nThe `operator_id` returned here is what you pass as **`phone_operator_code`** to Fetch Bill and Pay Bill — the names differ. `billFetchResponse` tells you whether the biller supports a live bill fetch. The list is returned under `param_attributes.list_elements`, not under `data`.",
5850
+ "bestFor": "Building a biller selection UI and determining which operators support a live bill fetch.",
5868
5851
  "docsUrl": "https://eps.eko.in/docs/bbps-get-operators",
5869
5852
  "headers": [
5870
5853
  {
@@ -5918,16 +5901,16 @@
5918
5901
  "name": "category",
5919
5902
  "type": "number",
5920
5903
  "required": false,
5921
- "description": "Filter by category — use the `id` from Get Categories.",
5922
- "example": 5,
5904
+ "description": "Filter by category — the `operator_category_id` from Get Categories.",
5905
+ "example": 11,
5923
5906
  "in": "query"
5924
5907
  },
5925
5908
  {
5926
5909
  "name": "location",
5927
5910
  "type": "number",
5928
5911
  "required": false,
5929
- "description": "Filter by state/circle — use the `id` from Get Locations.",
5930
- "example": 7,
5912
+ "description": "Filter by state / UT — the `operator_location_id` from Get Locations.",
5913
+ "example": 35,
5931
5914
  "in": "query"
5932
5915
  }
5933
5916
  ],
@@ -5963,42 +5946,63 @@
5963
5946
  "description": "API-specific response payload.",
5964
5947
  "children": [
5965
5948
  {
5966
- "name": "operators",
5967
- "type": "array",
5968
- "description": "List of active BBPS billers matching the filters.",
5949
+ "name": "param_attributes",
5950
+ "type": "object",
5951
+ "imp": true,
5952
+ "description": "Wrapper for the biller list — returned at the top level of the response, not under `data`.",
5969
5953
  "children": [
5970
5954
  {
5971
- "name": "operator_id",
5972
- "type": "number",
5973
- "description": "Unique operator identifier. Pass this value in Fetch Bill and Pay Bill requests.",
5974
- "imp": true,
5975
- "example": 83
5976
- },
5977
- {
5978
- "name": "operator_name",
5979
- "type": "string",
5980
- "description": "Display name of the biller.",
5981
- "imp": true,
5982
- "example": "BSES Rajdhani"
5983
- },
5984
- {
5985
- "name": "category_id",
5986
- "type": "number",
5987
- "description": "Category this operator belongs to.",
5988
- "example": 5
5989
- },
5990
- {
5991
- "name": "billFetchResponse",
5992
- "type": "number",
5993
- "description": "1 = must call Fetch Bill API before Pay Bill; 0 = can pay directly.",
5955
+ "name": "list_elements",
5956
+ "type": "array",
5994
5957
  "imp": true,
5995
- "example": 1
5996
- },
5997
- {
5998
- "name": "high_commission_channel",
5999
- "type": "number",
6000
- "description": "0 = instant settlement (default); 1 = delayed channel with higher commissions.",
6001
- "example": 0
5958
+ "description": "One entry per biller matching the filters.",
5959
+ "children": [
5960
+ {
5961
+ "name": "operator_id",
5962
+ "type": "number",
5963
+ "description": "Biller identifier. Pass as `phone_operator_code` to Fetch Bill and Pay Bill.",
5964
+ "imp": true,
5965
+ "example": 541
5966
+ },
5967
+ {
5968
+ "name": "name",
5969
+ "type": "string",
5970
+ "description": "Biller name.",
5971
+ "imp": true,
5972
+ "example": "Port Blair Municipal Council - Water"
5973
+ },
5974
+ {
5975
+ "name": "operator_category",
5976
+ "type": "number",
5977
+ "description": "Category this operator belongs to.",
5978
+ "example": 11
5979
+ },
5980
+ {
5981
+ "name": "location_id",
5982
+ "type": "number",
5983
+ "description": "Location this operator serves; `0` = pan-India.",
5984
+ "example": 35
5985
+ },
5986
+ {
5987
+ "name": "kyc_required",
5988
+ "type": "number",
5989
+ "description": "Whether customer KYC is required for this operator.",
5990
+ "example": 0
5991
+ },
5992
+ {
5993
+ "name": "billFetchResponse",
5994
+ "type": "number",
5995
+ "description": "Whether the operator supports live bill fetch (`1` = yes).",
5996
+ "imp": true,
5997
+ "example": 0
5998
+ },
5999
+ {
6000
+ "name": "high_commission_channel",
6001
+ "type": "number",
6002
+ "description": "Whether the biller is available on the higher-commission channel.",
6003
+ "example": 0
6004
+ }
6005
+ ]
6002
6006
  }
6003
6007
  ]
6004
6008
  }
@@ -6006,38 +6010,58 @@
6006
6010
  }
6007
6011
  ],
6008
6012
  "sampleSuccessResponse": {
6009
- "status": 0,
6010
6013
  "response_status_id": 0,
6011
- "message": "Success",
6012
- "response_type_id": 1388,
6013
- "data": {
6014
- "operators": [
6015
- {
6016
- "operator_id": 83,
6017
- "operator_name": "BSES Rajdhani",
6018
- "category_id": 5,
6019
- "billFetchResponse": 1,
6020
- "high_commission_channel": 0
6021
- },
6014
+ "param_attributes": {
6015
+ "list_elements": [
6022
6016
  {
6023
- "operator_id": 84,
6024
- "operator_name": "BSES Yamuna",
6025
- "category_id": 5,
6026
- "billFetchResponse": 1,
6027
- "high_commission_channel": 0
6017
+ "operator_id": 159,
6018
+ "name": "ACT Fibernet",
6019
+ "billFetchResponse": 0,
6020
+ "high_commission_channel": 0,
6021
+ "kyc_required": 1,
6022
+ "operator_category": 1,
6023
+ "location_id": 0
6028
6024
  },
6029
6025
  {
6030
- "operator_id": 87,
6031
- "operator_name": "Tata Power Delhi Distribution",
6032
- "category_id": 5,
6026
+ "operator_id": 541,
6027
+ "name": "Port Blair Municipal Council - Water",
6033
6028
  "billFetchResponse": 0,
6034
- "high_commission_channel": 0
6029
+ "high_commission_channel": 0,
6030
+ "kyc_required": 0,
6031
+ "operator_category": 11,
6032
+ "location_id": 35
6035
6033
  }
6036
6034
  ]
6037
- }
6035
+ },
6036
+ "response_type_id": 2461,
6037
+ "message": "BBPS operators fetch success",
6038
+ "status": 0
6038
6039
  },
6039
- "errorScenarios": [],
6040
- "responseTypes": []
6040
+ "errorScenarios": [
6041
+ {
6042
+ "scenario": "Invalid or missing initiator_id",
6043
+ "statusCode": 200,
6044
+ "example": {
6045
+ "response_status_id": 1,
6046
+ "invalid_params": {
6047
+ "initiator_id": "Merchant does not exist in system."
6048
+ },
6049
+ "data": {
6050
+ "csp_id": "7042769385"
6051
+ },
6052
+ "response_type_id": -1,
6053
+ "message": "Invalid Sender/Initiator",
6054
+ "status": 319
6055
+ }
6056
+ }
6057
+ ],
6058
+ "responseTypes": [
6059
+ {
6060
+ "id": 2461,
6061
+ "meaning": "Biller list returned — read the chosen operator's input fields next.",
6062
+ "next": "bbps-get-operator-parameters"
6063
+ }
6064
+ ]
6041
6065
  },
6042
6066
  {
6043
6067
  "slug": "bbps-get-operator-parameters",
@@ -6049,7 +6073,7 @@
6049
6073
  "summary": "Fetch the custom input fields required by a specific biller before payment.",
6050
6074
  "category": "payment",
6051
6075
  "relevance": "M",
6052
- "description": "Returns the operator-specific parameter schema — field names, labels, data types, and validation regex — needed to build a dynamic payment form. Also returns `fetchBill` (1 = mandatory Fetch Bill step) and `BBPS` (1 = show Bharat BillPay branding). Call this once per operator and cache the result.",
6076
+ "description": "Returns the input fields the chosen operator requires — field names, labels, types and validation regex — so you can render the bill-entry form dynamically.\n\n**`list_elements` is the source of truth for this operator's fields.** The documented parameters on Fetch Bill and Pay Bill are only the common set; every `param_name` returned here must also be sent to **both** calls, with identical values. Call this once per operator and cache the result.\n\nThe payload is returned under `param_attributes`, not under `data`.",
6053
6077
  "bestFor": "Rendering a dynamic bill payment form with correct validation for each biller.",
6054
6078
  "docsUrl": "https://eps.eko.in/docs/bbps-get-operator-parameters",
6055
6079
  "headers": [
@@ -6104,8 +6128,8 @@
6104
6128
  "name": "operator_id",
6105
6129
  "type": "number",
6106
6130
  "required": true,
6107
- "description": "The operator/biller ID from the Get Operators response.",
6108
- "example": 83,
6131
+ "description": "The `operator_id` from the Get Operators response.",
6132
+ "example": 5,
6109
6133
  "in": "path"
6110
6134
  }
6111
6135
  ],
@@ -6141,53 +6165,81 @@
6141
6165
  "description": "API-specific response payload.",
6142
6166
  "children": [
6143
6167
  {
6144
- "name": "fetchBill",
6145
- "type": "number",
6146
- "description": "1 = Fetch Bill API must be called before Pay Bill; 0 = direct payment allowed.",
6168
+ "name": "param_attributes",
6169
+ "type": "object",
6147
6170
  "imp": true,
6148
- "example": 1
6149
- },
6150
- {
6151
- "name": "BBPS",
6152
- "type": "number",
6153
- "description": "1 = biller is on the BBPS network; display the Bharat BillPay logo per NPCI guidelines.",
6154
- "example": 1
6155
- },
6156
- {
6157
- "name": "data",
6158
- "type": "array",
6159
- "description": "List of input parameters required by this biller.",
6171
+ "description": "Wrapper for the operator's parameter schema — returned at the top level of the response, not under `data`.",
6160
6172
  "children": [
6161
6173
  {
6162
- "name": "param_name",
6174
+ "name": "operator_name",
6163
6175
  "type": "string",
6164
- "description": "API field name to send in the Fetch Bill / Pay Bill request.",
6176
+ "description": "Display name of the operator.",
6165
6177
  "imp": true,
6166
- "example": "utility_acc_no"
6178
+ "example": "BSNL Prepaid"
6167
6179
  },
6168
6180
  {
6169
- "name": "param_label",
6170
- "type": "string",
6171
- "description": "UI label to display to the end user.",
6172
- "example": "Consumer Number"
6181
+ "name": "operator_id",
6182
+ "type": "number",
6183
+ "description": "The operator this schema belongs to.",
6184
+ "example": 5
6173
6185
  },
6174
6186
  {
6175
- "name": "param_type",
6176
- "type": "string",
6177
- "description": "Input type: Numeric, Decimal, AlphaNumeric, or List.",
6178
- "example": "Numeric"
6187
+ "name": "fetchBill",
6188
+ "type": "number",
6189
+ "description": "Whether live bill fetch is supported (`1` = yes).",
6190
+ "imp": true,
6191
+ "example": 0
6179
6192
  },
6180
6193
  {
6181
- "name": "regex",
6182
- "type": "string",
6183
- "description": "Regular expression to validate the user's input before submission.",
6184
- "example": "^[0-9]{10,12}$"
6194
+ "name": "BBPS",
6195
+ "type": "number",
6196
+ "description": "Whether the biller is on the BBPS network; display Bharat BillPay branding per NPCI guidelines.",
6197
+ "example": 0
6185
6198
  },
6186
6199
  {
6187
- "name": "error_message",
6188
- "type": "string",
6189
- "description": "Validation error message to show when the regex does not match.",
6190
- "example": "Please enter a valid 10-12 digit consumer number."
6200
+ "name": "list_elements",
6201
+ "type": "array",
6202
+ "imp": true,
6203
+ "description": "The input fields this operator requires. Send every `param_name` to BOTH Fetch Bill and Pay Bill.",
6204
+ "children": [
6205
+ {
6206
+ "name": "param_name",
6207
+ "type": "string",
6208
+ "description": "Field name to submit at bill-fetch / pay time.",
6209
+ "imp": true,
6210
+ "example": "utility_acc_no"
6211
+ },
6212
+ {
6213
+ "name": "param_label",
6214
+ "type": "string",
6215
+ "description": "Label to show the agent.",
6216
+ "example": "Mobile Number"
6217
+ },
6218
+ {
6219
+ "name": "param_id",
6220
+ "type": "string",
6221
+ "description": "Identifier for this field.",
6222
+ "example": "1"
6223
+ },
6224
+ {
6225
+ "name": "param_type",
6226
+ "type": "string",
6227
+ "description": "Field type — e.g. `Numeric`, `List`.",
6228
+ "example": "Numeric"
6229
+ },
6230
+ {
6231
+ "name": "regex",
6232
+ "type": "string",
6233
+ "description": "Client-side validation pattern.",
6234
+ "example": "^[0-9]{10}$"
6235
+ },
6236
+ {
6237
+ "name": "error_message",
6238
+ "type": "string",
6239
+ "description": "Validation message to show when the regex does not match.",
6240
+ "example": "Please enter a valid 10 digit Mobile Number (eg. 0940763946)"
6241
+ }
6242
+ ]
6191
6243
  }
6192
6244
  ]
6193
6245
  }
@@ -6195,40 +6247,57 @@
6195
6247
  }
6196
6248
  ],
6197
6249
  "sampleSuccessResponse": {
6198
- "status": 0,
6199
6250
  "response_status_id": 0,
6200
- "message": "Success",
6201
- "response_type_id": 1388,
6202
- "data": {
6203
- "fetchBill": 1,
6204
- "BBPS": 1,
6205
- "data": [
6251
+ "param_attributes": {
6252
+ "operator_name": "BSNL Prepaid",
6253
+ "list_elements": [
6206
6254
  {
6255
+ "param_label": "Mobile Number",
6207
6256
  "param_name": "utility_acc_no",
6208
- "param_label": "Consumer Number",
6257
+ "param_id": "1",
6209
6258
  "param_type": "Numeric",
6210
- "regex": "^[0-9]{10,12}$",
6211
- "error_message": "Please enter a valid 10-12 digit consumer number."
6259
+ "regex": "^[0-9]{10}$",
6260
+ "error_message": "Please enter a valid 10 digit Mobile Number (eg. 0940763946)"
6261
+ },
6262
+ {
6263
+ "param_label": "Recharge Type",
6264
+ "param_name": "Recharge Type",
6265
+ "param_id": "99",
6266
+ "param_type": "List",
6267
+ "regex": "1|3",
6268
+ "error_message": "Please enter valid Recharge Type"
6212
6269
  }
6213
- ]
6214
- }
6270
+ ],
6271
+ "operator_id": 5,
6272
+ "fetchBill": 0,
6273
+ "BBPS": 0
6274
+ },
6275
+ "response_type_id": 2463,
6276
+ "message": "BBPS operator parameters fetch success",
6277
+ "status": 0
6215
6278
  },
6216
6279
  "errorScenarios": [],
6217
- "responseTypes": []
6280
+ "responseTypes": [
6281
+ {
6282
+ "id": 2463,
6283
+ "meaning": "Parameter schema returned — collect these fields, then fetch the bill.",
6284
+ "next": "bbps-fetch-bill"
6285
+ }
6286
+ ]
6218
6287
  },
6219
6288
  {
6220
- "slug": "bbps-fetch-bill",
6289
+ "slug": "bbps-district-discome",
6221
6290
  "productId": "bbps",
6222
6291
  "productName": "Bharat Bill Payment System (BBPS)",
6223
- "name": "Fetch BBPS Bill",
6292
+ "name": "Get District Discome (UPPCL)",
6224
6293
  "method": "GET",
6225
- "path": "/customer/payment/bbps/bill",
6226
- "summary": "Retrieve outstanding bill details from a biller before processing payment.",
6294
+ "path": "/customer/payment/bbps/operators/190/district-discome",
6295
+ "summary": "Resolve the district-level distribution company code required by UPPCL (operator 190).",
6227
6296
  "category": "payment",
6228
- "relevance": "H",
6229
- "description": "Fetches the live bill for a customer from the biller's system. Required for operators where `billFetchResponse = 1`. The response includes the outstanding amount, due date, and a `billfetchresponse` token that must be forwarded verbatim in the subsequent Pay Bill call. Pass `hc_channel=1` to use the higher-commission delayed channel.",
6230
- "bestFor": "Showing the customer their outstanding bill amount and due date before confirming payment.",
6231
- "docsUrl": "https://eps.eko.in/docs/bbps-fetch-bill",
6297
+ "relevance": "L",
6298
+ "description": "Some electricity billers require a district-level distribution company (discome) code. This applies to **operator 190 (UPPCL) only** — no other biller needs it, and the path is fixed to `190` rather than parameterised.\n\nShow the agent each `label` and send the matching `value` as `district_discome` on both Fetch Bill and Pay Bill.\n\nThe list is returned under `param_attributes.list_elements`, not under `data`.",
6299
+ "bestFor": "Populating the district picker for UPPCL electricity bill payments.",
6300
+ "docsUrl": "https://eps.eko.in/docs/bbps-district-discome",
6232
6301
  "headers": [
6233
6302
  {
6234
6303
  "name": "developer_key",
@@ -6276,86 +6345,190 @@
6276
6345
  "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
6277
6346
  "example": "2026010100123456789",
6278
6347
  "in": "query"
6348
+ }
6349
+ ],
6350
+ "sampleRequest": {},
6351
+ "responseFields": [
6352
+ {
6353
+ "name": "status",
6354
+ "type": "number",
6355
+ "description": "Primary success indicator (0 = success).",
6356
+ "example": 0
6279
6357
  },
6280
6358
  {
6281
- "name": "utility_acc_no",
6359
+ "name": "message",
6282
6360
  "type": "string",
6283
- "required": true,
6284
- "description": "Customer's account / consumer number with the biller.",
6285
- "example": "1234567890",
6286
- "in": "query"
6361
+ "description": "Human-readable response / error message.",
6362
+ "example": "Verification successful"
6287
6363
  },
6288
6364
  {
6289
- "name": "confirmation_mobile_no",
6290
- "type": "string",
6291
- "required": true,
6292
- "description": "Customer's mobile number for transaction confirmation.",
6293
- "example": "9999988888",
6294
- "in": "query"
6365
+ "name": "response_status_id",
6366
+ "type": "number",
6367
+ "description": "Granular status id; see the shared error-codes table.",
6368
+ "example": 0
6295
6369
  },
6296
6370
  {
6297
- "name": "sender_name",
6298
- "type": "string",
6299
- "required": true,
6300
- "description": "Customer's full name.",
6301
- "example": "Ramesh Kumar",
6302
- "in": "query"
6371
+ "name": "response_type_id",
6372
+ "type": "number",
6373
+ "description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
6374
+ "example": 1388
6303
6375
  },
6304
6376
  {
6305
- "name": "operator_id",
6377
+ "name": "data",
6378
+ "type": "object",
6379
+ "description": "API-specific response payload.",
6380
+ "children": [
6381
+ {
6382
+ "name": "param_attributes",
6383
+ "type": "object",
6384
+ "imp": true,
6385
+ "description": "Wrapper for the district list — returned at the top level of the response, not under `data`.",
6386
+ "children": [
6387
+ {
6388
+ "name": "list_elements",
6389
+ "type": "array",
6390
+ "imp": true,
6391
+ "description": "One entry per UPPCL district.",
6392
+ "children": [
6393
+ {
6394
+ "name": "label",
6395
+ "type": "string",
6396
+ "description": "District name to show the agent.",
6397
+ "imp": true,
6398
+ "example": "Lucknow"
6399
+ },
6400
+ {
6401
+ "name": "value",
6402
+ "type": "string",
6403
+ "description": "The `district_discome` value to pass to Fetch Bill and Pay Bill for operator 190.",
6404
+ "imp": true,
6405
+ "example": "Lucknow-MVVNL"
6406
+ }
6407
+ ]
6408
+ }
6409
+ ]
6410
+ }
6411
+ ]
6412
+ }
6413
+ ],
6414
+ "sampleSuccessResponse": {
6415
+ "response_status_id": 0,
6416
+ "param_attributes": {
6417
+ "list_elements": [
6418
+ {
6419
+ "label": "Agra",
6420
+ "value": "Agra-DVVNL"
6421
+ },
6422
+ {
6423
+ "label": "Lucknow",
6424
+ "value": "Lucknow-MVVNL"
6425
+ },
6426
+ {
6427
+ "label": "Kanpur Nagar",
6428
+ "value": "Kanpur Nagar-KESCO"
6429
+ },
6430
+ {
6431
+ "label": "Varanasi",
6432
+ "value": "Varanasi-PUVNL"
6433
+ }
6434
+ ]
6435
+ },
6436
+ "response_type_id": 2110,
6437
+ "message": "Success",
6438
+ "status": 0
6439
+ },
6440
+ "errorScenarios": [
6441
+ {
6442
+ "scenario": "Districts unavailable — note this still returns status 0, so branch on response_type_id",
6443
+ "statusCode": 200,
6444
+ "example": {
6445
+ "response_status_id": 0,
6446
+ "response_type_id": 2434,
6447
+ "message": "Failed to fetch districts",
6448
+ "status": 0
6449
+ }
6450
+ }
6451
+ ],
6452
+ "responseTypes": [
6453
+ {
6454
+ "id": 2110,
6455
+ "meaning": "District list returned — pass the chosen `value` as `district_discome` when fetching the bill.",
6456
+ "next": "bbps-fetch-bill"
6457
+ },
6458
+ {
6459
+ "id": 2434,
6460
+ "meaning": "Districts could not be fetched. The envelope still carries `status: 0`, so branch on this id rather than on `status`."
6461
+ }
6462
+ ]
6463
+ },
6464
+ {
6465
+ "slug": "bbps-operator-code-circle",
6466
+ "productId": "bbps",
6467
+ "productName": "Bharat Bill Payment System (BBPS)",
6468
+ "name": "Get Operator Code and Circle",
6469
+ "method": "GET",
6470
+ "path": "/customer/payment/bbps/recharge/{customer_mobile}/operator",
6471
+ "summary": "Auto-detect a mobile number's recharge operator code and telecom circle.",
6472
+ "category": "payment",
6473
+ "relevance": "M",
6474
+ "description": "Detects the telecom operator and circle for a customer mobile number, returned as name/value pairs under `dependent_params` at the top level of the response (not under `data`).\n\n**Watch the rename:** this endpoint returns `circle_area`, but Get Recharge Plans expects that value as the **`circleid`** query parameter. The `phone_operator_code` value carries over under the same name.",
6475
+ "bestFor": "Resolving operator and circle before fetching recharge plans.",
6476
+ "docsUrl": "https://eps.eko.in/docs/bbps-operator-code-circle",
6477
+ "headers": [
6478
+ {
6479
+ "name": "developer_key",
6480
+ "in": "header",
6306
6481
  "type": "string",
6307
6482
  "required": true,
6308
- "description": "Biller identifier from the Get Operators response.",
6309
- "example": "83",
6310
- "in": "query"
6483
+ "description": "Static API key issued to your account after KYC."
6311
6484
  },
6312
6485
  {
6313
- "name": "source_ip",
6486
+ "name": "secret-key",
6487
+ "in": "header",
6314
6488
  "type": "string",
6315
6489
  "required": true,
6316
- "description": "IP address of the agent or retailer making this request.",
6317
- "example": "192.168.1.1",
6318
- "in": "query"
6490
+ "description": "Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key)))."
6319
6491
  },
6320
6492
  {
6321
- "name": "latlong",
6493
+ "name": "secret-key-timestamp",
6494
+ "in": "header",
6322
6495
  "type": "string",
6323
6496
  "required": true,
6324
- "description": "Agent's GPS coordinates as `latitude,longitude`. Mandatory for agent activation compliance.",
6325
- "example": "28.6139,77.2090",
6326
- "in": "query"
6497
+ "description": "Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time."
6327
6498
  },
6328
6499
  {
6329
- "name": "hc_channel",
6330
- "type": "number",
6331
- "required": false,
6332
- "description": "Payment channel: 0 = Instant (default), 1 = Delayed (higher commissions).",
6333
- "example": 0,
6334
- "in": "query"
6335
- },
6500
+ "name": "content-type",
6501
+ "in": "header",
6502
+ "type": "string",
6503
+ "required": true,
6504
+ "description": "application/json",
6505
+ "example": "application/json"
6506
+ }
6507
+ ],
6508
+ "requestParams": [
6336
6509
  {
6337
- "name": "dob",
6510
+ "name": "initiator_id",
6338
6511
  "type": "string",
6339
- "required": false,
6340
- "description": "Date of birth of the policy holder in DD/MM/YYYY format. Required for LIC policies.",
6341
- "example": "15/08/1985",
6512
+ "required": true,
6513
+ "description": "Registered mobile number of the API user (see Platform Credentials).",
6514
+ "example": "9962981729",
6342
6515
  "in": "query"
6343
6516
  },
6344
6517
  {
6345
- "name": "cycle_number",
6518
+ "name": "client_ref_id",
6346
6519
  "type": "string",
6347
6520
  "required": false,
6348
- "description": "Electricity bill cycle number. Required for MSEB billers.",
6349
- "example": "202406",
6521
+ "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
6522
+ "example": "2026010100123456789",
6350
6523
  "in": "query"
6351
6524
  },
6352
6525
  {
6353
- "name": "authenticator",
6526
+ "name": "customer_mobile",
6354
6527
  "type": "string",
6355
- "required": false,
6356
- "description": "MSEB portal password. Required for certain MSEB accounts.",
6357
- "example": "mypassword123",
6358
- "in": "query"
6528
+ "required": true,
6529
+ "description": "Customer's mobile number.",
6530
+ "example": "9876543210",
6531
+ "in": "path"
6359
6532
  }
6360
6533
  ],
6361
6534
  "sampleRequest": {},
@@ -6390,101 +6563,69 @@
6390
6563
  "description": "API-specific response payload.",
6391
6564
  "children": [
6392
6565
  {
6393
- "name": "bill_amount",
6394
- "type": "string",
6395
- "description": "Outstanding bill amount in paise (divide by 100 for rupees).",
6396
- "imp": true,
6397
- "example": "135000"
6398
- },
6399
- {
6400
- "name": "due_date",
6401
- "type": "string",
6402
- "description": "Bill due date returned by the biller.",
6403
- "imp": true,
6404
- "example": "30/06/2024"
6405
- },
6406
- {
6407
- "name": "bill_number",
6408
- "type": "string",
6409
- "description": "Biller-assigned bill or reference number.",
6410
- "imp": true,
6411
- "example": "BN20240601XYZ"
6412
- },
6413
- {
6414
- "name": "bill_date",
6415
- "type": "string",
6416
- "description": "Date the bill was generated.",
6417
- "example": "01/06/2024"
6418
- },
6419
- {
6420
- "name": "customer_name",
6421
- "type": "string",
6422
- "description": "Customer name as registered with the biller.",
6423
- "imp": true,
6424
- "example": "Ramesh Kumar"
6425
- },
6426
- {
6427
- "name": "billfetchresponse",
6428
- "type": "string",
6429
- "description": "Opaque token from the biller's system. Must be passed as-is in the Pay Bill request body when the operator requires it.",
6566
+ "name": "dependent_params",
6567
+ "type": "array",
6430
6568
  "imp": true,
6431
- "example": "eyJhbGciOiJSUzI1NiJ9..."
6569
+ "description": "Resolved operator/circle as name-value pairs (`phone_operator_code`, `circle_area`) — returned at the top level, not under `data`.",
6570
+ "children": [
6571
+ {
6572
+ "name": "name",
6573
+ "type": "string",
6574
+ "description": "Parameter name (`phone_operator_code` or `circle_area`).",
6575
+ "example": "phone_operator_code"
6576
+ },
6577
+ {
6578
+ "name": "value",
6579
+ "type": "number",
6580
+ "description": "Parameter value. Pass `circle_area`'s value on as `circleid` to Get Recharge Plans.",
6581
+ "example": 400
6582
+ }
6583
+ ]
6432
6584
  }
6433
6585
  ]
6434
6586
  }
6435
6587
  ],
6436
6588
  "sampleSuccessResponse": {
6437
- "status": 0,
6438
6589
  "response_status_id": 0,
6439
- "message": "Bill fetched successfully",
6440
- "response_type_id": 1388,
6441
- "data": {
6442
- "bill_amount": "135000",
6443
- "due_date": "30/06/2024",
6444
- "bill_number": "BN20240601XYZ",
6445
- "bill_date": "01/06/2024",
6446
- "customer_name": "Ramesh Kumar",
6447
- "billfetchresponse": "eyJhbGciOiJSUzI1NiJ9..."
6448
- }
6449
- },
6450
- "errorScenarios": [
6451
- {
6452
- "scenario": "Invalid consumer number — biller returns no bill",
6453
- "statusCode": 200,
6454
- "example": {
6455
- "status": 1,
6456
- "response_status_id": 131,
6457
- "message": "Invalid account number. Please check and retry.",
6458
- "data": {}
6590
+ "dependent_params": [
6591
+ {
6592
+ "name": "phone_operator_code",
6593
+ "value": 1
6594
+ },
6595
+ {
6596
+ "name": "circle_area",
6597
+ "value": "23"
6459
6598
  }
6599
+ ],
6600
+ "data": {
6601
+ "updates": ""
6460
6602
  },
6603
+ "response_type_id": 1804,
6604
+ "message": "success",
6605
+ "status": 0
6606
+ },
6607
+ "errorScenarios": [],
6608
+ "responseTypes": [
6461
6609
  {
6462
- "scenario": "Biller system unavailable",
6463
- "statusCode": 200,
6464
- "example": {
6465
- "status": 1,
6466
- "response_status_id": 151,
6467
- "message": "Biller system is temporarily unavailable. Please try again later.",
6468
- "data": {}
6469
- }
6610
+ "id": 1804,
6611
+ "meaning": "Operator and circle detected — list the plans available for them.",
6612
+ "next": "bbps-recharge-plans"
6470
6613
  }
6471
- ],
6472
- "responseTypes": []
6614
+ ]
6473
6615
  },
6474
6616
  {
6475
- "slug": "bbps-pay-bill",
6617
+ "slug": "bbps-recharge-plans",
6476
6618
  "productId": "bbps",
6477
6619
  "productName": "Bharat Bill Payment System (BBPS)",
6478
- "name": "Pay BBPS Bill",
6479
- "method": "POST",
6480
- "path": "/customer/payment/bbps",
6481
- "summary": "Process a bill payment or recharge for any BBPS-connected biller.",
6620
+ "name": "Get Recharge Plans",
6621
+ "method": "GET",
6622
+ "path": "/customer/payment/bbps/recharge/{customer_mobile}/operator/plans",
6623
+ "summary": "List the prepaid mobile / DTH recharge plans available for an operator and circle.",
6482
6624
  "category": "payment",
6483
- "relevance": "H",
6484
- "description": "The core money-debit API that executes a bill payment or prepaid recharge on the BBPS network. For operators where `billFetchResponse = 1`, the `billfetchresponse` token returned by the Fetch Bill API must be included. Parameter names sent here must exactly match the `param_name` values from Get Operator Parameters. Pass `hc_channel=1` to route through the high-commission channel, which can take up to 6 hours to settle on the biller side.",
6485
- "bestFor": "Executing utility bill payments and prepaid recharges for end customers.",
6486
- "docsUrl": "https://eps.eko.in/docs/bbps-pay-bill",
6487
- "financial": true,
6625
+ "relevance": "M",
6626
+ "description": "Lists available recharge plans for an operator and circle. Plans arrive under `dependent_params` at the top level (not under `data`): the `req_list` entry's `value` array holds the plans, and its `type_metadata[].headers` describe which field is the price, the validity and the description.\n\n**`circleid` is the `circle_area` value** returned by Get Operator Code and Circle — the parameter is renamed between the two calls. Once the customer picks a plan, submit its `amount` through Pay Bill.",
6627
+ "bestFor": "Showing the customer the available recharge packs before submitting the recharge.",
6628
+ "docsUrl": "https://eps.eko.in/docs/bbps-recharge-plans",
6488
6629
  "headers": [
6489
6630
  {
6490
6631
  "name": "developer_key",
@@ -6523,7 +6664,7 @@
6523
6664
  "required": true,
6524
6665
  "description": "Registered mobile number of the API user (see Platform Credentials).",
6525
6666
  "example": "9962981729",
6526
- "in": "body"
6667
+ "in": "query"
6527
6668
  },
6528
6669
  {
6529
6670
  "name": "client_ref_id",
@@ -6531,103 +6672,34 @@
6531
6672
  "required": false,
6532
6673
  "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
6533
6674
  "example": "2026010100123456789",
6534
- "in": "body"
6535
- },
6536
- {
6537
- "name": "utility_acc_no",
6538
- "type": "string",
6539
- "required": true,
6540
- "description": "Customer's account or consumer number with the biller.",
6541
- "example": "1234567890",
6542
- "in": "body"
6543
- },
6544
- {
6545
- "name": "confirmation_mobile_no",
6546
- "type": "string",
6547
- "required": true,
6548
- "description": "Customer's mobile number for payment confirmation.",
6549
- "example": "9999988888",
6550
- "in": "body"
6551
- },
6552
- {
6553
- "name": "sender_name",
6554
- "type": "string",
6555
- "required": true,
6556
- "description": "Customer's full name.",
6557
- "example": "Ramesh Kumar",
6558
- "in": "body"
6559
- },
6560
- {
6561
- "name": "operator_id",
6562
- "type": "string",
6563
- "required": true,
6564
- "description": "Biller identifier from the Get Operators response.",
6565
- "example": "83",
6566
- "in": "body"
6675
+ "in": "query"
6567
6676
  },
6568
6677
  {
6569
- "name": "amount",
6678
+ "name": "customer_mobile",
6570
6679
  "type": "string",
6571
6680
  "required": true,
6572
- "description": "Payment amount in rupees (e.g. '1350' for ₹1,350).",
6573
- "example": "1350",
6574
- "in": "body"
6681
+ "description": "Customer's mobile number.",
6682
+ "example": "9876543210",
6683
+ "in": "path"
6575
6684
  },
6576
6685
  {
6577
- "name": "source_ip",
6686
+ "name": "phone_operator_code",
6578
6687
  "type": "string",
6579
6688
  "required": true,
6580
- "description": "IP address of the agent or retailer making this request.",
6581
- "example": "192.168.1.1",
6582
- "in": "body"
6689
+ "description": "Operator code from the Get Operator Code and Circle response.",
6690
+ "example": "400",
6691
+ "in": "query"
6583
6692
  },
6584
6693
  {
6585
- "name": "latlong",
6694
+ "name": "circleid",
6586
6695
  "type": "string",
6587
6696
  "required": true,
6588
- "description": "Agent's GPS coordinates as `latitude,longitude`. Mandatory for agent activation compliance.",
6589
- "example": "28.6139,77.2090",
6590
- "in": "body"
6591
- },
6592
- {
6593
- "name": "billfetchresponse",
6594
- "type": "string",
6595
- "required": false,
6596
- "description": "The opaque token returned by the Fetch Bill API. Required when the operator's `billFetchResponse = 1`.",
6597
- "example": "eyJhbGciOiJSUzI1NiJ9...",
6598
- "in": "body"
6599
- },
6600
- {
6601
- "name": "dob",
6602
- "type": "string",
6603
- "required": false,
6604
- "description": "Date of birth of the policy holder in DD/MM/YYYY format. Required for LIC policy payments.",
6605
- "example": "15/08/1985",
6606
- "in": "body"
6607
- },
6608
- {
6609
- "name": "postalcode",
6610
- "type": "number",
6611
- "required": false,
6612
- "description": "6-digit PIN code of the customer. Required for MSEB electricity payments.",
6613
- "example": 400001,
6614
- "in": "body"
6697
+ "description": "Circle identifier — the value returned as `circle_area` by Get Operator Code and Circle. Note the name differs between the two endpoints.",
6698
+ "example": "5",
6699
+ "in": "query"
6615
6700
  }
6616
6701
  ],
6617
- "sampleRequest": {
6618
- "initiator_id": "9962981729",
6619
- "client_ref_id": "2026010100123456789",
6620
- "utility_acc_no": "1234567890",
6621
- "confirmation_mobile_no": "9999988888",
6622
- "sender_name": "Ramesh Kumar",
6623
- "operator_id": "83",
6624
- "amount": "1350",
6625
- "source_ip": "192.168.1.1",
6626
- "latlong": "28.6139,77.2090",
6627
- "billfetchresponse": "eyJhbGciOiJSUzI1NiJ9...",
6628
- "dob": "15/08/1985",
6629
- "postalcode": 400001
6630
- },
6702
+ "sampleRequest": {},
6631
6703
  "responseFields": [
6632
6704
  {
6633
6705
  "name": "status",
@@ -6653,137 +6725,150 @@
6653
6725
  "description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
6654
6726
  "example": 1388
6655
6727
  },
6656
- {
6657
- "name": "tx_status",
6658
- "type": "string",
6659
- "description": "Transaction state: 0=Success, 1=Fail, 2=Awaited, 3=Refund Pending, 4=Refunded, 5=On Hold.",
6660
- "example": "0"
6661
- },
6662
- {
6663
- "name": "txstatus_desc",
6664
- "type": "string",
6665
- "description": "Human-readable transaction status.",
6666
- "example": "Success"
6667
- },
6668
6728
  {
6669
6729
  "name": "data",
6670
6730
  "type": "object",
6671
6731
  "description": "API-specific response payload.",
6672
6732
  "children": [
6673
6733
  {
6674
- "name": "tid",
6675
- "type": "string",
6676
- "description": "Eko's unique transaction identifier. Use this for status enquiry and dispute resolution.",
6677
- "imp": true,
6678
- "example": "1734567890"
6679
- },
6680
- {
6681
- "name": "operator_ref_id",
6682
- "type": "string",
6683
- "description": "Reference number issued by the biller / BBPS network confirming receipt of payment.",
6684
- "imp": true,
6685
- "example": "BBPS202406011234"
6686
- },
6687
- {
6688
- "name": "amount",
6689
- "type": "string",
6690
- "description": "Amount debited for this transaction.",
6734
+ "name": "dependent_params",
6735
+ "type": "array",
6691
6736
  "imp": true,
6692
- "example": "1350"
6693
- },
6694
- {
6695
- "name": "balance",
6696
- "type": "string",
6697
- "description": "Remaining wallet balance of the agent after this transaction.",
6698
- "example": "4820.50"
6699
- },
6700
- {
6701
- "name": "utility_acc_no",
6702
- "type": "string",
6703
- "description": "Consumer/account number against which the payment was made.",
6704
- "example": "1234567890"
6705
- },
6706
- {
6707
- "name": "client_ref_id",
6708
- "type": "string",
6709
- "description": "Your reference ID echoed back.",
6710
- "example": "BBPS-20240601-001"
6737
+ "description": "Plan groups — returned at the top level, not under `data`. The entry named `req_list` carries the plans.",
6738
+ "children": [
6739
+ {
6740
+ "name": "name",
6741
+ "type": "string",
6742
+ "description": "Group name; `req_list` holds the plan list.",
6743
+ "example": "req_list"
6744
+ },
6745
+ {
6746
+ "name": "value",
6747
+ "type": "array",
6748
+ "imp": true,
6749
+ "description": "The available plans.",
6750
+ "children": [
6751
+ {
6752
+ "name": "amount",
6753
+ "type": "string",
6754
+ "description": "Plan price in rupees. Send this as `amount` to Pay Bill.",
6755
+ "imp": true,
6756
+ "example": "349"
6757
+ },
6758
+ {
6759
+ "name": "validity",
6760
+ "type": "string",
6761
+ "description": "How long the plan is valid for.",
6762
+ "imp": true,
6763
+ "example": "28 Days"
6764
+ },
6765
+ {
6766
+ "name": "plan_description",
6767
+ "type": "string",
6768
+ "description": "What the plan includes.",
6769
+ "imp": true,
6770
+ "example": "1.5 GB/day + Unlimited Calls ..."
6771
+ }
6772
+ ]
6773
+ },
6774
+ {
6775
+ "name": "type_metadata",
6776
+ "type": "array",
6777
+ "description": "Column metadata describing which plan field is the price, the validity and the description."
6778
+ }
6779
+ ]
6711
6780
  }
6712
6781
  ]
6713
6782
  }
6714
6783
  ],
6715
6784
  "sampleSuccessResponse": {
6716
- "status": 0,
6717
6785
  "response_status_id": 0,
6718
- "message": "Bill payment successful",
6719
- "response_type_id": 333,
6720
- "tx_status": "0",
6721
- "txstatus_desc": "Success",
6722
- "data": {
6723
- "tid": "1734567890",
6724
- "operator_ref_id": "BBPS202406011234",
6725
- "amount": "1350",
6726
- "balance": "4820.50",
6727
- "utility_acc_no": "1234567890",
6728
- "client_ref_id": "BBPS-20240601-001"
6729
- }
6786
+ "dependent_params": [
6787
+ {
6788
+ "type_metadata": [
6789
+ {
6790
+ "headers": [
6791
+ {
6792
+ "name": "amount",
6793
+ "value": "price"
6794
+ },
6795
+ {
6796
+ "name": "validity",
6797
+ "value": "validity"
6798
+ },
6799
+ {
6800
+ "name": "plan_description",
6801
+ "value": "plan_description"
6802
+ }
6803
+ ],
6804
+ "dependent_params": [
6805
+ {
6806
+ "name": "amount",
6807
+ "value": "amount"
6808
+ }
6809
+ ]
6810
+ }
6811
+ ],
6812
+ "name": "req_list",
6813
+ "value": [
6814
+ {
6815
+ "amount": "224",
6816
+ "validity": "30 Days",
6817
+ "plan_description": "Unlimited Calls + 4GB data ..."
6818
+ },
6819
+ {
6820
+ "amount": "349",
6821
+ "validity": "28 Days",
6822
+ "plan_description": "1.5 GB/day + Unlimited Calls ..."
6823
+ }
6824
+ ]
6825
+ }
6826
+ ],
6827
+ "response_type_id": 1804,
6828
+ "message": "success",
6829
+ "status": 0
6730
6830
  },
6731
6831
  "errorScenarios": [
6732
6832
  {
6733
- "scenario": "Insufficient agent wallet balance",
6734
- "statusCode": 200,
6735
- "example": {
6736
- "status": 1,
6737
- "response_status_id": 347,
6738
- "message": "Insufficient balance.",
6739
- "tx_status": "1",
6740
- "txstatus_desc": "Fail",
6741
- "data": {}
6742
- }
6743
- },
6744
- {
6745
- "scenario": "Transaction awaited — biller not confirmed yet",
6833
+ "scenario": "Plans unavailable — note this still returns status 0, so branch on response_type_id",
6746
6834
  "statusCode": 200,
6747
6835
  "example": {
6748
- "status": 0,
6749
6836
  "response_status_id": 0,
6750
- "message": "Transaction is being processed.",
6751
- "tx_status": "2",
6752
- "txstatus_desc": "Response Awaited",
6753
6837
  "data": {
6754
- "tid": "1734567891",
6755
- "amount": "1350"
6756
- }
6838
+ "message": "Unable to fetch plans"
6839
+ },
6840
+ "response_type_id": 1805,
6841
+ "message": "fail to fetch details",
6842
+ "status": 0
6757
6843
  }
6844
+ }
6845
+ ],
6846
+ "responseTypes": [
6847
+ {
6848
+ "id": 1804,
6849
+ "meaning": "Plans returned — let the customer pick one, then submit its `amount` as the recharge.",
6850
+ "next": "bbps-pay-bill"
6758
6851
  },
6759
6852
  {
6760
- "scenario": "Amount mismatch — pay amount differs from fetched bill",
6761
- "statusCode": 200,
6762
- "example": {
6763
- "status": 1,
6764
- "response_status_id": 148,
6765
- "message": "Amount mismatch. Please fetch the bill again and retry.",
6766
- "tx_status": "1",
6767
- "txstatus_desc": "Fail",
6768
- "data": {}
6769
- }
6853
+ "id": 1805,
6854
+ "meaning": "Plans could not be fetched. The envelope still carries `status: 0`, so branch on this id. The recharge can still proceed with an amount entered by the agent.",
6855
+ "next": "bbps-pay-bill"
6770
6856
  }
6771
- ],
6772
- "responseTypes": []
6857
+ ]
6773
6858
  },
6774
6859
  {
6775
- "slug": "bbps-transaction-status",
6860
+ "slug": "bbps-fetch-bill",
6776
6861
  "productId": "bbps",
6777
6862
  "productName": "Bharat Bill Payment System (BBPS)",
6778
- "name": "BBPS Transaction Status",
6863
+ "name": "Fetch BBPS Bill",
6779
6864
  "method": "GET",
6780
- "path": "/tools/reference/transaction/{transaction-reference}",
6781
- "summary": "Check the current status of a BBPS bill payment by Eko TID or your client reference ID.",
6865
+ "path": "/customer/payment/bbps/bill",
6866
+ "summary": "Retrieve outstanding bill details from a biller before processing payment.",
6782
6867
  "category": "payment",
6783
- "relevance": "M",
6784
- "description": "Get the current status of a transaction using either Eko's TID or your own\n`client_ref_id`. This is a generic inquiry endpoint — it works for all Eko\nfinancial transaction types (fund transfer, BBPS, AePS settlement, NEFT, and\nmore).\n\nThe transaction reference goes in the URL path. Pass an Eko **TID as-is**; to\nlook up by your **`client_ref_id`, prefix it** with `client_ref_id:`:\n- By TID — `/tools/reference/transaction/<TID>`\n- By client_ref_id — `/tools/reference/transaction/client_ref_id:<your client_ref_id>`\n\n> [!NOTE]\n> **Examples**\n>\n> To check the status of a transaction using TID `2886601782`, call\n> `/tools/reference/transaction/2886601782`.\n>\n> If you never received Eko's TID (say, due to a network timeout) but sent your\n> own unique reference `567890`, look it up with\n> `/tools/reference/transaction/client_ref_id:567890`.\n\n> [!WARNING]\n> **Transaction timeout**\n>\n> A transaction can time out for many reasons — a slow partner-bank response, or\n> network connectivity causing a delayed or missing response.\n>\n> In such cases the transaction must **not** be treated as declined or failed.\n> Inquire about its real status using this API with your own `client_ref_id`,\n> instead of retrying the payment.\n\n## `tx_status` values\n\n| `tx_status` | Description |\n|---|---|\n| 0 | Success |\n| 1 | Fail |\n| 2 | Response Awaited / Initiated (in case of NEFT) |\n| 3 | Refund Pending |\n| 4 | Refunded |\n| 5 | Hold (Transaction Inquiry required) |",
6785
- "bestFor": "Reconciling pending transactions and confirming payment outcomes when the Pay Bill response is awaited.",
6786
- "docsUrl": "https://eps.eko.in/docs/bbps-transaction-status",
6868
+ "relevance": "H",
6869
+ "description": "Retrieves the live bill amount and customer name for a biller. Call this before Pay Bill so the agent can confirm the amount with the customer.\n\n**Carry `amount` and `utilitycustomername` from this response into Pay Bill**, and use the same `client_ref_id` for the matching Pay Bill call. Paying anything other than the fetched amount is rejected with status `208`.\n\n**Parameters vary by operator.** The fields listed below are the common set — call Get Operator Parameters first and treat its `list_elements` as the source of truth. Every additional `param_name` it returns must be sent here **and** to Pay Bill, with the same values in both.\n\nNote that `response_status_id` is `-1` on success for this endpoint. Branch on `status` and `response_type_id`, never on `response_status_id`.",
6870
+ "bestFor": "Showing the customer their outstanding bill amount and due date before confirming payment.",
6871
+ "docsUrl": "https://eps.eko.in/docs/bbps-fetch-bill",
6787
6872
  "headers": [
6788
6873
  {
6789
6874
  "name": "developer_key",
@@ -6824,21 +6909,77 @@
6824
6909
  "example": "9962981729",
6825
6910
  "in": "query"
6826
6911
  },
6912
+ {
6913
+ "name": "phone_operator_code",
6914
+ "type": "string",
6915
+ "required": true,
6916
+ "description": "Biller identifier — the `operator_id` from the Get Operators response.",
6917
+ "example": "53",
6918
+ "in": "query"
6919
+ },
6920
+ {
6921
+ "name": "utility_acc_no",
6922
+ "type": "string",
6923
+ "required": true,
6924
+ "description": "Bill / account number for the biller.",
6925
+ "example": "3287820071",
6926
+ "in": "query"
6927
+ },
6928
+ {
6929
+ "name": "confirmation_mobile_no",
6930
+ "type": "string",
6931
+ "required": true,
6932
+ "description": "Customer mobile number linked with the bill.",
6933
+ "example": "9903457748",
6934
+ "in": "query"
6935
+ },
6936
+ {
6937
+ "name": "sender_name",
6938
+ "type": "string",
6939
+ "required": true,
6940
+ "description": "Customer name.",
6941
+ "example": "Asaad",
6942
+ "in": "query"
6943
+ },
6944
+ {
6945
+ "name": "category",
6946
+ "type": "number",
6947
+ "required": true,
6948
+ "description": "The `operator_category_id` from Get Categories (e.g. `8` = Electricity).",
6949
+ "example": 8,
6950
+ "in": "query"
6951
+ },
6827
6952
  {
6828
6953
  "name": "client_ref_id",
6829
6954
  "type": "string",
6830
- "required": false,
6831
- "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
6955
+ "required": true,
6956
+ "description": "Unique partner reference for this request. Reuse the same value on the matching Pay Bill call; use a fresh one for every new payment attempt.",
6832
6957
  "example": "2026010100123456789",
6833
6958
  "in": "query"
6834
6959
  },
6835
6960
  {
6836
- "name": "transaction-reference",
6961
+ "name": "source_ip",
6837
6962
  "type": "string",
6838
6963
  "required": true,
6839
- "description": "Eko TID or your `client_ref_id` that identifies the transaction. Pass a TID as-is; to look up by `client_ref_id`, prefix it — e.g. `client_ref_id:567890`.",
6840
- "example": "1734567890",
6841
- "in": "path"
6964
+ "description": "Originating client IP address.",
6965
+ "example": "192.168.1.1",
6966
+ "in": "query"
6967
+ },
6968
+ {
6969
+ "name": "district_discome",
6970
+ "type": "string",
6971
+ "required": false,
6972
+ "description": "District-level distribution company code. Required for **operator 190 (UPPCL) only** — resolve it via the District Discome endpoint.",
6973
+ "example": "Lucknow-MVVNL",
6974
+ "in": "query"
6975
+ },
6976
+ {
6977
+ "name": "state",
6978
+ "type": "string",
6979
+ "required": false,
6980
+ "description": "State code, where the operator requires it.",
6981
+ "example": "1",
6982
+ "in": "query"
6842
6983
  }
6843
6984
  ],
6844
6985
  "sampleRequest": {},
@@ -6873,76 +7014,144 @@
6873
7014
  "description": "API-specific response payload.",
6874
7015
  "children": [
6875
7016
  {
6876
- "name": "tid",
7017
+ "name": "amount",
6877
7018
  "type": "string",
6878
- "description": "Eko's transaction ID.",
7019
+ "description": "Bill amount due, in rupees. Present this to the customer and send the exact same value to Pay Bill.",
6879
7020
  "imp": true,
6880
- "example": "1734567890"
7021
+ "example": "2870.0"
6881
7022
  },
6882
7023
  {
6883
- "name": "amount",
7024
+ "name": "utilitycustomername",
7025
+ "type": "string",
7026
+ "description": "Customer name on the bill. Echo this back as `utilitycustomername` on Pay Bill.",
7027
+ "imp": true,
7028
+ "example": "Amit Kumar"
7029
+ },
7030
+ {
7031
+ "name": "billDueDate",
6884
7032
  "type": "string",
6885
- "description": "Transaction amount in rupees.",
7033
+ "description": "Due date in `YYYYMMDD` format.",
6886
7034
  "imp": true,
6887
- "example": "1350"
7035
+ "example": "20260728"
6888
7036
  },
6889
7037
  {
6890
- "name": "operator_ref_id",
7038
+ "name": "customer_id",
6891
7039
  "type": "string",
6892
- "description": "Biller or BBPS network reference number.",
7040
+ "description": "Account / consumer number resolved by the biller.",
6893
7041
  "imp": true,
6894
- "example": "BBPS202406011234"
7042
+ "example": "3287820071"
7043
+ },
7044
+ {
7045
+ "name": "billdate",
7046
+ "type": "string",
7047
+ "description": "Date the bill was generated, where the biller returns it.",
7048
+ "example": "null"
7049
+ },
7050
+ {
7051
+ "name": "billername",
7052
+ "type": "string",
7053
+ "description": "Biller name, where provided.",
7054
+ "example": ""
7055
+ },
7056
+ {
7057
+ "name": "bbpstrxnrefid",
7058
+ "type": "string",
7059
+ "description": "BBPS transaction reference, where provided.",
7060
+ "example": ""
7061
+ },
7062
+ {
7063
+ "name": "billDetailsList",
7064
+ "type": "array",
7065
+ "description": "Additional bill line items, where the biller returns them.",
7066
+ "example": []
7067
+ },
7068
+ {
7069
+ "name": "ifsc_status",
7070
+ "type": "number",
7071
+ "description": "Biller-side status flag.",
7072
+ "example": 1
6895
7073
  },
6896
7074
  {
6897
- "name": "utility_acc_no",
7075
+ "name": "user_code",
6898
7076
  "type": "string",
6899
- "description": "Consumer/account number for which the bill was paid.",
6900
- "example": "1234567890"
7077
+ "description": "Agent's user code.",
7078
+ "example": "35739001"
6901
7079
  }
6902
7080
  ]
6903
7081
  }
6904
7082
  ],
6905
7083
  "sampleSuccessResponse": {
6906
- "status": 0,
6907
- "response_status_id": 0,
6908
- "message": "Transaction found",
6909
- "response_type_id": 1388,
7084
+ "response_status_id": -1,
6910
7085
  "data": {
6911
- "tid": "1734567890",
6912
- "tx_status": "0",
6913
- "txstatus_desc": "Success",
6914
- "amount": "1350",
6915
- "operator_ref_id": "BBPS202406011234",
6916
- "utility_acc_no": "1234567890"
6917
- }
7086
+ "amount": "2870.0",
7087
+ "utilitycustomername": "Amit Kumar",
7088
+ "ifsc_status": 1,
7089
+ "user_code": "35739001",
7090
+ "customer_id": "3287820071",
7091
+ "billDueDate": "20260728",
7092
+ "billdate": "null",
7093
+ "billDetailsList": [],
7094
+ "bbpstrxnrefid": "",
7095
+ "billername": ""
7096
+ },
7097
+ "response_type_id": 1052,
7098
+ "message": "Due Bill Amount For utility",
7099
+ "status": 0
6918
7100
  },
6919
7101
  "errorScenarios": [
6920
7102
  {
6921
- "scenario": "Transaction not found for the given reference",
7103
+ "scenario": "Required field missing",
6922
7104
  "statusCode": 200,
6923
7105
  "example": {
6924
- "status": 1,
6925
- "response_status_id": 463,
6926
- "message": "Transaction not found.",
6927
- "data": {}
7106
+ "response_status_id": 1,
7107
+ "invalid_params": {
7108
+ "utility_acc_no": "Please provide the value of the field {2} {3}"
7109
+ },
7110
+ "response_type_id": -1,
7111
+ "message": "Please provide the value of the field",
7112
+ "status": 97
7113
+ }
7114
+ },
7115
+ {
7116
+ "scenario": "Bill fetch failed at the biller",
7117
+ "statusCode": 200,
7118
+ "example": {
7119
+ "response_status_id": 1,
7120
+ "data": {
7121
+ "reason": "Please try again after some time."
7122
+ },
7123
+ "response_type_id": 1468,
7124
+ "message": "Unable to fetch bill",
7125
+ "status": 1468
6928
7126
  }
6929
7127
  }
6930
7128
  ],
6931
- "responseTypes": []
7129
+ "responseTypes": [
7130
+ {
7131
+ "id": 1052,
7132
+ "meaning": "Bill fetched — confirm the amount with the customer, then pay it.",
7133
+ "next": "bbps-pay-bill"
7134
+ },
7135
+ {
7136
+ "id": 1468,
7137
+ "meaning": "Bill fetch failed. Verify the account details and retry after some time — do not proceed to payment."
7138
+ }
7139
+ ]
6932
7140
  },
6933
7141
  {
6934
- "slug": "bbps-activate-service",
7142
+ "slug": "bbps-pay-bill",
6935
7143
  "productId": "bbps",
6936
7144
  "productName": "Bharat Bill Payment System (BBPS)",
6937
- "name": "Activate BBPS Service",
6938
- "method": "PUT",
6939
- "path": "/user/service/activate",
6940
- "summary": "Onboard an agent/retailer for BBPS bill payment services using service code 53.",
7145
+ "name": "Pay BBPS Bill",
7146
+ "method": "POST",
7147
+ "path": "/customer/payment/bbps",
7148
+ "summary": "Process a bill payment or recharge for any BBPS-connected biller.",
6941
7149
  "category": "payment",
6942
- "relevance": "M",
6943
- "description": "Before a retailer can process BBPS payments, the BBPS service (service_code = 53) must be activated for their `user_code`. This is a one-time setup call per agent. After activation, verify the status using the User Service Enquiry API. The agent's GPS coordinates (`latlong`) are mandatory for production compliance. On production, only IPs located in India are whitelisted; requests from outside India are blocked per compliance.",
6944
- "bestFor": "Onboarding new agents onto the BBPS bill payment service before their first transaction.",
6945
- "docsUrl": "https://eps.eko.in/docs/bbps-activate-service",
7150
+ "relevance": "H",
7151
+ "description": "The money-debit call that pays a bill or submits a recharge on the BBPS network. For a bill payment, send the `amount` confirmed at Fetch Bill and the `utilitycustomername` it returned. A prepaid recharge skips Fetch Bill, so it sends the chosen plan's amount and omits `utilitycustomername`.\n\n**Pay the exact amount returned by Fetch Bill** — a mismatch is rejected with status `208`. On `208`, re-fetch the bill and retry with a **fresh** `client_ref_id`; a `client_ref_id` identifies one payment attempt and must never be reused across retries. Persist `tid` and your `client_ref_id` before any retry — status `208` still returns a `tid`.\n\n**Parameters vary by operator.** The fields below are the common set; pass every `param_name` returned by Get Operator Parameters as well. The parameter set sent here must match the set sent to Fetch Bill for the same operator.",
7152
+ "bestFor": "Executing utility bill payments and prepaid recharges for end customers.",
7153
+ "docsUrl": "https://eps.eko.in/docs/bbps-pay-bill",
7154
+ "financial": true,
6946
7155
  "headers": [
6947
7156
  {
6948
7157
  "name": "developer_key",
@@ -6984,35 +7193,98 @@
6984
7193
  "in": "body"
6985
7194
  },
6986
7195
  {
6987
- "name": "client_ref_id",
7196
+ "name": "phone_operator_code",
6988
7197
  "type": "string",
6989
- "required": false,
6990
- "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
6991
- "example": "2026010100123456789",
7198
+ "required": true,
7199
+ "description": "Biller identifier — the `operator_id` from the Get Operators response.",
7200
+ "example": "53",
6992
7201
  "in": "body"
6993
7202
  },
6994
7203
  {
6995
- "name": "service_code",
7204
+ "name": "utility_acc_no",
7205
+ "type": "string",
7206
+ "required": true,
7207
+ "description": "Bill / account number. For a prepaid recharge, the customer's mobile number.",
7208
+ "example": "3287820071",
7209
+ "in": "body"
7210
+ },
7211
+ {
7212
+ "name": "confirmation_mobile_no",
7213
+ "type": "string",
7214
+ "required": true,
7215
+ "description": "Customer mobile number.",
7216
+ "example": "9903457748",
7217
+ "in": "body"
7218
+ },
7219
+ {
7220
+ "name": "sender_name",
7221
+ "type": "string",
7222
+ "required": true,
7223
+ "description": "Customer name.",
7224
+ "example": "Asaad",
7225
+ "in": "body"
7226
+ },
7227
+ {
7228
+ "name": "category",
6996
7229
  "type": "number",
6997
7230
  "required": true,
6998
- "description": "Service identifier for BBPS. Always 53.",
6999
- "example": 53,
7231
+ "description": "The `operator_category_id` from Get Categories (e.g. `8` = Electricity).",
7232
+ "example": 8,
7000
7233
  "in": "body"
7001
7234
  },
7002
7235
  {
7003
- "name": "latlong",
7236
+ "name": "amount",
7237
+ "type": "number",
7238
+ "required": true,
7239
+ "description": "Amount to pay, in rupees. Must equal the `amount` returned by Fetch Bill.",
7240
+ "example": 2870,
7241
+ "in": "body"
7242
+ },
7243
+ {
7244
+ "name": "utilitycustomername",
7245
+ "type": "string",
7246
+ "required": false,
7247
+ "description": "Customer name as returned by Fetch Bill. Mandatory for bill payments where Bill Fetch is done. Not applicable to prepaid recharges, which skip Bill Fetch.",
7248
+ "example": "Amit Kumar",
7249
+ "in": "body"
7250
+ },
7251
+ {
7252
+ "name": "client_ref_id",
7004
7253
  "type": "string",
7005
7254
  "required": true,
7006
- "description": "Agent's GPS coordinates as `latitude,longitude`. Mandatory for BBPS agent activation.",
7007
- "example": "28.6139,77.2090",
7255
+ "description": "Unique partner reference for this payment attempt. Reuse the value sent to the matching Fetch Bill call; generate a fresh one for every retry.",
7256
+ "example": "2026010100123456789",
7257
+ "in": "body"
7258
+ },
7259
+ {
7260
+ "name": "source_ip",
7261
+ "type": "string",
7262
+ "required": true,
7263
+ "description": "Originating client IP address.",
7264
+ "example": "192.168.1.1",
7265
+ "in": "body"
7266
+ },
7267
+ {
7268
+ "name": "district_discome",
7269
+ "type": "string",
7270
+ "required": false,
7271
+ "description": "District-level distribution company code. Required for **operator 190 (UPPCL) only** — pass the same value used at Fetch Bill.",
7272
+ "example": "Lucknow-MVVNL",
7008
7273
  "in": "body"
7009
7274
  }
7010
7275
  ],
7011
7276
  "sampleRequest": {
7012
7277
  "initiator_id": "9962981729",
7278
+ "phone_operator_code": "53",
7279
+ "utility_acc_no": "3287820071",
7280
+ "confirmation_mobile_no": "9903457748",
7281
+ "sender_name": "Asaad",
7282
+ "category": 8,
7283
+ "amount": 2870,
7284
+ "utilitycustomername": "Amit Kumar",
7013
7285
  "client_ref_id": "2026010100123456789",
7014
- "service_code": 53,
7015
- "latlong": "28.6139,77.2090"
7286
+ "source_ip": "192.168.1.1",
7287
+ "district_discome": "Lucknow-MVVNL"
7016
7288
  },
7017
7289
  "responseFields": [
7018
7290
  {
@@ -7039,51 +7311,210 @@
7039
7311
  "description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
7040
7312
  "example": 1388
7041
7313
  },
7314
+ {
7315
+ "name": "tx_status",
7316
+ "type": "string",
7317
+ "description": "Transaction state: 0=Success, 1=Fail, 2=Awaited, 3=Refund Pending, 4=Refunded, 5=On Hold.",
7318
+ "example": "0"
7319
+ },
7320
+ {
7321
+ "name": "txstatus_desc",
7322
+ "type": "string",
7323
+ "description": "Human-readable transaction status.",
7324
+ "example": "Success"
7325
+ },
7042
7326
  {
7043
7327
  "name": "data",
7044
7328
  "type": "object",
7045
7329
  "description": "API-specific response payload.",
7046
7330
  "children": [
7047
7331
  {
7048
- "name": "service_code",
7049
- "type": "number",
7050
- "description": "The service code that was activated.",
7051
- "imp": true,
7052
- "example": 53
7332
+ "name": "tid",
7333
+ "type": "string",
7334
+ "description": "Eko transaction ID. Store it for reconciliation and dispute resolution — returned on failures too.",
7335
+ "imp": true,
7336
+ "example": "3570553488"
7337
+ },
7338
+ {
7339
+ "name": "tx_status",
7340
+ "type": "string",
7341
+ "description": "Transaction status (`0` = success).",
7342
+ "imp": true,
7343
+ "example": "0"
7344
+ },
7345
+ {
7346
+ "name": "txstatus_desc",
7347
+ "type": "string",
7348
+ "description": "Human-readable transaction status.",
7349
+ "example": "Success"
7350
+ },
7351
+ {
7352
+ "name": "status_text",
7353
+ "type": "string",
7354
+ "description": "Status label from the biller.",
7355
+ "example": "SUCCESS"
7356
+ },
7357
+ {
7358
+ "name": "amount",
7359
+ "type": "string",
7360
+ "description": "Amount paid.",
7361
+ "imp": true,
7362
+ "example": "2870.0"
7363
+ },
7364
+ {
7365
+ "name": "totalamount",
7366
+ "type": "string",
7367
+ "description": "Total amount debited, including any fee.",
7368
+ "example": "2870.0"
7369
+ },
7370
+ {
7371
+ "name": "fee",
7372
+ "type": "string",
7373
+ "description": "Fee charged for this transaction.",
7374
+ "example": "0.0"
7375
+ },
7376
+ {
7377
+ "name": "tds",
7378
+ "type": "string",
7379
+ "description": "TDS deducted on the commission.",
7380
+ "example": "0.024"
7381
+ },
7382
+ {
7383
+ "name": "commission",
7384
+ "type": "string",
7385
+ "description": "Agent commission earned on this payment.",
7386
+ "example": "1.2"
7387
+ },
7388
+ {
7389
+ "name": "balance",
7390
+ "type": "string",
7391
+ "description": "Agent wallet balance after the payment.",
7392
+ "imp": true,
7393
+ "example": "46537.3"
7394
+ },
7395
+ {
7396
+ "name": "operator_name",
7397
+ "type": "string",
7398
+ "description": "Biller the payment was made to.",
7399
+ "example": "B.E.S.T Mumbai"
7400
+ },
7401
+ {
7402
+ "name": "utilitycustomername",
7403
+ "type": "string",
7404
+ "description": "Customer name on the bill.",
7405
+ "example": "Amit Kumar"
7406
+ },
7407
+ {
7408
+ "name": "customermobilenumber",
7409
+ "type": "string",
7410
+ "description": "Customer mobile number.",
7411
+ "example": "9903457748"
7412
+ },
7413
+ {
7414
+ "name": "account",
7415
+ "type": "string",
7416
+ "description": "Account / consumer number that was paid.",
7417
+ "example": "3287820071"
7418
+ },
7419
+ {
7420
+ "name": "approvalreferencenumber",
7421
+ "type": "string",
7422
+ "description": "Biller approval reference, where provided.",
7423
+ "example": ""
7053
7424
  },
7054
7425
  {
7055
- "name": "service_status",
7426
+ "name": "payment_mode_desc",
7056
7427
  "type": "string",
7057
- "description": "Activation status for the service on the agent's account.",
7058
- "imp": true,
7059
- "example": "activated"
7428
+ "description": "Payment mode used.",
7429
+ "example": "CASH"
7430
+ },
7431
+ {
7432
+ "name": "user_code",
7433
+ "type": "string",
7434
+ "description": "Agent's user code.",
7435
+ "example": "35739001"
7436
+ },
7437
+ {
7438
+ "name": "last_used_okekey",
7439
+ "type": "string",
7440
+ "description": "Last used OkeKey.",
7441
+ "example": "203"
7442
+ },
7443
+ {
7444
+ "name": "timestamp",
7445
+ "type": "string",
7446
+ "description": "Transaction timestamp.",
7447
+ "example": "2026-07-25T09:52:57.428Z"
7060
7448
  }
7061
7449
  ]
7062
7450
  }
7063
7451
  ],
7064
7452
  "sampleSuccessResponse": {
7065
- "status": 0,
7066
7453
  "response_status_id": 0,
7067
- "message": "BBPS service activated successfully",
7068
- "response_type_id": 1388,
7069
7454
  "data": {
7070
- "service_code": 53,
7071
- "service_status": "activated"
7072
- }
7455
+ "tx_status": "0",
7456
+ "txstatus_desc": "Success",
7457
+ "status_text": "SUCCESS",
7458
+ "tid": "3570553488",
7459
+ "amount": "2870.0",
7460
+ "totalamount": "2870.0",
7461
+ "fee": "0.0",
7462
+ "tds": "0.024",
7463
+ "commission": "1.2",
7464
+ "balance": "46537.3",
7465
+ "user_code": "35739001",
7466
+ "operator_name": "B.E.S.T Mumbai",
7467
+ "utilitycustomername": "Amit Kumar",
7468
+ "customermobilenumber": "9903457748",
7469
+ "payment_mode_desc": "CASH",
7470
+ "last_used_okekey": "203",
7471
+ "account": "3287820071",
7472
+ "timestamp": "2026-07-25T09:52:57.428Z"
7473
+ },
7474
+ "response_type_id": 333,
7475
+ "message": "Success Last_used_OkeyKey: 203",
7476
+ "status": 0
7073
7477
  },
7074
7478
  "errorScenarios": [
7075
7479
  {
7076
- "scenario": "Service already activated for this agent",
7480
+ "scenario": "Amount mismatch — the amount paid differs from the fetched bill",
7077
7481
  "statusCode": 200,
7078
7482
  "example": {
7079
- "status": 1,
7080
- "response_status_id": 17,
7081
- "message": "Service is already active for this user.",
7082
- "data": {}
7483
+ "response_status_id": 1,
7484
+ "data": {
7485
+ "last_used_okekey": "",
7486
+ "tid": "3571183956"
7487
+ },
7488
+ "response_type_id": 208,
7489
+ "message": "utility.payment.failed Amount entered does not match with bill amount. Please try again",
7490
+ "status": 208
7491
+ }
7492
+ },
7493
+ {
7494
+ "scenario": "Required field missing",
7495
+ "statusCode": 200,
7496
+ "example": {
7497
+ "response_status_id": 1,
7498
+ "invalid_params": {
7499
+ "amount": "Please provide the value of the field {2} {3}"
7500
+ },
7501
+ "response_type_id": -1,
7502
+ "message": "Please provide the value of the field",
7503
+ "status": 97
7083
7504
  }
7084
7505
  }
7085
7506
  ],
7086
- "responseTypes": []
7507
+ "responseTypes": [
7508
+ {
7509
+ "id": 333,
7510
+ "meaning": "Payment successful — persist `tid` and `client_ref_id` for reconciliation."
7511
+ },
7512
+ {
7513
+ "id": 208,
7514
+ "meaning": "Amount does not match the bill. Re-fetch the bill and retry with a fresh `client_ref_id`; a `tid` is still returned, so persist it first.",
7515
+ "next": "bbps-fetch-bill"
7516
+ }
7517
+ ]
7087
7518
  },
7088
7519
  {
7089
7520
  "slug": "pan-fetch",
@@ -15435,152 +15866,6 @@
15435
15866
  "errorScenarios": [],
15436
15867
  "responseTypes": []
15437
15868
  },
15438
- {
15439
- "slug": "bbps-operator-code-circle",
15440
- "productId": "bbps",
15441
- "productName": "Bharat Bill Payment System (BBPS)",
15442
- "name": "Get Operator Code and Circle",
15443
- "method": "GET",
15444
- "path": "/customer/payment/bbps/recharge/{customer_mobile}/operator",
15445
- "summary": "Auto-detect a mobile number's recharge operator code and telecom circle.",
15446
- "category": "payment",
15447
- "relevance": "M",
15448
- "description": "Returns the `phone_operator_code` and `circle_area` for a customer mobile number — returned under `dependent_params`. Pass these into Get Recharge Plans.",
15449
- "bestFor": "Resolving operator and circle before fetching recharge plans.",
15450
- "docsUrl": "https://eps.eko.in/docs/bbps-operator-code-circle",
15451
- "headers": [
15452
- {
15453
- "name": "developer_key",
15454
- "in": "header",
15455
- "type": "string",
15456
- "required": true,
15457
- "description": "Static API key issued to your account after KYC."
15458
- },
15459
- {
15460
- "name": "secret-key",
15461
- "in": "header",
15462
- "type": "string",
15463
- "required": true,
15464
- "description": "Dynamic per-request signature: base64(HMAC-SHA256(timestamp, base64(access_key)))."
15465
- },
15466
- {
15467
- "name": "secret-key-timestamp",
15468
- "in": "header",
15469
- "type": "string",
15470
- "required": true,
15471
- "description": "Current time in milliseconds since UNIX epoch, used to compute secret-key. Must match server time."
15472
- },
15473
- {
15474
- "name": "content-type",
15475
- "in": "header",
15476
- "type": "string",
15477
- "required": true,
15478
- "description": "application/json",
15479
- "example": "application/json"
15480
- }
15481
- ],
15482
- "requestParams": [
15483
- {
15484
- "name": "initiator_id",
15485
- "type": "string",
15486
- "required": true,
15487
- "description": "Registered mobile number of the API user (see Platform Credentials).",
15488
- "example": "9962981729",
15489
- "in": "query"
15490
- },
15491
- {
15492
- "name": "client_ref_id",
15493
- "type": "string",
15494
- "required": false,
15495
- "description": "Unique reference ID per API call, generated by your system (max 20 characters).",
15496
- "example": "2026010100123456789",
15497
- "in": "query"
15498
- },
15499
- {
15500
- "name": "customer_mobile",
15501
- "type": "string",
15502
- "required": true,
15503
- "description": "Customer's mobile number.",
15504
- "example": "9876543210",
15505
- "in": "path"
15506
- }
15507
- ],
15508
- "sampleRequest": {},
15509
- "responseFields": [
15510
- {
15511
- "name": "status",
15512
- "type": "number",
15513
- "description": "Primary success indicator (0 = success).",
15514
- "example": 0
15515
- },
15516
- {
15517
- "name": "message",
15518
- "type": "string",
15519
- "description": "Human-readable response / error message.",
15520
- "example": "Verification successful"
15521
- },
15522
- {
15523
- "name": "response_status_id",
15524
- "type": "number",
15525
- "description": "Granular status id; see the shared error-codes table.",
15526
- "example": 0
15527
- },
15528
- {
15529
- "name": "response_type_id",
15530
- "type": "number",
15531
- "description": "A unique id for every possible response shape (success or error) — useful for client logic branching and analytics.",
15532
- "example": 1388
15533
- },
15534
- {
15535
- "name": "data",
15536
- "type": "object",
15537
- "description": "API-specific response payload.",
15538
- "children": [
15539
- {
15540
- "name": "dependent_params",
15541
- "type": "array",
15542
- "imp": true,
15543
- "description": "Resolved operator/circle as name-value pairs (phone_operator_code, circle_area) — returned at the top level, not under data.",
15544
- "children": [
15545
- {
15546
- "name": "name",
15547
- "type": "string",
15548
- "description": "Parameter name (phone_operator_code or circle_area).",
15549
- "example": "phone_operator_code"
15550
- },
15551
- {
15552
- "name": "value",
15553
- "type": "number",
15554
- "description": "Parameter value.",
15555
- "example": 400
15556
- }
15557
- ]
15558
- }
15559
- ]
15560
- }
15561
- ],
15562
- "sampleSuccessResponse": {
15563
- "response_status_id": 0,
15564
- "dependent_params": [
15565
- {
15566
- "name": "phone_operator_code",
15567
- "value": 400
15568
- },
15569
- {
15570
- "name": "circle_area",
15571
- "value": "5"
15572
- }
15573
- ],
15574
- "data": {
15575
- "updates": ""
15576
- },
15577
- "response_type_id": 1804,
15578
- "message": "success",
15579
- "status": 0
15580
- },
15581
- "errorScenarios": [],
15582
- "responseTypes": []
15583
- },
15584
15869
  {
15585
15870
  "slug": "digilocker-create-url",
15586
15871
  "productId": "digilocker",
@@ -22965,6 +23250,115 @@
22965
23250
  ]
22966
23251
  }
22967
23252
  ]
23253
+ },
23254
+ {
23255
+ "id": "bbps-bill-payment",
23256
+ "slug": "bbps-bill-payment",
23257
+ "name": "BBPS — Pay a Utility Bill",
23258
+ "summary": "Pick a biller by category, read the fields it requires, fetch the live bill, then pay the exact amount. Get Locations is an optional extra filter on the biller list, and UPPCL (operator 190) additionally needs a district_discome from Get District Discome — neither is a step here because neither applies to every biller.",
23259
+ "productId": "bbps",
23260
+ "steps": [
23261
+ {
23262
+ "specSlug": "bbps-get-categories",
23263
+ "purpose": "List the biller categories and let the agent pick one. The `operator_category_id` chosen here filters the biller list, and is also the `category` param on Fetch Bill and Pay Bill. Do not hard-code these ids — the live list is authoritative.",
23264
+ "branches": [
23265
+ {
23266
+ "onResponseTypeId": 2457,
23267
+ "goto": "bbps-get-operators",
23268
+ "note": "Categories returned — list the billers in the chosen category."
23269
+ }
23270
+ ]
23271
+ },
23272
+ {
23273
+ "specSlug": "bbps-get-operators",
23274
+ "purpose": "List the billers, filtered by the chosen `category` (and optionally by `location` from Get Locations). Note the rename: the `operator_id` returned here is sent as `phone_operator_code` to Fetch Bill and Pay Bill.",
23275
+ "branches": [
23276
+ {
23277
+ "onResponseTypeId": 2461,
23278
+ "goto": "bbps-get-operator-parameters",
23279
+ "note": "Billers returned — read the chosen operator's input fields."
23280
+ }
23281
+ ]
23282
+ },
23283
+ {
23284
+ "specSlug": "bbps-get-operator-parameters",
23285
+ "purpose": "Read the fields this operator requires and render the bill-entry form from them. `list_elements` is the source of truth: every `param_name` it returns must be sent to BOTH the next step and Pay Bill, with identical values. For operator 190 (UPPCL) only, also resolve `district_discome` via Get District Discome before continuing."
23286
+ },
23287
+ {
23288
+ "specSlug": "bbps-fetch-bill",
23289
+ "purpose": "Fetch the live bill and show the customer the amount and due date. Carry `amount` and `utilitycustomername` into the payment, and reuse this call's `client_ref_id` for it. `response_status_id` is `-1` on success here — branch on `response_type_id`, not on it. On `1468` the bill could not be fetched: verify the account details, retry later, and do not pay.",
23290
+ "branches": [
23291
+ {
23292
+ "onResponseTypeId": 1052,
23293
+ "goto": "bbps-pay-bill",
23294
+ "note": "Bill fetched — pay the exact amount returned."
23295
+ }
23296
+ ]
23297
+ },
23298
+ {
23299
+ "specSlug": "bbps-pay-bill",
23300
+ "purpose": "Pay the exact amount returned by Fetch Bill, echoing back `utilitycustomername`. The only money-debit step — persist `tid` and your `client_ref_id` before any retry. A `208` means the amount did not match: re-fetch the bill and retry with a FRESH `client_ref_id` (one reference identifies one payment attempt and must never be reused across retries); a `tid` is returned even on `208`, so store it first.",
23301
+ "branches": [
23302
+ {
23303
+ "onStatus": 0,
23304
+ "goto": "done"
23305
+ },
23306
+ {
23307
+ "onResponseTypeId": 208,
23308
+ "goto": "bbps-fetch-bill",
23309
+ "note": "Amount mismatch — re-fetch the bill and retry with a fresh client_ref_id."
23310
+ }
23311
+ ]
23312
+ },
23313
+ {
23314
+ "specSlug": "transaction-inquiry",
23315
+ "purpose": "Reconciliation only, not a mandatory leg — the previous step already completes the flow on success. This is the generic Transaction Inquiry endpoint, shared across every product. Use it when the Pay Bill response timed out or came back awaited: inquire by `tid`, or by your `client_ref_id` if you never received the `tid`. A timeout is never an automatic failure.",
23316
+ "branches": [
23317
+ {
23318
+ "onStatus": 0,
23319
+ "goto": "done"
23320
+ }
23321
+ ]
23322
+ }
23323
+ ]
23324
+ },
23325
+ {
23326
+ "id": "bbps-mobile-recharge",
23327
+ "slug": "bbps-mobile-recharge",
23328
+ "name": "BBPS — Prepaid Mobile / DTH Recharge",
23329
+ "summary": "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.",
23330
+ "productId": "bbps",
23331
+ "steps": [
23332
+ {
23333
+ "specSlug": "bbps-operator-code-circle",
23334
+ "purpose": "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`."
23335
+ },
23336
+ {
23337
+ "specSlug": "bbps-get-operator-parameters",
23338
+ "purpose": "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."
23339
+ },
23340
+ {
23341
+ "specSlug": "bbps-recharge-plans",
23342
+ "purpose": "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.",
23343
+ "branches": [
23344
+ {
23345
+ "onResponseTypeId": 1805,
23346
+ "goto": "bbps-pay-bill",
23347
+ "note": "Plans unavailable (status is still 0) — take the amount from the customer and continue."
23348
+ }
23349
+ ]
23350
+ },
23351
+ {
23352
+ "specSlug": "bbps-pay-bill",
23353
+ "purpose": "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`.",
23354
+ "branches": [
23355
+ {
23356
+ "onStatus": 0,
23357
+ "goto": "done"
23358
+ }
23359
+ ]
23360
+ }
23361
+ ]
22968
23362
  }
22969
23363
  ]
22970
23364
  }