Skip to main content
GET
Available in🇮🇳 India
Retrieve the real-time status of a bill payment here. Since payments are processed asynchronously, poll this endpoint until the status reaches a terminal state of success or failed.
Polling RecommendationPoll at intervals of 3–5 seconds. Most bill payments resolve within 30–60 seconds, but certain billers have extended processing windows. A pending status means NPCI has acknowledged the request but the biller has not confirmed. Continue polling.
Do Not Retry on PendingDo not initiate a fresh Create a Bill Payment when the status is pending. The X-Bill-Payments-Idempotency header on the original request protects against duplicates only when the same key is replayed with an identical body. Poll this endpoint until the status reaches success or failed instead.
Payment State Machine
  • processing - Bill payment request created and sent to NPCI. Continue polling.
  • pending - NPCI has acknowledged the request but the biller has not confirmed. Continue polling. Do not retry.
  • success - NPCI confirmed the payment was accepted by the biller. Capture the PG payment if not already captured.
  • failed - Payment was rejected by NPCI or the biller. Initiate a refund on the PG payment if money was collected.

Path Parameters

string
required
Unique identifier of the bill payment returned by Create a Bill Payment. For example, bill_pay_xxxx.

Response Parameters

string
Razorpay’s unique bill payment transaction id.
string
Indicates the type of entity. Always bill_payment.payment.
string
Current status of the bill payment. Possible values:
  • processing - Request created and sent to NPCI. Continue polling.
  • pending - NPCI acknowledged the request but the biller has not confirmed. Continue polling. Do not retry.
  • success - NPCI confirmed the payment was accepted by the biller.
  • failed - Payment was rejected by NPCI or the biller. See error_* fields for details.
string
Payment gateway. Always bbps.
string
BBPS/NPCI transaction reference id. Fixed length of 12 or 20 characters. Store this for reconciliation, settlement tracking and dispute resolution.
string
Razorpay biller entity id.
string
NPCI’s biller id.
string
Biller’s internal transaction/receipt reference number. Present only when status is success. Share this with the customer as their BBPS payment reference.
boolean
true if the payment was made without a prior bill retrieval; false if a bill_request_id was provided. Derived by Razorpay. Not sent in the request.
integer
Total bill amount paid in paise, excluding fees.
string
Currency. Always INR.
object
Fee breakdown.
integer
App/platform convenience fee charged to the customer, in paise.
integer
Customer Convenience Fee (CCF) charged by the biller, in paise.
object
Customer reference details echoed from the request as dynamic key-value pairs. Returned only when sent in the request. Free-form metadata that you can use for your own tracking and reconciliation.
string
Dynamic key-value pair holding your customer reference. Echoed back exactly as sent in the request. Not validated by Razorpay.
string
Dynamic key-value pair holding the customer name. Echoed back exactly as sent in the request. Not validated by Razorpay.
string
required
Customer’s mobile number with country code. For example, 919000090000.
string
Dynamic key-value pair holding the customer email. Echoed back exactly as sent in the request. Not validated by Razorpay.
array
Array of payment method details collected via the Razorpay PG.
string
Razorpay payment entity id.
string
Payment provider. Always razorpay.
integer
Amount paid via the selected method, in paise.
string
Payment currency. Always INR.
string
Payment method. Values: card, upi, netbanking, wallet.
object
Bill account holder details returned as dynamic key-value pairs defined by the biller’s account_holder_config (NPCI biller MDM). The keys and values vary by biller. Razorpay does not control either.
array
Array of bills paid in this transaction.
string
Biller’s bill reference/invoice number. Mandatory in multi-bill scenarios.
integer
Individual bill amount in paise.
string
Bill currency. Always INR.
integer
Bill generation date as a UNIX timestamp.
integer
Bill payment due date as a UNIX timestamp.
string
Billing frequency. Values: onetime, daily, monthly, quarterly, halfyearly, yearly.
object
Additional biller-specific metadata. Dynamic key-value pairs that vary by biller.
string
Error code. Present only when status is failed. Values: BAD_REQUEST_ERROR, GATEWAY_ERROR, SERVER_ERROR.
string
Human-readable error description.
string
Where the error originated. Values: customer, biller, gateway, razorpay.
string
Step at which the error occurred. For example, bill_payment, validation.
string
Programmatic error reason code. Use this for error-specific handling logic.
object
Additional context such as payment ids and gateway error codes.
integer
UNIX timestamp when the bill payment was created.

Errors

Code: 400No bill payment was found for the provided id.Solution: Verify the id matches the one returned by the Create a Bill Payment API.
Code: 401The API credentials passed in the request differ from the ones generated on the Dashboard.Solution: Ensure your API key and secret are correct and active.