Lewati ke konten utama

API JSON (sign)

Same JSON endpoints but using the sign header. Works when partner use_signature = 1 or 2. Pre-request script computes the SHA1 url-safe base64 signature from env vars.

Price check (sign)

POST {base_url}/V1/api/price

Prepaid price check. No customer_id/ref_1 needed. Returns resale price + availability flags.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"product_code": "IS5"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success", "rc": "00",
"data": { "gangguan": "Tidak", "kosong": "Tidak", "harga": "5500", "kode": "IS5", "nama": "INDOSAT SMS 5.000" }
}

Categories (sign)

POST {base_url}/V1/api/product-categories

List all product categories.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success",
"data": [ { "id": 22, "code": "PULSA", "name": "PULSA", "type": "PRABAYAR" } ]
}

Products (sign)

POST {base_url}/V1/api/products

List products in the partner's price plan. All filters are optional: category (category code), category_ids (csv of ids), type (csv of product group names; "prabayar" is a special case that also includes VOUCHER FISIK), is_open, operator, q (search), sort (e.g. code|asc, price|desc), page, per_page. Send {"mmid":"..."} alone to get every active product in the partner's plan.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"type": "PRABAYAR",
"category": "PULSA"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success",
"data": {
"data": [ { "kode": "IS5", "nama": "INDOSAT SMS 5.000", "operator": "INDOSAT", "kategori": "PULSA", "gangguan": "Tidak", "kosong": "Tidak", "harga": "5500", "nominal": "" } ],
"links": { "first": null, "last": null, "prev": null, "next": null },
"meta": { "current_page": 1, "last_page": 3, "per_page": 50, "total": 120 }
}
}

Topup (prepaid) (sign)

POST {base_url}/V1/api/topup

Alias dari /payment for prepaid products (no prior inquiry). Pre-request script generates a fresh ref_1 so re-sends don't hit RC:94 duplicate.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"product_code": "IS5",
"customer_id": "{customer_id}",
"ref_1": "{ref_1}"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success", "rc": "00",
"data": { "ref_1": "TEST-1", "product_code": "IS5", "product_name": "INDOSAT SMS 5.000", "customer_id": "081234567890", "status": 1, "status_label": "success", "price": "5500", "total_price": "5500", "msg": "TRX IS5.081234567890 SUKSES, SN:ABC123" }
}

Inquiry (postpaid) (sign)

POST {base_url}/V1/api/inquiry

Postpaid bill inquiry. Expires after 15 minutes.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"product_code": "BPJSKS",
"customer_id": "0001234567890",
"ref_1": "{ref_1}"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success", "rc": "00",
"data": { "ref_1": "INQ-1", "ref_2": "I-20260421-A3B1F2", "product_code": "PLN", "product_name": "PLN PASCABAYAR", "customer_id": "546302215889", "status": 1, "status_label": "success", "price": "300000", "admin": "2750", "total_price": "302750", "msg": "INQ PLN.546302215889 SUKSES, DATA:Anto ...", "detail": { "no_pelanggan": "546302215889", "nama": "Anto", "bl_th": "APR26", "tagihan": "300000" } }
}

Payment (postpaid) (sign)

POST {base_url}/V1/api/payment

Execute the postpaid payment. Do not regenerate ref_1 between Inquiry and Payment.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"product_code": "BPJSKS",
"customer_id": "0001234567890",
"ref_1": "{ref_1}"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success", "rc": "00",
"data": { "ref_1": "INQ-1", "ref_2": "I-20260421-A3B1F2", "product_code": "PLN", "product_name": "PLN PASCABAYAR", "customer_id": "546302215889", "status": 1, "status_label": "success", "total_price": "302750", "msg": "BAYAR PLN.546302215889 SUKSES ..." }
}

Status (sign)

POST {base_url}/V1/api/status

Poll the transaction status for the current ref_1. Re-send until the server settles process → success or process → failed.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"ref_1": "{ref_1}"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success", "rc": "00",
"data": { "ref_1": "INQ-1", "product_code": "IS5", "status": 1, "status_label": "success", "msg": "..." }
}

History (by ref_1) (sign)

POST {base_url}/V1/api/history/{ref_1}

Partner-side history lookup keyed on the client-supplied ref_1.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}"
}

History (list) (sign)

POST {base_url}/V1/api/history

Filtered transaction history — body carries date (ISO, defaults to today), optional start_date/end_date, status (1=success, 11=failed, 2,3=pending), page, per_page (max 1000), plus pass-through filters (product_code, customer_id, trx_no_mitra, etc.). When page is omitted the response is a flat array; when present the envelope is {data: {data, links, meta}}.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"date": "{date}",
"page": 1,
"per_page": 50
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success",
"data": [ { "ref_1": "TEST-1", "product_code": "IS5", "customer_id": "081234567890", "status_label": "success", "total_price": "5500", "created_at": "2026-04-21 11:00:00" } ]
}

Balance (sign)

POST {base_url}/V1/api/balance

Aggregate deposit balance (single saldo integer across PRABAYAR + PASCABAYAR wallets combined). Plain success envelope, no rc.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}"
}

Contoh respons:

{ "status": "success", "code": 200, "message": "success", "data": { "saldo": 1000000 } }

Mutations (sign)

POST {base_url}/V1/api/mutations

Deposit mutation history (debits + credits). Date range is ISO YYYY-MM-DD.

Header:

HeaderNilai
sign{sign}

Body (JSON):

{
"mmid": "{mmid}",
"start_date": "2026-04-01",
"end_date": "2026-04-30"
}

Contoh respons:

{
"status": "success", "code": 200, "message": "success",
"data": [ { "debit": 0, "credit": 5500, "balance": 994500, "notes": "Trx IS5 ...", "trx_no": "T-20260421-LKXQY4", "created_at": "2026-04-21 11:00:00" } ]
}