API Reference
Support +91 89899 08110
Website
Neropay for Developers

Mobile & DTH recharge,
over one REST API.

Neropay gives you a single, JSON-first interface for prepaid mobile and DTH recharge across every major operator. Predictable status codes, real-time callbacks, and a wallet you can query any time.

Mobile & DTH

Prepaid recharge for all operators and every DTH provider through one endpoint.

Wallet balance

Fetch your live wallet balance programmatically, any time, from your own system.

Callbacks

Register a URL and receive a server-to-server push the moment a status changes.

Disputes

Raise and track disputes for failed or stuck recharges, all over the API.

From sign-up to first call

Create a developer account

Register on the Neropay portal to unlock your dashboard.

Generate your API token

Mint an access token from the Developer API section and store it as a secret.

Configure your callback URL

Add the endpoint where Neropay should push transaction updates.

Go live

Start sending recharges once your test transactions behave as expected.

Authentication

Authenticate with a token

Every recharge API request takes your access token as a query parameter. Generate it from the Developer API section of your Neropay dashboard and keep it secret.

Token as query parameter

Append your token to the request URL on every call.

curl
curl -X GET "https://app.neropay.co.in/apiservice/recharge?token=YOUR_TOKEN&..."

Token lifespan. Tokens don't expire on a fixed schedule. If a token stops working, generate a fresh one from the Developer API portal and swap it in. Also whitelist your server IP in the portal.

Recharge

Operator List

Look up the operator codes you'll pass into recharge calls — one code per operator across mobile and DTH.

Parameters

Logo Category Operator Name Operator Code
Prepaid Airtel AT
Prepaid BSNL BSNL
Prepaid Jio Jio
Prepaid Vi VI
DTH Airtel Digital TV ATV
DTH Dish TV DTV
DTH Sun Direct STV
DTH Tata Play TTV
DTH Videocon D2H VTV
Recharge

Do Recharge

Initiate a mobile or DTH recharge. Pass a unique refid you generate, so you can reconcile the request later regardless of the outcome.

GET https://app.neropay.co.in/apiservice/utility_payments?

Request parameters

ParameterTypeRequiredDescription
tokenstringrequiredAPI access token for authentication.
customer_idint / stringrequiredMobile number or DTH subscriber ID being recharged.
operatorcodestringrequiredOperator code from the Operator List.
amountintegerrequiredRecharge amount.
refidstringrequiredYour unique reference ID to track this request.

Example request

query string
https://app.neropay.co.in/apiservice/utility_payments?token=xxxxxxx&customer_id=8989908110&operatorcode=VI&amount=10&refid=156165165

Responses

The status field is one of SUCCESS, FAILED, PENDING or REFUND. Always persist the transaction against this value.

SUCCESS

Recharge completed. operatorid carries the operator reference.

{
      "txnid": "T20260625180232JUKR",
      "status": "SUCCESS",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:02:37",
      "refid": "T20260625180231CRZK",
      "operatorid": "BR000DPM5NVI",
      "message": "Transaction Successfully Completed",
      "remainamount": "71337.10"
    }
FAILED

Recharge could not be completed. Read message for the reason.

{
      "txnid": "T20260625180232JUKR",
      "status": "FAILED",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:02:37",
      "refid": "T20260625180231CRZK",
      "operatorid": "",
      "message": "Transaction Failed",
      "remainamount": "72236.10"
    }
PENDING

Still processing at the operator. Confirm later via Status Check.

{
      "txnid": "T20260625180232JUKR",
      "status": "PENDING",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:02:37",
      "refid": "T20260625180231CRZK",
      "operatorid": "",
      "message": "Transaction under process",
      "remainamount": "71337.10"
    }
REFUND

Recharge failed and the amount has been refunded to your wallet.

{
      "txnid": "T20260625180232JUKR",
      "status": "REFUND",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:05:10",
      "refid": "T20260625180231CRZK",
      "operatorid": "",
      "message": "Transaction Refunded",
      "remainamount": "72236.10"
    }
  • Call this endpoint over GET.
  • Always persist the transaction against the status key — one of SUCCESS, FAILED, PENDING or REFUND.
  • remainamount is your wallet balance remaining after the transaction.
  • On PENDING, reconcile via Status Check — never blindly resend the same request.
Account & Operations

Wallet Balance

Fetch your live wallet balance at any time — useful before bulk recharges or for displaying available funds in your own dashboard.

GET https://app.neropay.co.in/apiservice/balance_check?token=xxxxxx

Request parameters

ParameterTypeRequiredDescription
tokenstringrequiredAPI access token for authentication.

Example response

SUCCESS

Returns the current available balance.

{
  "status_code": 1,
  "message": "Data fetched successfully",
  "main": "645",
  "utility": "0",
  "aeps": "0",
  "total": "645",
  "creditDue": "0"
}
FAILED

Unable to fetch data due to user not exists

