Bagian 8

Saldo dan jurnal

Tiga jenis saldo (Active, On Hold, Pending) dan jurnal debit/credit.

Saldo

GET/api/v1/balancesbalances:readRespons 200

Saldo 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 dashboardField APIArti
Active BalanceavailableDana siap digunakan.
On Hold BalancereservedDana yang ditahan untuk payout.
Pending BalancependingDana terverifikasi yang belum siap dicairkan.
TotaltotalJumlah 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 200

Filter: 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

AktivitasEntri jurnal
Payin Rp100.000 berhasil dan tersediaCREDIT available 100.000; DEBIT available 1.500 untuk fee.
Payout Rp40.000 diajukanDEBIT available 40.000; CREDIT reserved 40.000, satu group.
Payout suksesDEBIT reserved 40.000; tidak mengurangi available lagi.
Payout ditolak atau gagal pastiDEBIT reserved 40.000; CREDIT available 40.000.
Dana pending siap ditarikDEBIT 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.