API reference
Core
5 endpoints
The modern surface for new integrations. JSON in, JSON out, machine-readable string errors alongside a numeric code support can trace.
What you can call today
GET/api/corp/v1/services
Notes
Read this instead of hardcoding a service list.
enabled means the endpoints exist. ready means a vendor is switched on right now — if it is false the calls still answer safely and nothing is charged.
curl "https://apipe.in/api/corp/v1/services" \
-H "X-Api-Token: <your-token>"<…> with your own value.{
"status": "success",
"code": 200,
"client": "Acme Pvt Ltd",
"services": [
{
"service": "recharge",
"name": "Mobile & DTH recharge",
"enabled": true,
"ready": true,
"note": null
}
]
}Your wallet balance
GET/api/corp/v1/balance
Query parameters
| Name | Description |
|---|---|
detailoptional | Send 1 to also get available (what you can spend now) and on_hold (held by us). Without it the reply is exactly as shown. |
Notes
With detail=1: {"status":"success","code":200,"balance":"5000.0000","available":"4750.0000","on_hold":"250.0000"}. A transaction needs available to cover it.
curl "https://apipe.in/api/corp/v1/balance" \
-H "X-Api-Token: <your-token>"<…> with your own value. Only the required fields are shown.{
"status": "success",
"code": 200,
"balance": "5000.0000"
}Raise a complaint on a transaction
POST/api/corp/v1/complaints
Body parameters
| Name | Description |
|---|---|
txn_refrequired | Our order id of the transaction (the order_id / orderid we gave you). |
reasonrequired | What is wrong, up to 500 characters. |
confirm_relaunchoptional | Send 1 to raise a NEW complaint on a transaction whose earlier complaint was already decided. |
Notes
Only a successful transaction can be disputed. Answers 201 with your complaint_ref.
409 already_open — a complaint on this transaction is still open; its complaint_ref comes back in the reply so you can follow it.
422 prior_resolved — an earlier complaint on this transaction was decided. The reply names it (prior_complaint_ref); send the request again with confirm_relaunch=1 if you really want a new one.
404 not_found — no such transaction on your account.
When the complaint is cleared we send the transaction's status to your callback URL again, and a complaint callback to your complaint callback URL if you set one (see Complaint callbacks).
curl "https://apipe.in/api/corp/v1/complaints" \
-X POST \
-H "X-Api-Token: <your-token>" \
-H "Content-Type: application/json" \
-d '{
"txn_ref": "<txn_ref>",
"reason": "<reason>"
}'<…> with your own value. Only the required fields are shown.{
"ok": true,
"complaint_ref": "CP261001103000A1B2C3D4E5F6"
}Status of one complaint
GET/api/corp/v1/complaints/{ref}
Notes
Read outcome: OPEN (being checked), RESOLVED (checked — the transaction stands, no money moves) or REFUNDED (the transaction failed and the money is back in your wallet; refund_amount says how much).
status is our internal state (open, resolved_success, resolved_failed) and is kept for integrations already reading it. Prefer outcome.
curl "https://apipe.in/api/corp/v1/complaints/<ref>" \
-H "X-Api-Token: <your-token>"<…> with your own value.{
"ok": true,
"complaint": {
"complaint_ref": "CP261001103000A1B2C3D4E5F6",
"txn_ref": "R2610011030…",
"status": "resolved_failed",
"outcome": "REFUNDED",
"reason": "Recharge not received",
"created_at": "2026-10-01 10:30:00",
"resolved_at": "2026-10-01 12:05:41",
"refund_amount": "100.0000"
}
}Your complaints, newest first
GET/api/corp/v1/complaints
Query parameters
| Name | Description |
|---|---|
txn_refoptional | Only complaints on this transaction — how to find a complaint when you did not keep its ref. |
fromoptional | Raised on or after this date, YYYY-MM-DD. |
tooptional | Raised on or before this date, YYYY-MM-DD. |
limitoptional | Default 50, max 100. |
pageoptional | Default 1. |
Notes
Each item has the same fields as the single lookup. A malformed date, limit or page is refused with 422 rather than ignored.
curl "https://apipe.in/api/corp/v1/complaints" \
-H "X-Api-Token: <your-token>"<…> with your own value. Only the required fields are shown.{
"ok": true,
"page": 1,
"limit": 50,
"complaints": [
{
"complaint_ref": "CP261001103000A1B2C3D4E5F6",
"txn_ref": "R2610011030…",
"status": "open",
"outcome": "OPEN",
"reason": "Recharge not received",
"created_at": "2026-10-01 10:30:00",
"resolved_at": null,
"refund_amount": null
}
]
}