Bagian 8
Saldo dan jurnal
Tiga jenis saldo (Active, On Hold, Pending) dan jurnal debit/credit.
Saldo
GET
/api/v1/balancesbalances:readRespons 200Saldo tersedia untuk satu merchant berdasarkan API key; currency v1 adalah 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"
}| Label dashboard | Field API | Arti |
|---|---|---|
| Active Balance | available | Dana siap digunakan. |
| On Hold Balance | reserved | Dana yang ditahan untuk payout. |
| Pending Balance | pending | Dana terverifikasi yang belum siap dicairkan. |
| Total | total | Jumlah ketiganya, bukan jenis saldo keempat. |
Nama field API dipertahankan agar konsisten dengan kontrak; tampilkan tiga label di atas pada dashboard Anda. Pembacaan saldo bukan reservasi; POST payout tetap memvalidasi saldo terkini.
Membaca jurnal
GET
/api/v1/journalsjournals:readRespons 200Filter: direction=CREDIT|DEBIT, bucket=PENDING|AVAILABLE|RESERVED, reference, from, to, cursor, limit. from/to memfilter posted_at. Urutan ascending sequence menjaga kronologi; gunakan cursor yang dikembalikan, jangan membentuk cursor sendiri.
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"
}Contoh entri jurnal
| Aktivitas | Entri jurnal |
|---|---|
| Payin Rp100.000 berhasil dan tersedia | CREDIT available 100.000; DEBIT available 1.500 untuk fee. |
| Payout Rp40.000 diajukan | DEBIT available 40.000; CREDIT reserved 40.000, satu group. |
| Payout sukses | DEBIT reserved 40.000; tidak mengurangi available lagi. |
| Payout ditolak atau gagal pasti | DEBIT reserved 40.000; CREDIT available 40.000. |
| Dana pending siap ditarik | DEBIT pending net; CREDIT available net. |
Aturan jurnal
CREDIT selalu menambah bucket dan DEBIT mengurangi bucket.
amount tetap positif. balance_before/balance_after adalah saldo bucket, bukan total. Perpindahan internal tidak dihitung sebagai pendapatan atau pengeluaran baru. Approval tanpa perubahan saldo tidak menghasilkan jurnal. Jurnal koreksi ditambahkan sebagai entri baru.