{
  "status_code": 0,
  "message": "Unable to fetch data due to user not exists",
}
FAILED

token is required

{
  "status_code": 2,
  "message": "token is required",
}
Account & Operations

Status Check

Resolve any recharge whose immediate response was PENDING. Query by your refid to get the final settled state.

GET https://app.neropay.co.in/apiservice/status_check?token=xxxxxx&refid=xxxxxx

Request parameters

ParameterTypeRequiredDescription
tokenstringrequiredAPI access token for authentication.
refidstringrequiredThe reference ID you sent with the recharge.

Example response

Returns the final settled status for the transaction. The status field is one of SUCCESS, FAILED, PENDING or REFUND.

SUCCESS

Recharge completed successfully.

{
      "txnid": "T20260625180232JUKR",
      "status": "SUCCESS",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:02:37",
      "refid": "T20260625180231CRZK",
      "operatorid": "BR000DPM5NVI",
      "message": "Transaction Successfully Completed",
      "remainamount": "71337.10"
    }
FAILED

Recharge failed at the operator.

{
      "txnid": "T20260625180232JUKR",
      "status": "FAILED",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:02:37",
      "refid": "T20260625180231CRZK",
      "operatorid": "",
      "message": "Transaction Failed",
      "remainamount": "72236.10"
    }
PENDING

Still under process at the operator.

{
      "txnid": "T20260625180232JUKR",
      "status": "PENDING",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:02:37",
      "refid": "T20260625180231CRZK",
      "operatorid": "",
      "message": "Transaction under process",
      "remainamount": "71337.10"
    }
REFUND

Failed recharge refunded to your wallet.

{
      "txnid": "T20260625180232JUKR",
      "status": "REFUND",
      "mobileno": "8763381822",
      "amount": "899",
      "operatorcode": "JIO",
      "operator_name": "Jio",
      "request_time": "2026-06-25 18:02:32",
      "response_time": "2026-06-25 18:05:10",
      "refid": "T20260625180231CRZK",
      "operatorid": "",
      "message": "Transaction Refunded",
      "remainamount": "72236.10"
    }

Don't double-spend. When a recharge returns PENDING, poll Status Check to confirm the outcome — never blindly retry the original request.

Account & Operations

Raise a Dispute

Flag a recharge that failed, got stuck, or was charged incorrectly. Submit the dispute against neropay txn_id and track its resolution over the API.

GET https://app.neropay.co.in/apiservice/raise_dispute?token=xxxxxx&txn_id=xxxxxx

Request parameters

ParameterTypeRequiredDescription
tokenstringrequiredAPI access token for authentication.
txn_idstringrequiredtxn_id of transaction, should be 19 chars

Responses

SUCCESS

Dispute registered with a tracking ID.

{
      "status_code": 1,
      "message": "Dispute Raised",
      "complaint_id": 21564541,
    }
FAILED

Read message for the reason.

{
      "status_code": 0,
      "message": "Complaint already under review"
    }
  • A dispute moves through UNDER REVIEWRESOLVED-SUCCESS / RESOLVED-FAILED.
  • You'll also receive a callback when the dispute status changes.
Account & Operations

Callback

We notify your server the moment a recharge status changes, so you don't have to poll. We send a GET request to your configured callback URL with the transaction details as query parameters.

Once the status of a recharge changes, we will hit your configured callback URL with the parameters appended as a query string. We pass these parameters ourselves — you do not need to add them. Register your callback URL in the portal.

Webhook example

GET → your callback URL
# GET request to your URL
    http://yourdomain.com/callback_url?event=Transaction_Status
      &status=SUCCESS
      &rechno=8763381822
      &amount=899
      &txnid=T20260625180232JUKR
      &opid=BR000DPM5NVI
      &msg=Transaction+Successfully+Completed
      &refid=T20260625180231CRZK
      &operatorcode=JIO
      &remainbalance=71337.10

Parameters

ParameterTypeDescription
eventstringThe callback event, e.g. Transaction_Status, Complaint_Status, Agent_Onboarding_Status.
statusstringOne of SUCCESS, FAILED or REFUND. REFUND is sent only when a recharge went from Success to Failed.
rechnostringThe Prepaid / Postpaid / DTH number for which the recharge was requested.
amountintegerAmount for which the recharge was requested.
txnidstringOur unique transaction ID.
opidstringOperator ID passed from the operator / provider.
msgstringResponse message from the operator / API.
refidstringYour unique reference ID — use it to update the recharge at your end.
operatorcodestringOperator code (e.g. JIO for Jio Prepaid). See the Operator List.
remainbalancestringYour remaining wallet balance.
  • The callback is sent as a GET request to your URL.
  • We append the parameters ourselves — do not add your own parameters to the callback URL.
  • Always update your transaction using the status key, which can be SUCCESS, PENDING, FAILED or REFUND.
  • Match callbacks to your records by refid, and implement error handling based on the status and msg fields.