Part 8
Balances and journals
The three balance types (Active, On Hold, Pending) and the debit/credit journal.
Balances
GET
/api/v1/balancesbalances:readResponse 200Returns the balances for the single merchant identified by the API key; the v1 currency is IDR.
Response 200
{
"data": {
"currency": "IDR",
"pending": "0",
"available": "58500",
"reserved": "40000",
"total": "98500",
"as_of": "2026-10-15T05:10:00Z",
"version": 4
},
"request_id": "req_example_006"
}| Dashboard label | API field | Meaning |
|---|---|---|
| Active Balance | available | Funds ready to use. |
| On Hold Balance | reserved | Funds held for payouts. |
| Pending Balance | pending | Verified funds that are not yet ready to be paid out. |
| Total | total | The sum of the three, not a fourth balance type. |
The API field names are kept for contract consistency; show the three labels above on your dashboard. Reading a balance is not a reservation; a payout POST still validates the current balance.
Read the journal
GET
/api/v1/journalsjournals:readResponse 200Filters: direction=CREDIT|DEBIT, bucket=PENDING|AVAILABLE|RESERVED, reference, from, to, cursor, limit. from/to filter on posted_at. Ascending sequence order preserves chronology; use the cursor that is returned and never build your own.
Response 200
{
"data": [
{
"id": "jn_example_003",
"group_id": "jg_example_hold",
"sequence": 3,
"reference": "WD-0001",
"resource_type": "PAYOUT",
"resource_id": "pout_example_001",
"event_type": "PAYOUT_HOLD",
"bucket": "AVAILABLE",
"direction": "DEBIT",
"amount": "40000",
"currency": "IDR",
"balance_before": "98500",
"balance_after": "58500",
"posted_at": "2026-10-15T05:10:00Z",
"reversal_of": null
}
],
"pagination": { "next_cursor": "opaque_cursor", "has_more": true },
"request_id": "req_example_007"
}Journal entry examples
| Activity | Journal entries |
|---|---|
| A Rp100,000 payin succeeds and becomes available | CREDIT available 100,000; DEBIT available 1,500 for the fee. |
| A Rp40,000 payout is submitted | DEBIT available 40,000; CREDIT reserved 40,000, in one group. |
| Payout succeeds | DEBIT reserved 40,000; available is not reduced again. |
| Payout rejected or definitively failed | DEBIT reserved 40,000; CREDIT available 40,000. |
| Pending funds ready to withdraw | DEBIT pending net; CREDIT available net. |
Journal rules
CREDIT always increases a bucket and DEBIT decreases it.
amount always stays positive. balance_before/balance_after are the bucket balance, not the total. Internal movements are not counted as new income or expense. An approval with no balance change produces no journal entry. Correction entries are appended as new entries.