| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Submit a recharge or bill-payment request using a Pay2New product code and an active customer/outlet.
Endpoint
POST https://pay2new.in/apis/v1/billPayment
Headers
| Header | Required | Value / description |
|---|---|---|
secret | Yes | Your Pay2New API secret. Keep it on your server. |
Content-Type | Yes for JSON requests | application/json |
Accept | Optional | application/json |
Authentication
Use an active Pay2New partner account with verified KYC, an active wallet and API access. Send requests from your registered IP address. Enable the relevant service where applicable; offer services may also require an active plan.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
number | string | Yes | Mobile, subscriber or bill account number for the selected product. |
product_code | string | Yes | Product/operator code returned by the Product List API. |
amount | decimal string | Yes | Transaction amount. Must be greater than zero. |
pan_number | string | When amount ≥ 50,000 | PAN in 10-character format: 5 letters, 4 digits, 1 letter. Required for transaction amounts of 50,000 or more. |
request_id | string | Yes | Unique client reference for this request. Store it for reconciliation and support. |
optional1 | string | No | Additional product-specific input. Omit unless the product requires it or Pay2New instructs you to send it. |
optional2 | string | No | Additional product-specific input. Omit unless the product requires it or Pay2New instructs you to send it. |
optional3 | string | No | Additional product-specific input. Omit unless the product requires it or Pay2New instructs you to send it. |
optional4 | string | No | Additional product-specific input. Omit unless the product requires it or Pay2New instructs you to send it. |
customer_number | string | Yes | Customer mobile number; exactly 10 numeric digits. |
latitude | decimal string | Yes | Customer/outlet latitude as a decimal value. |
longitude | decimal string | Yes | Customer/outlet longitude as a decimal value. |
pincode | string | Yes | Exactly 6 characters; send a valid Indian PIN code. |
ip | string | Yes | End-user IPv4 address. |
outletId | string | Yes | Active Pay2New customer/outlet ID. Send this field in the JSON body. |
bill_fetch_order_id | string | No | order_id returned by Bill Fetch. Send it when you have already fetched or validated this bill. |
Request example
Illustrative values
All identifiers, identity data, amounts and IP addresses in these examples are synthetic. Replace the secret, product/customer references and sample inputs with the values for your integration before sending a request.
curl --request POST \
--url 'https://pay2new.in/apis/v1/billPayment' \
--header 'secret: <YOUR_PAY2NEW_SECRET>' \
--header 'Content-Type: application/json' \
--data '{
"number": "9999999999",
"product_code": "1",
"amount": "100.00",
"request_id": "EXAMPLE202609260001",
"customer_number": "9999999999",
"latitude": "19.0760",
"longitude": "72.8777",
"pincode": "400001",
"ip": "203.0.113.10",
"outletId": "YOUR_OUTLET_ID"
}'
Response fields
| Field | Type | Description |
|---|---|---|
status | integer | 1: successful operation; 2: failed/rejected operation; 3: pending or indeterminate where returned. |
message | string | Human-readable result or error message. |
order_id | string | Pay2New transaction/order reference. Store it for reconciliation. |
request_id | string | Client request reference associated with the operation. |
operator_reference | string / null | Operator/provider reference, when available; may be empty or null. |
number | string | Transaction account/subscriber number. |
amount | number / string | Transaction amount; a JSON number or numeric string may be returned. |
balance | string | Wallet balance as a formatted string; may contain commas. |
Pending response example
{
"status": 3,
"order_id": "P2N_EXAMPLE_ORDER",
"request_id": "EXAMPLE202609260001",
"message": "Transaction Pending",
"operator_reference": "",
"number": "9999999999",
"amount": "100.00",
"balance": "1,000.00"
}
Integration notes
Use a new request_id for each new transaction. Repeating a request ID with the same number and amount returns the existing result; changing the number or amount is rejected. For a pending or uncertain result, check Transaction Status before initiating another transaction.
Integration notes
For amounts of 50,000 or more, send pan_number. The API ignores pan_number below this threshold. Send bill_fetch_order_id when Bill Fetch has already returned an order reference. If the selected product requires bill fetch/validation and no reference is supplied, Pay2New performs it during processing.
Integration notes
The response field is order_id. A repeated request for a reversed transaction returns status 2; the status lookup can expose order.status 4.
Integration notes
Formatted monetary fields are strings with two decimal places and may use Indian comma grouping, for example 1,23,456.78. Remove grouping separators before numeric calculations. Illustrative balances or charges are not pricing commitments.
Errors
Application failures return status: 2 and a message. Invalid fields can also be identified in an errors object. Authentication, IP registration, service access and product availability can prevent processing. Other response fields may be absent when processing fails before a transaction is created. Evaluate the JSON result even when the HTTP request completes successfully. Preserve your request and order references when an outcome is pending or indeterminate.
{
"status": 2,
"message": "Invalid Parameters",
"errors": {
"number": "Illustrative field validation message"
}
}
