Response codes (RC)¶
The rc field in the JSON response describes the transaction result.
Response payload (JSON)¶
For POST /purchase and POST /status, the response body uses JSON with the following common fields. Concrete values (e.g. message, sn) depend on the product and scenario; see also PREPAID — Pulsa & Data, Game & Voucher Top-up, and ewallet purchase.
| Field | Type | Description |
|---|---|---|
code |
string | Product code that was processed |
msisdn |
string | Destination number / ID (echo from the request if applicable) |
request_id |
string | Echo of your request_id |
rc |
string | Result code — see the table below |
trxid |
number | Transaction ID on the platform side; may be 0 on early failure (verify before go-live) |
price |
number | Price charged for this transaction |
balance |
number | Your deposit balance after the operation (per API policy) |
sn |
string | Serial / biller reference / voucher; may be empty when pending or failed |
message |
string | Human-readable description (status, error) |
Example — success (rc = 00)¶
{
"code": "CTSEL5",
"msisdn": "08121231231",
"request_id": "PULSA-20250322-0001",
"rc": "00",
"trxid": 16413,
"price": 5400,
"balance": 341884600,
"sn": "02123123123123123",
"message": "SUKSES"
}
Example — pending (rc = 68)¶
{
"code": "CTSEL5",
"msisdn": "08121231231",
"request_id": "PULSA-20250322-0001",
"rc": "68",
"trxid": 16413,
"price": 5400,
"balance": 341890000,
"sn": "",
"message": "PENDING, Transaksi sedang diproses"
}
Example — failed (RC 23)¶
{
"code": "CTSEL5",
"msisdn": "08121231231",
"request_id": "99832748999",
"rc": "23",
"trxid": 16413,
"price": 5400,
"balance": 341890000,
"sn": "",
"message": "GAGAL, transaksi gagal di biller"
}
Notes¶
- Connections are held for a maximum of 120 seconds. Configure your HTTP client with a timeout of at least 130 seconds.
- If the transaction fails immediately before pending (insufficient balance, product closed, etc.), the response is returned right away.
- On timeout (RC
68), use the Check status API to check the final status. - Maximum 50 active sync connections per reseller. If exceeded, the server returns RC
68with an informative message.
RC code list¶
| RC | Description | Status |
|---|---|---|
00 |
SUCCESS | Success |
01 |
Invalid payload | Failed |
02 |
Invalid authorization | Failed |
03 |
Transaction timeout | Failed |
05 |
Product code not recognized | Failed |
06 |
Biller connection issue | Failed |
07 |
Customer number not found | Failed |
08 |
Internal error | Failed |
09 |
System under maintenance | Failed |
10 |
Invalid ref code | Failed |
11 |
Transaction not found | Failed |
12 |
Customer number expired | Failed |
13 |
Customer number blocked | Failed |
14 |
Biller issue | Failed |
17 |
Duplicate reversal transaction | Failed |
18 |
Insufficient deposit balance | Failed |
19 |
Product price not set | Failed |
21 |
Refund | Failed |
22 |
Product temporarily closed | Failed |
23 |
Biller failure | Failed |
24 |
Provider currently disrupted, please try again shortly | Failed |
25 |
Product not registered in reseller group | Failed |
35 |
System cut off in progress | Failed |
36 |
Account reached maximum provider limit | Failed |
68 |
Transaction pending, awaiting callback | Pending |
70 |
Biller failure | Failed |
71 |
Account suspended | Failed |
72 |
Daily transaction limit reached | Failed |
73 |
Product is not PPOB | Failed |
74 |
Product not configured | Failed |
75 |
Product currently disrupted | Failed |
76 |
Transaction not found | Failed |
77 |
Destination number not allowed | Failed |
78 |
This product can only be purchased using unit balance (mode=unit) | Failed |
79 |
[API v2] payment_ref expired — please inquiry again | Failed |
80 |
[API v2] Bill amount changed since inquiry — payment_ref invalidated, inquiry again (balance not deducted) | Failed |
81 |
[API v2] payment_ref already used by another payment (single-use) | Failed |
100 |
Bill already paid | Failed |
101 |
No bill | Failed |
102 |
Invalid number | Failed |
114 |
[PLN] The IDPEL you entered is incorrect, please check carefully. | Failed |
115 |
[PLN] The meter number you entered is incorrect, please check carefully. | Failed |
177 |
[PLN] Customer number blocked | Failed |
241 |
[PLN] Minimum purchase Rp. 20 thousand | Failed |
247 |
[PLN] Total KWH exceeds maximum limit | Failed |
268 |
[PLN] Transaction failed | Failed |
290 |
[PLN] Cutoff process in progress, please try again shortly | Failed |
293 |
[PLN] Transaction failed | Failed |